Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
LABS
Glossary

EIP-2981

EIP-2981 is an Ethereum Improvement Proposal that defines a standard interface for NFTs to declare royalty information, enabling automated payments to creators on secondary market sales.
Chainscore © 2026
definition
NFT STANDARD

What is EIP-2981?

EIP-2981 is an Ethereum Improvement Proposal that defines a standardized, on-chain royalty payment system for Non-Fungible Tokens (NFTs).

EIP-2981: NFT Royalty Standard is an interface that allows an NFT smart contract to signal how royalty payments should be distributed to its creators or rights holders whenever the NFT is sold on a secondary market. The core function, royaltyInfo(uint256 tokenId, uint256 salePrice), returns the recipient address and the royalty amount for a given sale price. This provides a universal, on-chain mechanism for marketplaces to query and automatically execute royalty payments, moving beyond off-chain metadata or platform-specific implementations.

The proposal addresses a critical need for creator sustainability in the NFT ecosystem by embedding royalty logic directly into the token's contract. Prior to its adoption, royalty enforcement was fragmented and relied on the voluntary compliance of individual marketplaces. EIP-2981 establishes a standardized data structure that any compliant marketplace can integrate, ensuring creators receive a programmable percentage (e.g., 5-10%) of all subsequent sales. This is a significant shift from the initial sale model, enabling ongoing revenue for artists and projects.

Implementation involves the NFT contract returning two values: the recipient (the address to pay) and the royaltyAmount (calculated as a function of the salePrice). The royalty can be a fixed amount or a percentage, and it can even vary per token ID within a collection. While EIP-2981 sets the standard for signaling royalties, it does not enforce payment; enforcement depends on marketplace integration. Major platforms like OpenSea, LooksRare, and Rarible have adopted this standard, making it the de facto method for on-chain royalty information.

It's important to distinguish EIP-2981 from enforcement mechanisms. The standard is a read-only function—it informs a marketplace of the royalty details but does not automatically transfer funds. Some marketplaces may choose to ignore it, leading to the development of more complex, enforceable alternatives. However, its widespread adoption has made it a foundational layer for NFT economics, providing a clear, contract-level specification for creator compensation that is independent of any single platform's policies.

etymology
STANDARD ORIGINS

Etymological Roots of EIP-2981

The name and conceptual foundation of EIP-2981 are derived from its function and its place within the Ethereum governance process.

EIP-2981 is an Ethereum Improvement Proposal (EIP) that establishes a standardized, on-chain interface for NFT Royalties. The '2981' is its unique sequential identifier within the EIP repository, following proposals like EIP-721 (NFTs) and EIP-1155 (Multi-Token). The proposal's title, "NFT Royalty Standard," directly describes its purpose: to create a predictable, universal way for smart contracts to signal how royalties should be paid to creators on secondary sales. This naming convention follows the Ethereum ecosystem's practice of using descriptive titles and numerical IDs for technical specifications.

The concept's origin lies in addressing a critical gap in the initial NFT standards. While EIP-721 and EIP-1155 defined how to create and transfer non-fungible tokens, they did not include a native mechanism for enforcing or even reporting royalty payments. Prior to EIP-2981, royalty logic was implemented in an ad-hoc manner by individual marketplaces or within custom contract code, leading to fragmentation and incompatibility. The proposal was authored by Zach Burks, James Morgan, Blaine Malone, and James Seibel, and was motivated by the need for composability and interoperability across the entire NFT ecosystem, from minting platforms to decentralized exchanges.

EIP-2981 functions as an extension to existing token standards. It introduces a single, straightforward function: royaltyInfo(uint256 tokenId, uint256 salePrice). This function returns the royalty recipient's address and the amount to be paid, calculated from the sale price. By standardizing this how-to-pay signal, it allows any marketplace or smart contract to programmatically discover and respect creator royalties without prior integration with specific NFT contracts. This design is etymologically and functionally an interface, a core software concept defining a contract's external calls, making it a natural fit for Ethereum's smart contract environment.

The adoption of EIP-2981 has made "royaltyInfo" a key term in the NFT developer lexicon. Its implementation does not enforce payments—that is left to the marketplace or exchange executing the sale—but it provides the necessary and authoritative data for enforcement. This standard has become foundational, influencing subsequent discussions and proposals around royalty enforcement mechanisms (like EIP-5218) and is widely supported by major NFT platforms. Its origin story is a classic example of the Ethereum community identifying a market-wide need and collaboratively developing a minimal, elegant standard to solve it.

how-it-works
ERC-721 ROYALTY STANDARD

How EIP-2981 Works

EIP-2981 is an Ethereum Improvement Proposal that defines a standardized, on-chain method for non-fungible tokens (NFTs) to declare royalty payment information, enabling automatic and trustless revenue sharing for creators across secondary market sales.

EIP-2981 introduces a simple, gas-efficient function called royaltyInfo that any smart contract can implement. This function takes a token's sale price and its unique ID as inputs and returns two outputs: the address of the royalty recipient (e.g., the original creator or a designated wallet) and the exact royalty amount to be paid. This mechanism operates at the smart contract level, making the royalty logic an immutable and verifiable part of the NFT's code. Marketplaces and other platforms that integrate the standard can query this function to programmatically calculate and disburse royalties during a sale, without relying on off-chain metadata or manual processes.

The standard's design is intentionally flexible to support various royalty models. It can calculate royalties as a fixed amount or, more commonly, as a percentage of the sale price. For example, a contract might specify a 5% royalty, so a sale for 10 ETH would return 0.5 ETH as the royalty amount. Crucially, EIP-2981 is per-token aware, meaning royalty rates and recipients can be configured individually for each NFT within a collection, allowing for unique terms per artwork or edition. This is a significant advancement over blanket collection-wide rates.

For the ecosystem, EIP-2981 solves a critical interoperability problem. Before its adoption, each marketplace had its own proprietary and often off-chain method for handling royalties, leading to fragmentation and enforcement issues. By providing a universal, on-chain interface, it allows any compliant marketplace—from OpenSea to a niche decentralized application—to discover and honor the creator's intended royalties automatically. This creates a more reliable and fair revenue stream for creators, as the payment logic is enforced by the blockchain itself whenever a sale occurs on an integrated platform.

code-example
EIP-2981 IMPLEMENTATION

Code Example

A practical demonstration of implementing the EIP-2981 royalty standard for NFTs on the Ethereum blockchain, showcasing how to define and retrieve royalty information within a smart contract.

The following Solidity code provides a minimal, standards-compliant implementation of the EIP-2981: NFT Royalty Standard. It defines a RoyaltyInfo struct and implements the required royaltyInfo function, which returns the recipient address and royalty amount for a given token sale price. This function is invoked by marketplaces and other platforms to automatically pay out royalties to creators on secondary sales. The example uses a fixed royalty basis points (e.g., 500 for 5%) and a single recipient for simplicity, but more complex logic can be built on this foundation.

Key components of the implementation include: the supportsInterface function for ERC-165 interface detection, ensuring compatibility; the royaltyInfo function signature (uint256 _tokenId, uint256 _salePrice); and the calculation royaltyAmount = (_salePrice * royaltyBasisPoints) / 10000. The royalty amount is derived by multiplying the _salePrice by the royaltyBasisPoints (where 10,000 basis points equals 100%) to ensure precision without floating-point numbers. This function must return the payment recipient and the calculated amount.

To integrate this, a marketplace's smart contract would call the royaltyInfo function on the NFT contract using a static call. For instance, OpenSea, Rarible, and other major platforms query this function to determine how much ETH or other currency to send to the royaltyRecipient when an NFT is sold. Developers can extend this pattern to support per-token or per-tier royalty configurations by modifying the logic inside royaltyInfo, perhaps by reading from a mapping that stores settings for individual _tokenId values.

key-features
EIP-2981

Key Features

EIP-2981 is an Ethereum standard that defines a universal interface for royalty payments on Non-Fungible Tokens (NFTs). It enables smart contracts to programmatically specify how royalties are paid to creators on secondary market sales.

01

Standardized Royalty Interface

EIP-2981 introduces a single, universal function, royaltyInfo(), that any NFT marketplace can query. This function returns the recipient address and the royalty amount for a given sale price. This eliminates the need for custom, per-marketplace integrations, creating a predictable and consistent royalty mechanism across the entire ecosystem.

02

On-Chain Enforcement

Royalty logic is embedded directly within the NFT's smart contract code. This moves enforcement from off-chain agreements or marketplace policy to on-chain execution. When a sale occurs on a compliant marketplace, the royalty payment is automatically calculated and routed as part of the transaction, making it a verifiable and trustless process.

03

Flexible Royalty Structure

The standard supports complex royalty models beyond a simple percentage. Key features include:

  • Dynamic royalties that can change based on sale price or other conditions.
  • Split payments to multiple recipient addresses (e.g., creator, platform, charity).
  • Royalty specification per token ID, allowing different rates for individual NFTs within the same collection.
04

Backwards Compatibility

EIP-2981 is designed as an optional extension to the core ERC-721 and ERC-1155 standards. Existing NFT collections can be upgraded to support it without breaking functionality. Marketplaces that do not support the standard can simply ignore the interface, allowing the NFT to function normally, ensuring a smooth transition for the ecosystem.

05

Marketplace Adoption & Impact

Widespread adoption by major marketplaces like OpenSea, LooksRare, and Rarible has made EIP-2981 the de facto standard for NFT royalties. This has led to:

  • Billions of dollars in automated royalty payments to creators.
  • Reduced friction for developers building NFT applications.
  • A stronger economic foundation for digital artists and creators.
ecosystem-usage
EIP-2981

Ecosystem Usage & Adoption

EIP-2981 is the standard for NFT Royalties, enabling smart contracts to automatically pay creators a percentage of secondary sales. Its adoption has fundamentally changed how creators monetize digital assets.

01

Core Mechanism & Standardization

EIP-2981 defines a single, universal function, royaltyInfo(uint256 tokenId, uint256 salePrice), that returns the recipient address and royalty amount for a given NFT sale. This standardization allows any marketplace or protocol to query and pay royalties in a consistent way, replacing fragmented, custom implementations.

  • Function Signature: function royaltyInfo(uint256 _tokenId, uint256 _salePrice) external view returns (address receiver, uint256 royaltyAmount)
  • Flexible Logic: The royalty amount is calculated on-chain, allowing for complex logic (e.g., tiered royalties, time-based rates) within the implementing contract.
02

Marketplace Integration

Major NFT marketplaces like OpenSea, Blur, LooksRare, and Rarible have integrated EIP-2981 to support on-chain royalty enforcement. This integration is typically the primary method for honoring creator fees during secondary sales.

  • Automatic Payouts: When a sale occurs, the marketplace contract calls the NFT's royaltyInfo function and automatically routes the calculated fee to the creator's wallet.
  • Fallback Systems: Some marketplaces use EIP-2981 as the primary source but may have fallback mechanisms or marketplace-level policies for NFTs that don't implement the standard.
03

Smart Contract Implementation

NFT collections implement EIP-2981 by adding the royaltyInfo function to their smart contracts. Common patterns include:

  • Fixed Global Royalty: A single fee (e.g., 5%) and recipient for all tokens in the collection.
  • Per-Token Royalty: Royalty settings stored per tokenId, enabling unique terms for individual assets.
  • Upgradeable Settings: Using an external registry or owner-controlled variables to update royalty parameters after deployment. Prominent examples include Manifold's Royalty Registry and Art Blocks collections.
04

Royalty Enforcement Challenges

While EIP-2981 provides a technical standard, its adoption does not guarantee enforcement. Key challenges include:

  • Optional Compliance: Marketplaces can choose to ignore the returned royalty data.
  • Marketplace Competition: Platforms like Blur have implemented optional royalty models to attract traders, putting pressure on creator fees.
  • Technical Circumvention: Sales can occur on non-compliant marketplaces or via direct peer-to-peer transfers, bypassing the standard entirely. This has led to discussions about more enforceable mechanisms like EIP-721C (modular royalty standard).
05

Impact on Creator Economy

EIP-2981 has established a foundational, on-chain revenue model for digital creators, enabling sustainable projects beyond the initial mint.

  • Predictable Revenue: Allows creators to programmatically earn from the success of their work in secondary markets.
  • Composability: Royalty-payment logic integrates seamlessly with other DeFi and NFTfi protocols, enabling use cases like royalty-backed lending or royalty streaming.
  • Industry Norm: It has made creator royalties a standard expectation for reputable NFT projects, shifting the economic paradigm for digital art, music, and collectibles.
06

Related Standards & Evolution

EIP-2981 is part of an evolving ecosystem of royalty standards addressing its limitations.

  • EIP-721C: A proposed modular, enforceable standard where royalties are defined by separate, updatable policy contracts.
  • ERC-2981: The finalized Ethereum Request for Comment status of the standard.
  • Chainlink NFT Royalty Vaults: An oracle-based solution for tracking off-chain sales and distributing royalties.
  • Manifold Royalty Registry: A widely adopted reference implementation and registry that helps standardize royalty lookup across the ecosystem.
security-considerations
EIP-2981

Security & Implementation Considerations

While EIP-2981 standardizes royalty payments, its implementation introduces specific security and design considerations for developers and marketplace operators.

01

Royalty Enforcement vs. Market Dynamics

EIP-2981 is a permissionless standard; it does not enforce payments. Marketplaces must voluntarily query and respect the royaltyInfo function. This creates a trust gap where creators rely on platform goodwill. Some marketplaces have implemented fee switching or optional royalties, leading to ecosystem debates on creator sovereignty versus user choice.

02

Implementation Security: Reentrancy & Gas

The royaltyInfo function is called during transfers, making it a potential attack vector.

  • Reentrancy: A malicious receiver address could re-enter the calling contract. Implement the checks-effects-interactions pattern.
  • Gas Limits: Complex royalty logic (e.g., on-chain lookups) can cause transfers to fail. Use gas-efficient storage patterns and consider gas stipends.
  • Return Data Validation: Always validate the returned receiver address and royaltyAmount to prevent unexpected behavior.
03

Royalty Payment Mechanics

The standard specifies how to calculate royalties, not how to pay them. Key implementation details include:

  • Payment Token: Royalties are denominated in the sale's transaction currency (e.g., ETH, WETH). The standard does not natively support ERC-20 payments.
  • Transfer Responsibility: The marketplace or exchange contract is responsible for executing the payment to the receiver address returned by royaltyInfo.
  • Gas Costs: The payer (typically the marketplace) bears the gas cost for the royalty transfer.
04

Upgradability & Data Sources

Royalty logic can be dynamic. Common implementation patterns involve:

  • Immutable Contracts: Royalty info is hardcoded at deployment (simple, but inflexible).
  • Owner-Settable: A privileged address can update recipients/rates (requires trust).
  • External Registry: The NFT contract references an external royalty registry (like the Manifold Royalty Registry) for lookup, enabling centralized updates across collections.
  • Token-Level Overrides: Supporting per-token royalty settings adds complexity but maximizes flexibility.
05

Front-Running & Oracle Manipulation

If royalty rates depend on external data (e.g., oracle price feeds), they are vulnerable to manipulation.

  • Front-Running: An attacker could manipulate a price feed just before a large sale to alter the royalty calculation.
  • Mitigation: Use decentralized oracles with robust data aggregation or implement time-weighted average prices (TWAPs) to smooth out short-term volatility and reduce attack feasibility.
06

Testing & Verification

Thorough testing is critical for secure EIP-2981 integration.

  • Unit Tests: Verify royaltyInfo returns correct values for various inputs (sale price, tokenId).
  • Integration Tests: Simulate full marketplace transactions, ensuring royalties are paid to the correct address and that the overall transfer does not revert.
  • Fuzz Testing: Use tools like Foundry's fuzzing to test with random sale prices and token IDs to uncover edge cases and integer overflow/underflow bugs.
ROYALTY STANDARD IMPLEMENTATION

Comparison: EIP-2981 vs. Other Royalty Methods

A technical comparison of on-chain royalty enforcement mechanisms, highlighting protocol-level differences in design, compatibility, and enforcement guarantees.

Feature / MechanismEIP-2981 (NFT Royalty Standard)Transfer-Hook EnforcementMarketplace-Level Enforcement

Standardization

On-Chain Royalty Info

Protocol-Level Enforcement

Marketplace Agnostic

Gas Cost Impact

Low (view function)

High (transfer hook)

None (off-chain)

Backwards Compatibility

High

Low (requires new contract)

High

Royalty Recipient Flexibility

Per-token or per-collection

Collection-level only

Marketplace-defined policy

Enforcement Guarantee

Informational

Mandatory (if hook respected)

Voluntary

EIP-2981

Common Misconceptions

EIP-2981 is the standard for NFT Royalties on Ethereum, but its implementation is often misunderstood. This section clarifies how it actually works versus common assumptions.

No, EIP-2981 does not enforce royalty payments. It is a standardized interface that provides royalty information (recipient address and amount) to a marketplace or platform. Enforcement is the responsibility of the marketplace or the smart contract executing the sale. A platform can read the royalty data via royaltyInfo() and choose to ignore it, which is why many projects implement additional on-chain enforcement mechanisms in their minting contracts.

EIP-2981

Technical Deep Dive

A detailed exploration of the NFT Royalty Standard, its technical implementation, and its impact on the creator economy.

EIP-2981 is an Ethereum Improvement Proposal that defines a standardized, on-chain method for Non-Fungible Token (NFT) smart contracts to communicate royalty payment information to marketplaces and other platforms. It is a royalty standard that allows the original creator or rights holder to receive a percentage of the sale price every time the NFT is resold on the secondary market. This is achieved by implementing a single function, royaltyInfo(), which any marketplace can call to discover the payment recipient and the royalty amount. Unlike previous informal methods, EIP-2981 provides a consistent, gas-efficient interface that is widely adopted across major NFT marketplaces like OpenSea and Blur, ensuring creators can programmatically enforce their revenue share.

EIP-2981

Frequently Asked Questions

EIP-2981 is a pivotal standard for NFT royalties. These questions address its core purpose, technical implementation, and impact on the ecosystem.

EIP-2981 is an Ethereum Improvement Proposal that defines a standardized, on-chain method for Non-Fungible Token (NFT) smart contracts to communicate royalty payment information to marketplaces and other platforms. It works by implementing a single function, royaltyInfo(uint256 _tokenId, uint256 _salePrice), which returns the recipient address and the royalty amount due for a given token and sale price. This function is called by a marketplace during a sale, enabling automatic, trustless royalty payments to creators without requiring custom integration for each NFT contract. The standard is permissionless and backwards compatible, allowing both new and existing NFT collections to adopt it.

ENQUIRY

Get In Touch
today.

Our experts will offer a free quote and a 30min call to discuss your project.

NDA Protected
24h Response
Directly to Engineering Team
10+
Protocols Shipped
$20M+
TVL Overall
NDA Protected Directly to Engineering Team
EIP-2981: NFT Royalty Standard Explained | ChainScore Glossary