Main concepts
ODC Overview

ODC: On-chain Data Container with Unique Features

An ODC is an advanced non-fungible token that follows the ERC-7208 (opens in a new tab) standard, incorporating all the features of ERC721, such as:

  • Unique token ID for each ODC → ouid
  • Ownership tracking
  • Secure and permissioned token transfers
  • Metadata management

Incorporating distinctive attributes beyond the conventional ERC721 functionality, ODCs uniquely distinguish themselves as on-chain mutable storage entities, seamlessly engaging with both on-chain and off-chain data.

Properties and Categories

ODCs have a unique feature called Properties. Properties are bytes32 keys attached to ODC IDs, representing specific use cases. For example, a Property named 'NxraUSDT' (e.g. keccak256("NxraUSDT")) could represent wrapped assets in the ODC. Any ODC can store arbitrary amounts of information in the form of Properties which are managed by contracts called Property Managers.

A Category constitutes a collection of Properties and includes the allowSplit boolean parameter that indicates its enablement of being split (i.e whether Properties of the Category can be detached from one ODC and attached to another). To enable comprehensive access to all Properties within a given Category, a Property Manager must be duly configured as the Category's manager.

Additional Features: Merging and Splitting

ODCs also encompass additional features, such as merging and splitting. These actions occur directly on the Categories, which should be registered as splittable (i.e. allowSplit == true) during their creation.


Merging involves the process of transferring all the stored related Properties (alongside their associated data) of specified Categories from an origin ODC to a target ODC token. In cases where the same Property exists in both ODCs, Property Managers can handle and appropriately merge the data by implementing the onTransferConflict function.


Splitting involves the process of dividing a single ODC into two separate ODCs, wherein specified Categories' Properties (alongside their associated data) are removed from the original ODC and added to the newly created second ODC. This feature enables more granular control and management of ODCs and their respective Properties.

Claiming and Active ODC Limits

To mitigate the risk of overflow during minting and excessive transaction fees during transfer operations, it is imperative for users to claim ODCs. Unclaimed (inactive) ODCs are unavailable for certain operations, while Property Managers exclusively interact with claimed ODCs. Moreover, the system implements limits on both the number of claimed (active) ODCs per user and the number of Properties a Category can contain. These limitations ensure the manageable and efficient operation of the ODC ecosystem, effectively preventing potential abuse or misuse of the protocol.