Enforcing on-chain NFT royalties

September 7th, 2022

Some NFT marketplaces allow you to skip royalties on NFT secondary market sales. Some people are furious, others are quite happy with avoiding paying them. But how is it possible?

Let's see why it is difficult to enforce royalties on-chain:

This post will talk about technical topics in a non-technical way. So non-tech people, bear with me! I will take the example of Ethereum, but it can also apply to other blockchains.

There is a standard that defines NFTs on Ethereum. Most projects use it in their Smart Contract. It defines a set of behaviors that make it easy for marketplaces to interact.

This Smart Contract is what defines a specific NFT. It has common behaviors and can have a set of custom rules specific to your business case, life for example: "Minting an NFT costs 0.1 ETH". "Who possesses which NFT" is information stored in the contract as a table that tells which address possesses which token ID.

| Address | Token ID | |----------|----------| | Address1 | 3 | | Address2 | 42 | | Address3 | 110 |

The first thing to know is that it has a transfer function. All NFTs have this behavior (it is defined in the standard). This function can be called by either the owner of the token ("I give my NFT token to this address") or an operator ("I give the right to transfer my NFT to a marketplace" and then "The marketplace transfers the token to this address"). The NFT contract only contains information about the tokens and how to transfer them!

The second thing to know is that there is a standard for royalties on Ethereum. This standard just gives royalty information on the contract to whoever asks. It goes like this: "A marketplace wants to know if they must give royalties (what amount and to whom) so they ask for this information to the contract. Then, later, they include it in their sale process."

It is at the marketplace's discretion to decide on what condition they want to transfer the token. So they can skip royalties if they decide to! That's how these marketplaces do to avoid royalties payments.

Even if it was not possible to avoid royalties payments this way, there is always the option to transfer an NFT ownership to a Smart Contract and then transfer ownership of the Smart Contract to someone else. Think of it like this: "I put something in a box and sell you the box instead."

So what can we do? There are ways to make the lack of royalty payments visible so that one can decide for themself if they want to buy an NFT with missing royalty payments.

The Bitcoin blockchain is immutable and every transaction that ever occurred is on it. When a coin has been exposed as involved in illegal activities, it is called a "tainted coin." NFTs transactions follow the same rule. It is easy to point out transactions that don't include royalties. Maybe displaying them to a buyer would be a solution. People would favor buying an NFT with full royalty payments in its history, making the price of tainted NFTs drop, thus incentivizing speculators to pay their royalties.

Technical info I kept out of the article:

  • The NFT standard:
  • The royalty standard:
  • Tainted coins: