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.
Those interested can use the deployed Royalty Engine at engine-v1.royaltyregistry.eth or can fork the engine for inclusion in your own marketplace.
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.
Be sure to follow us on Twitter @manifoldxyz and join our community on Discord for updates and more projects like this.
Hi there, thank you very much for this. I was wondering if you can assign multiple recipients for royalty for each sale? I belong in a nft community that dev promised to share 50% of royalty to the community wallet. Currently wait for dev to transfer manually each time opensea pays out royalty. Is there a more secure way for dev deploy a smart contract to automate this process? Thanks in advance