{"id":"ERC-2981","name":"NFT Royalty Standard","status":"Final","chain":"both","category":{"id":"nft","name":"NFT Capabilities","description":"What NFTs can do beyond basic ownership"},"journeyStages":[{"id":"management","name":"Asset Management","description":"Managing assets over time"}],"uxImpact":"Standardized royalty info — marketplaces can query royalty percentage and recipient for any NFT. Design implications: show royalty percentage on listings (e.g., '5% creator royalty'), display royalty recipient/creator info, calculate and preview royalty amount during purchase, indicate if marketplace honors royalties. Design decisions: whether to show royalties as percentage or absolute amount, how prominently to display (affects buyer decisions), handling marketplaces that don't enforce royalties.","hasDetailedContent":true,"content":{"id":"ERC-2981","summary":"ERC-2981 standardizes NFT royalties. Creators set a percentage (e.g., 5%), and any marketplace can query it via royaltyInfo(). When an NFT sells, the marketplace knows who gets royalties and how much. Before this, every marketplace had different royalty systems. Now there's one source of truth: the NFT contract itself.","applicability":{"whenToUse":["Your product addresses: no standard way to specify royalties.","Your product addresses: royalties differ across platforms.","The flow should deliver: one royaltyInfo() function, all marketplaces read it.","You are designing a royalty display on listing experience with visible states and recovery paths."],"whenToAvoid":["Show royalty prominently in fee breakdown.","Always call royaltyInfo() for current settings.","Honor on-chain royalties or disclose clearly.","Assets are fungible tokens only with no unique-item semantics."]},"designerTakeaways":["You can design UI that delivers one royaltyInfo() function, all marketplaces read it.","You can design UI that delivers contract specifies rate.","You can design UI that delivers on-chain, verifiable, queryable royalty info."],"problemsSolved":[{"problem":"No standard way to specify royalties","oldWay":"Set royalties separately on OpenSea, Rarible, each marketplace","newWay":"One royaltyInfo() function, all marketplaces read it","impact":"critical"},{"problem":"Royalties differ across platforms","oldWay":"5% on OpenSea, 10% on LooksRare, 0% on SudoSwap","newWay":"Contract specifies rate, marketplaces honor it (ideally)","impact":"high"},{"problem":"Creators can't verify royalty settings","oldWay":"Check each marketplace dashboard separately","newWay":"On-chain, verifiable, queryable royalty info","impact":"medium"}],"uxPatterns":[{"name":"Royalty Display on Listing","description":"Show creator royalty when listing NFT","mockup":"concept/nft-gallery","userFlow":["User lists NFT","Marketplace queries royaltyInfo()","Shows royalty % and recipient","Calculates user proceeds","User sees clear breakdown"]},{"name":"Purchase with Royalty","description":"Show buyer where funds go","mockup":"generic/list-selector","userFlow":["User clicks buy","Shows payment distribution","Creator gets royalty","User understands where ETH goes","Completes purchase"]}],"uiComponents":[{"name":"RoyaltyBadge","description":"Shows royalty percentage on NFT card","states":["has-royalty","no-royalty","loading"],"props":["percentage","recipient"]},{"name":"FeeBreakdown","description":"Detailed breakdown of sale/purchase fees","states":["collapsed","expanded"],"props":["salePrice","royalty","platformFee","proceeds"]},{"name":"CreatorRoyaltyInfo","description":"Shows creator address and royalty settings","states":["verified","unverified"],"props":["creator","percentage","isVerified"]}],"antiPatterns":[{"pattern":"Hiding royalty in fine print","why":"Sellers surprised by lower proceeds","instead":"Show royalty prominently in fee breakdown","severity":"high"},{"pattern":"Not querying on-chain royalty","why":"May show outdated or wrong royalty info","instead":"Always call royaltyInfo() for current settings","severity":"medium"},{"pattern":"Offering 0% royalty override","why":"Undermines creator compensation model","instead":"Honor on-chain royalties or disclose clearly","severity":"medium"}],"onMonad":[{"aspect":"Royalty Query","ethereum":"royaltyInfo() call is standard","monad":"Same interface, no changes needed","designImplication":"Works identically on Monad"}],"keyTakeaways":["ERC-2981 = on-chain NFT royalty standard","Query royaltyInfo(tokenId, salePrice) for royalty data","Show royalty in fee breakdown, not hidden","Display creator/recipient address clearly","Enforcement varies by marketplace"],"technicalNotes":"ERC-2981 adds royaltyInfo(uint256 tokenId, uint256 salePrice) returns (address receiver, uint256 royaltyAmount). Returns royalty recipient and absolute amount based on sale price. Interface ID: 0x2a55205a. Note: ERC-2981 is informational — marketplaces choose whether to enforce. Some bypass via aggregators or direct transfers."},"sources":[{"label":"Official specification","url":"https://eips.ethereum.org/EIPS/eip-2981","type":"official-spec"},{"label":"Discussion","url":"https://ethereum-magicians.org/search?q=ERC-2981","type":"discussion"}],"urls":{"canonical":"https://www.eipsfordesigners.com/standards/ERC-2981","markdown":"https://www.eipsfordesigners.com/standards/ERC-2981/content.md","agent":"https://www.eipsfordesigners.com/standards/ERC-2981/agent.md","api":"https://www.eipsfordesigners.com/api/standards/ERC-2981","official":"https://eips.ethereum.org/EIPS/eip-2981","discussion":"https://ethereum-magicians.org/search?q=ERC-2981"},"freshness":{"lastReviewed":"2026-04-05","lastUpdated":"2026-04-05"}}