1 of 22

EIP-2981: NFT Royalty Standard

Blaine Malone

31th August 2021

2 of 22

Introduction

Blaine Malone

Software Engineer, Research @ Gemini��Prev. ConsenSys/Trustology��

Opinions expressed are my own and do not represent those of my employers

3 of 22

Acknowledgments

Contributors: �Zach Burks, James Morgan (@jamesmorgan), Blaine Malone (@blmalone), James Seibel (@seibelj)��Other notable contributors: �@cliffhall, @dievardump, @lenifoti, @wwhchung

Et al.

4 of 22

EIP-2981 Timeline

Status: DRAFT�22th Sep 2020

Status: FINAL�24th July 2021

Status: REVIEW�18th Jun 2021

Status: DRAFT�21st Feb 2021

Status: LAST CALL�8th Jul 2021

450+

Github discussions

60+ commits��15+ active participants

5 of 22

Contents

  1. What are Royalties?
  2. Ecosystem Participants
  3. The State of the Nation
  4. Can we enforce royalties?
  5. EIP-2981
  6. Implementation
  7. Rationale
  8. Looking forward

6 of 22

What are Royalties?

“A royalty is a payment made by one party to another that owns a particular asset, for the right to ongoing use of that asset. Royalties are typically agreed upon as a percentage of gross or net revenues derived from the use of an asset or a fixed price per unit sold of an item of such, but there are also other modes and metrics of compensation. A royalty interest is the right to collect a stream of future royalty payments.” - https://en.wikipedia.org/wiki/Royalty_payment

7 of 22

What are Royalties?

Payments to rightful recipients (creators) in perpetuity by a predefined set of rules.

8 of 22

Ecosystem Participants

Creator

Artist has an idea for an NFT and launches an ERC721/ERC1155 contract

Marketplace

Marketplace lists the NFT with a sale price, sets royalties

Buyer

Buyer interacts with marketplace and purchases NFT, royalties sent to ‘Creator’.

This is good, but....

9 of 22

The State of the Nation

Marketplace

Siloed

Royalty Information is not shared���What constitutes a sale of an NFT?

  1. A transfer of funds from the buyer to the seller
  2. A transfer of the NFT from the seller to the buyer�

Facilitated by the marketplace.

10 of 22

Can’t we enforce royalties?

Marketplace

With the current architecture, we’ve got two problems:

  1. The smart contract never touches the funds transferred

  • Sales are indistinguishable from transfers

11 of 22

Continued....

Marketplace

At first glance, three approaches seem attractive:

  1. Force every smart contract transfer to also consume the funds for the sale
  2. Lock down the transfer and force the owner to check with trusted party before any transfer
  3. Revocation of NFT if royalties aren’t paid

Contract is unaware of sale price, so easily bypassed

Heavyweight, Unfriendly for collector

Unfriendly for collector

Marketplaces want to implement a royalties framework.

The issue isn’t enforcement, it is adoption of cross-platform compatibility.

12 of 22

EIP-2981

Marketplace

Buyer

A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal support for royalty payments across all NFT marketplaces and ecosystem participants.

13 of 22

Implementation

Marketplace

Buyer

14 of 22

...

Marketplace

Buyer

Each ‘tokenId’ has their own recipient and value

Targeting 2 decimal places so expecting ‘value’ to be at most

10,000 = 100%

We know that,� 15% of 45 Ether = 6.75��But Solidity computes: � (45 * 15) / 100 = 6 Ether�

So:

salePriceWei = 45 * 10^18;�(salePriceWei * 1,500) / 10,000 = 6.75^18 wei�6.75^18 wei == 6.75 Ether

15 of 22

...

Assume only ever invoked externally

No state modification within function

Temporary storage, only during the runtime.

100% or 10,000 basis points

send ‘_salePrice’ in the smallest denomination of the currency tendered.

16 of 22

...

17 of 22

Rationale

Marketplace

Buyer

Simple royalty payments to a single address

18 of 22

...

On-chain royalty payment percentage calculation

19 of 22

...

Unit-less royalty payment across all marketplaces, both on-chain and off-chain

20 of 22

...

Marketplace

Buyer

Universal Royalty Payments

21 of 22

Looking forward 👀

Marketplace

Buyer

  • A Community owned and governed “Royalty Registry” - (Manifold’s Proposal, easy and consistent way of looking up royalty information) - converge on a single, readable format by all participants.
  • Royalty reporting - Auditability, record keeping, what is owed to whom.
  • Communal payments api to make royalty payments easier for marketplaces
  • API to query for royalty information (Web3 app)

22 of 22

Join the Discord