Off-Chain Assets

Off-chain assets, as the name implies, lives on an off-chain database and ownership is managed by the creator.

Identifier

Off-chain assets need to be globally unique and identifiable just like on-chain assets. To achieve this for Futureverse assets, we have built an off-chain ownership repository to register any off-chain assets against the Asset Register.

Property
Description
Example

Creator ID

Randomly generated UUID for the creator. This will be provided to you and only you will be able access it.

40877d72-9957-4de7-af77-1ee9f54a529e

Creator Collection ID

A creatorโ€™s collection ID. This should be unique for each creator. It can be any string.

12 | pb_1232124| bedde205-5af2-423b-9092-088c8951a2ea

Token ID (optional)

The token ID is for uniquely identifying NFT assets in a collection. It will be empty if it is SFT (ERC1155 equivalent). This can be any string (like a UUID), however, it is best practice to stick to a number.

4637 | 61d21cf3-6e0d-4b9d-a2c8-55583eb81a84

Asset ID

This is the combination of creatorAddress,creatorCollectionId & tokenId. SFT assets will not have a Token ID.

40877d72-9957-4de7-af77-1ee9f54a529e:12:4637

DID

Since ownership resolution needs to be globally unique we can use the did:fv-asset DID method directly with the already globally unique Asset ID.

Example

did:fv-asset:off-chain:40877d72-9957-4de7-af77-1ee9f54a529e:12:4637


Asset types

Just like on-chain assets which are classified as ERC721 (NFT) and ERC1155 (equivalent to an SFT), off-chain assets can be defined in the same way.

NFT

A unique asset just like ERC721.

Defined by

off-chain:{creatorId}:{creatorCollectionId}:{tokenId}

For example: off-chain:40877d72-9957-4de7-af77-1ee9f54a529e:12:4637

SFT

A collection that can store an infinite amount of assets defined by the same asset ID.

Defined by

off-chain:{creatorId}:{creatorCollectionId}

For example: off-chain:40877d72-9957-4de7-af77-1ee9f54a529e:12


Register Off-Chain Asset ๐Ÿ”’

Unlike creating assets on the chain, off-chain assets must be registered with the Asset Register before they can then be registered with the schema.

Assuming the schema for the off-chain asset is already created, the following illustrates the process of fully registering a new off-chain asset with the Asset Register to generate an asset tree.

Register Asset - GraphQL Mutation

mutation RegisterOffChainAsset($input: RegisterOffChainAssetInput!) {
  registerOffChainAsset(input: $input) {
    ... on RegisterOffChainAssetSuccess {
      offChainAsset {
        assetId
        creator
        tokenId
        creatorCollectionId
        type
      }
    }
    ... on RegisterOffChainAssetFailure {
      errors {
        message
        extensions {
          code
        }
      }
    }
  }
}
{
  "input": {
    "creatorCollectionId": "20001",
    "creatorId": "eb117567-e455-4abd-b8e1-a7e451b96b23",
    "tokenId": "1"
  }
}

ยฉ 2023 -> โ™พ๏ธ