In collaboration with Foundation, Nifty Gateway, OpenSea, Rarible and SuperRare, Manifold is pleased to launch royaltyregistry.eth and its companion site, royaltyregistry.xyz, an on chain contract making it easy for marketplaces to adhere to appropriate contract royalties and making it possible for contracts that did not originally support on-chain royalties to easily add them.
How do on-chain royalties work?
Whenever an NFT sale occurs in a marketplace, it is up to the marketplace to hold back part of the proceeds of the sale to distribute to the original content creator. But how does the marketplace know how much to hold back and where to send the royalties to? That’s where on-chain royalties come in.
On-chain royalties are royalty configurations that are baked into the original token contract. They provide a way for marketplaces to ask those contracts what the appropriate royalty amount is and who the royalty recipient should be for any token in that contract.
There are a number of token specs out there, including EIP2981, SuperRare, Rarible and Manifold. While they all do similar things (i.e. provide a royalty amount and recipient address per token), they have slightly different implementations. This makes it difficult for marketplaces to adhere to all the royalty specs, and is problematic for older tokens to add on-chain royalty configurations (i.e. tokens that may have launched on OpenSea with royalties set up off-chain).
Royalty Engine Lookup
Our Royalty Engine is a contract that provides an easy way for any individual or marketplace to look up royalties for any given token contract. If a token contract has set an override in the Royalty Registry, it will use that information. Otherwise, it will attempt to use royalty information from supported specs including EIP2981, Rarible, Manifold, SuperRare, and Zora.
Additionally, we've developed an easy to use On-Chain Royalty Lookup UI for searching by contract and token ID to read out royalty spec, payable addresses and on-chain royalty percentages.
Royalty Registry Configuration
The Royalty Registry is an on-chain contract (royaltyregistry.eth) that is responsible for storing royalty configuration overrides. To set an override, the original contract owner will need to deploy an instance of your royalty override contract, set the appropriate royalty values, then call the Royalty Registry’s setRoyaltyLookupAddress function. A reference EIP2981 override implementation can be found here.
To make this even easier we've built a simple Web UI to set default token contract and per token royalties. Please note If your token contract already supports EIP2981 or is a Manifold, Rarible, SuperRare or Zora contract, you’re all set. Be sure to use the Royalty Engine Lookup tool for your token contract to double check this and we'll let you know the current royalties and if any action on your part is required.
If royalty configuration override is needed, simply enter your token contract address and follow the UI to create or configure contract overrides including the default token contract royalty and any desired per token royalties by token ID. Remember, these actions are on-chain, so any instance of deploying a new contract override or saving royalty changes will require a gas fee on the Ethereum network.
Developers and Marketplaces
Manifold.xyz built the Royalty Registry in collaboration with Foundation, Nifty Gateway, OpenSea, Rarible and SuperRare. We all believe that it’s important to ensure creators get their fair share of every sale, and encourage others to build with the same in mind. All Royalty Registry code is open source and free for anyone to explore and contribute:
Solidity Contracts: https://github.com/manifoldxyz/royalty-registry-solidity
Client Website: https://github.com/manifoldxyz/royalty-registry-client
Developers interested in using the Royalty Engine and Royalty Registry directly for royalty lookups or engine development can find Rinkeby, Ropsten, and Mainnet addresses here.