🌎
Illust-Studio
  • 🔮 Welcome
  • Getting Started
    • 🧑‍🏫 Simple Tutorials
      • 🔥 AR -Studio Quickstart
      • 🫟 Place an AR artifact in the world
      • 🕵 Drop a "secret message" w/ an exclusive hyperlink to the world
      • 👹 Support your team through AR face paint
      • 🎶 Create an AR music visualizer
      • 🏴‍☠️ Launch a hologram for an event
  • Core Studio Features & Functions
    • 🎨 AR Studio Editor
      • 🚦 Getting Started (Studio Key Features)
      • 🖱️ General Data
      • ☀️ Lighting & Shadows
      • 💨 Animations
      • 🔊 Audio
      • 👉 Interactions
    • 🤳 Placements
      • 🌎 Geofencing (World Tracking)
      • 😎 Face Tracking
      • 🎯 Image Targets
  • Augmented Reality Viewer
    • 📸 Augmented Reality Viewer(s)
  • Links + Social
    • AR Studio Login
    • @illustspace
    • @illust.space
  • Resources
    • 🚪 Login, Account, and Subscriptions
    • Smart Contract Audits
      • Geospatial Registry Litepaper
        • Abstract
        • Cross-Chain Ownership
        • Hyperstructure & Geohashes
        • Scene Config & AssetIDs
        • Off-Chain Data Usage
        • Time
        • GSR Smart Contract ABI
    • Legal
      • Privacy Policy
      • Terms of Service
      • User Agreement
Powered by GitBook
On this page
  1. Resources
  2. Smart Contract Audits
  3. Geospatial Registry Litepaper

GSR Smart Contract ABI

/** Place a piece according to a publisher. */
function place(
    EncodedAssetId calldata encodedAssetId,
    Geohash calldata geohash,
    TimeRange calldata timeRange
)

/** Place a piece according to a publisher, and set the scene URI, in one transaction. */
function placeWithScene(
    EncodedAssetId calldata encodedAssetId,
    Geohash calldata geohash,
    TimeRange calldata timeRange,
    string calldata sceneUri
)

/** Place an asset inside another asset, making it available for use in scenes. */
function placeInside(
    EncodedAssetId calldata encodedAssetId,
    bytes32 parentAssetId,
    TimeRange calldata timeRange
)

/** Remove an asset from the GSR */
function remove(EncodedAssetId calldata encodedAssetId)
    /// Just update a sceneUri without changing the placement.
    function updateSceneUri(
    EncodedAssetId calldata encodedAssetId,
    string memory sceneUri
)

/** Get the current location of an asset. */
function placeOf(bytes32 assetId, address publisher)
    external
    view
    returns (uint64 geohash, uint8 bitPrecision)
    
/** Get the Scene URI metadata of a published asset. */
function sceneURI(bytes32 assetId, address publisher)
    external
    view
    returns (string memory)
    
/// Check if an asset is within a bounding box using a geohash prefix.
function isWithin(
    Geohash calldata boundingGeohash,
    bytes32 assetId,
    address publisher
) external view returns (bool)

/// Check if an asset is currently placed within another asset.against
function isInsideAsset(
    bytes32 assetId,
    bytes32 parentAssetId,
    address publisher
) external view returns (bool)

/// The GsrPlacement event for off-chain querying
event GsrPlacement(
    // Indexed fields
    bytes32 indexed assetId,
    bytes32 indexed parentAssetId,
    bytes32 indexed collectionIdHash,
    // AssetId Details
    EncodedAssetId fullAssetId,
    // Placement data
    address publisher,
    bool published,
    Geohash geohash,
    string sceneUri,
    uint256 placedAt,
    TimeRange timeRange
);

The full specification for the external functions to place and query assets in the GSR:]

/** Place a piece according to a publisher. */
function place(
EncodedAssetId calldata encodedAssetId,
Geohash calldata geohash,
TimeRange calldata timeRange
)
/** Place a piece according to a publisher, and set the scene URI, in one transaction. */
function placeWithScene(
EncodedAssetId calldata encodedAssetId,
Geohash calldata geohash,
TimeRange calldata timeRange,
string calldata sceneUri
)
/** Place an asset inside another asset, making it available for use in scenes. */
function placeInside(
EncodedAssetId calldata encodedAssetId,
bytes32 parentAssetId,
TimeRange calldata timeRange
)
/** Remove an asset from the GSR */
function remove(EncodedAssetId calldata encodedAssetId)
/// Just update a sceneUri without changing the placement.
function updateSceneUri(
EncodedAssetId calldata encodedAssetId,
string memory sceneUri
)
/** Get the current location of an asset. */
function placeOf(bytes32 assetId, address publisher)
external
view
returns (uint64 geohash, uint8 bitPrecision)
/** Get the Scene URI metadata of a published asset. */
function sceneURI(bytes32 assetId, address publisher)
external
view
returns (string memory)
/// Check if an asset is within a bounding box using a geohash prefix.
function isWithin(
Geohash calldata boundingGeohash,
bytes32 assetId,
address publisher
) external view returns (bool)
/// Check if an asset is currently placed within another asset.against
function isInsideAsset(
bytes32 assetId,
bytes32 parentAssetId,
address publisher
) external view returns (bool)
The GsrPlacement event for off-chain querying
event GsrPlacement(
// Indexed fields
bytes32 indexed assetId,
bytes32 indexed parentAssetId,
bytes32 indexed collectionIdHash,
// AssetId Details
EncodedAssetId fullAssetId,
// Placement data
address publisher,
bool published,
Geohash geohash,
string sceneUri,
uint256 placedAt,
TimeRange timeRange
);
PreviousTimeNextLegal

Last updated 8 days ago