How are royalties implemented?
The main on-chain implementation of royalties is ERC2981. ERC2981 is a standard that advises on a particular amount royaltyAmount
and royalty receiver address receiver
given a tokenId
and overall salePrice
. (https://eips.ethereum.org/EIPS/eip-2981) For example, to say that royalties are 1% would be to input 10000
in salePrice
and get 100
as the royaltyAmount
Other royalties numbers can be off-chain by collection owners on third party websites such as Opensea or Looksrare, but can only be gotten periodically and thus done on a error-prone best effort basis.
The advisory nature of ERC2981 makes it an incomplete solution. As the most widely adopted royalty standard at the moment, we integrate with it in a nuanced way: We use the derived royalty percentage as an override, while in order to prevent pool creators from siphoning off royalties from NFT collections maliciously, we allow royaltyRecipient to be set as a fallback, a place to be sent if the receiver
is not set to any value, as per ERC2981
Last updated