On-chain royalties for NFTs are un-enforceable

I recently made a post on Twitter, clumsily arguing against on-chain royalties.

What I meant instead was this:

Naturally, when a Twitter mob forms and anonimity rules, bullies find enjoyment in sharpening everyone's pitchforks, so it was difficult to get the message across.

The "artists" in the Twitter mob repeatedly called on an argument of seniority (which I do not recognize because them being artists has zero factor in the discussion), so I feel like I must defend my take here, lest it continue to be taken the wrong way.

Pretending royalties are enforceable on-chain is dumb, and royalties are a social problem

That's my whole message.

I am in no way saying royalties are bad, undeserved, or should be abolished. I am not arguing against passive income for artists or creators. I am not trying to "enrich the elite" or any other such conspiracy.

It's simple.

You cannot code a royalty into an NFT contract, because by doing that you annihilate the ability for people to gift, barter, and bundle NFTs, let alone take loans with them, tokenize them on something like NFTX, or move them to/from hot/cold storage. There is no way for a platform to recognize the difference between an OTC trade and a cold storage wallet move, and as such, enforcing a royalty by slapping on relative fees is impossible, and slapping on absolute fees (minimums) is shortsighted and clumsy.

"But {insert favorite platform here} does it!"

Right, and that's my whole point. UI / UX is a social matter. The fact that a user interface / app can add royalty is a userland issue, and is trivial to circumvent. It is up to that app/UI to be SO GOOD that people WANT to use it instead of alternatives that fork the commission / royalty out of the mix. It is a social problem to convince people to respect the royalty and want to pay it, much like the tipping rule in USA.

Sure, there are standards like EIP-2981 which allow NFT creators to expand on the information stored alongside their NFT by specifying the royalty amount, however, implementing this royalty and actually charging it is voluntary, as documented by the EIP itself:

Does it help? Certainly. It establishes a standard that ALL marketplaces can easily respect if they choose to, making cross-platform royalties easier to implement. But it does not enforce and someone can very easily build a zero-commission marketplace.

"But someone might do it one day!"

It is pointless to deal with hypotheticals. If someone figures out on-chain royalties in a proper, non-nerfed way, that are also compatible with the most advanced NFT system in the world, then I will happily shout from the rooftops that I was wrong and implement it into Singular.

Until then: royalties are not enforceable on chain. It is dishonest and unfair to state otherwise without being clear about the possibility to circumvent them.

What can RMRK do?

At RMRK, we'll also be adding royalties into Singular. We will be following the EIP2981 standard as closely as we can, but with RMRK NFTs being several orders of magnitude more advanced than anything available on other platforms, the problem is much more complex.

We've discussed issuer-owner markets in the past, but with RMRK 2.0, the problem becomes exponential. Specifically: how do you treat the royalty of an item that is owned by another item?


  • a Kanaria bird has a sword item.
  • the bird has a royalty of 10%
  • the sword has a royalty of 20%
  • the bird is sold while the sword is equipped / contained within it
  • what is charged on top of which amount and in which ratio?

Several approaches are possible, none ideal:

  1. As the bird has 10%, take 10% of sale price, and send 20% of that to the Sword's minter. Problem: what happens when the total of all child items exceeds 100%?
  2. Disallow selling of nested items, forcing them all to be unequipped and placed into the root account. Problem: clumsy, introduces many extra transactions, disables some functionality and appearance while an item is for sale, potentially affecting its sale value.
  3. Specify the price of each item separately, and a purchaser pays for one total amount but this is then distributed to these child items. Problem: how do you price individual items, and what if a buyer disagrees with the pricing layout?

These are unsolved problems worth thinking about, and extremely difficulty to solve in a fair way.

Post author

Founder at RMRK.app

A blog.