LogoLogo
AR APPGithub
  • What is Illust?
  • Getting Started
    • Quick Start
  • Illust Overview
    • Why Use Illust?
      • Core Benefits
      • Case Studies
      • Why is Illust Different?
    • Illust AR Application
      • Capabilities Deck
      • Reality Channels
      • Proof of Presence (PoP)
      • Geofencing & the GeoSpatial Registry
      • Smart Contracts
    • Developer Docs (Coming Soon)
    • Roadmap
    • Team & Stakeholders
      • US Operations
      • Advisory Team
      • Investors and Grants
  • Papers, Research, and Thought Leadership
    • GeoSpatial Registry Litepaper
      • Abstract
      • Cross-Chain Ownership
      • Hyperstructure & Geohashes
      • Scene Config & AssetIDs
      • Off-Chain Data Usage
      • Time
      • GSR Smart Contract ABI
  • Resources
    • Contact
    • Audits
    • Legal
      • Privacy Policy
      • Terms of Service
      • User Agreement
    • Tutorials
      • How to Configure a PoP Token
      • Using Magic to Generate a PoP
      • App Permissions
        • Turning on Location (iOS)
        • Turning on Camera (iOS)
        • Turning on Motion (iOS)
  • Links
    • AR App
    • Twitter
    • Github
    • Discord
    • Blog
    • Instagram
Powered by GitBook
On this page
  1. Papers, Research, and Thought Leadership
  2. GeoSpatial Registry Litepaper

GSR Smart Contract ABI

Updated 2022-09-12

/** 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
);

PreviousTimeNextContact

Last updated 2 years ago