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.
flowchart TD
A[Experience Backend] --> B{Is the Off-Chain Asset registered with AR}
B -->|Yes| C{Is the Off-Chain Asset linked to a schema?}
B ---->|No| E[Register Asset]
C --> |Yes| F[Registration Complete]
C --> |No| D[Register Off-Chain Asset with schema]
E --> C
D --> FRegister 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"
}
}