Skip to main content
Skip the ReadGet a quick 1-minute overview of IP Assets here.
IP Assets are the foundational programmable IP metadata on the DATA Foundation. Each IP Asset is an on-chain ERC-721 NFT (representing an IP). If your IP is off-chain, you would simply mint an ERC-721 NFT to represent that IP first, and then register it as an IP Asset. When an IP Asset is created, an associated โš™๏ธ IP Account is deployed, which is a modified ERC-6551 (Token Bound Account) implementation. It is a separate contract bound to the IP Asset for controlling permissions around interactions with the DATA Foundationโ€™s modules or storing the IPโ€™s associated data.

Registering an IP Asset

An IP Asset is created by registering an ERC-721 NFT into the DATA Foundationโ€™s global IP Asset Registry. If youโ€™d like to jump into code examples/tutorials, please see How to Register IP on the DATA Foundation.

NFT vs. IP Metadata

On the DATA Foundation, your IP is an NFT that gets registered on the protocol as an IP Asset. However, both NFTs and IP Assets have their own metadata you can set, so whatโ€™s the difference?
StandardWhat is it?
NFTOpensea ERC721 StandardThings like name, description, image, attributes, animation_url, etc
IP๐Ÿ“ IPA Metadata StandardMore specific to the DATA Foundation, this includes necessary information about the underlying content for infringement checks, authors of the work, etc
All other metadata, such as the ownership, legal, and economic details of an IP Asset are handled by our protocol directly. For example, the protocol stores data associated with parent-child relationships through the ๐Ÿ“œ Licensing Module, and the legal constraints/permissions of an IP Asset with the ๐Ÿ’Š Programmable IP License (PIL).

Adding NFT & IP Metadata to IP Asset

SDK Completed Code Example

Jump to the code and see a completed code example of adding NFT & IP metadata to an IP Asset

SDK Explanation

Learn how to add metadata to your IP Asset with a step-by-step explanation.
In practice, whether you are using the SDK or our smart contract directly, our protocol asks you to provide 4 different parameters:
  • View the WorkflowStructs.sol contract here.
WorkflowStructs.sol
/// @notice Struct for metadata for NFT minting and IP registration.
/// @dev Leave the nftMetadataURI empty if not minting an NFT.
/// @param ipMetadataURI The URI of the metadata for the IP.
/// @param ipMetadataHash The hash of the metadata for the IP.
/// @param nftMetadataURI The URI of the metadata for the NFT.
/// @param nftMetadataHash The hash of the metadata for the IP NFT.
struct IPMetadata {
  string ipMetadataURI;
  bytes32 ipMetadataHash;
  string nftMetadataURI;
  bytes32 nftMetadataHash;
}
  • ipMetadataURI - a URI pointing to a JSON object that follows the ๐Ÿ“ IPA Metadata Standard
  • ipMetadataHash - hash of the ipMetadataURI JSON object
  • nftMetadataURI - a URI pointing to a JSON object that follows the Opensea ERC721 Standard
  • nftMetadataHash - hash of the nftMetadataURI JSON object