Skip the Read

Get a quick 2-minute overview of IP Assets here.

IP Assets are the foundational programmable IP metadata on Story Protocol. Each IP Asset is an on-chain ERC-721 NFT (representing an IP). Yes, that means your Azuki or Pudgy Penguin is already eligible for registration into our protocol, and don't worry, there is no wrapping involved.

An IP Asset also has an associated IP Account, which is a modified ERC-6551 (Token Bound Account) implementation. It is a separate contract bound to the original IP for controlling permissions around interactions with Story Protocol's modules. You can think of the IPA as the record keeper for the IP, and the IP Account as its permissions manager.This transforms a new or existing NFT like Azuki into a versatile and interactive IP entity.

Only once an ERC-721 is registered into Story Protocol's global IP Asset registry is a corresponding IP record generated for that original IP. We refer to this globally unique record as the IP Asset, and the original ERC-721 as the IP.

IP Account


Skip the Read

Get a quick 2-minute overview of IP Accounts here.

This transformation is achieved through the use of ERC-6551's Token Bound Accounts, which assign every NFT a Story Protocol Bound Account (SPBA), known in implementation as an IP Account. They are created when an IP Asset is registered on Story Protocol and are assigned a unique ID. This ID is the address of the IP Account that is bound to the IP Asset.

These accounts, essentially smart contracts, are equipped to store comprehensive IP-related data, including metadata and ownership details of associated assets such as the License Tokens or Royalty Tokens that are created from the IP.

If the underlying NFT is transferred, the new owner is also automatically the owner of the associated IP Asset & IP Account.

IP Account not only stores IP-related data but also facilitates the utilization of this data by various modules. These modules interact with and contribute to the IP Account, creating and storing data. For example, licensing, revenue/royalty sharing, remixing, disputing an IP, and other modules are made possible due to the IP Account's programmability.

One of the innovative features of IP Account is its approach to data sharing and standardization. It establishes a standardized method for storing and sharing data among modules based on namespaces. Each module is assigned its own namespace within the IP Account, wherein it has the autonomy to write data. Each module is granted the ability to freely read data from the namespaces of other modules.

Lastly, a key feature of IP Account is the generic execute() function, which allows calling arbitrary modules within Story Protocol via encoded bytes data (thus extensible for future modules). Additionally, there is executeWithSig() function that enables users to sign transactions and have others execute on their behalf for seamless UX.