{"id":"ERC-5521","name":"Referable NFT","status":"Final","chain":"both","category":{"id":"nft","name":"NFT Capabilities","description":"What NFTs can do beyond basic ownership"},"journeyStages":[{"id":"asset-display","name":"Asset Discovery & Display","description":"Seeing tokens, NFTs, and balances"},{"id":"management","name":"Asset Management","description":"Managing assets over time"}],"uxImpact":"NFTs can reference other NFTs — creating a directed graph of relationships (remixes, derivatives, citations).","officialUrl":"https://ercs.ethereum.org/ERCS/erc-5521","lastReviewed":"2026-09-18","lastUpdated":"2026-09-18","kind":"proposal","hasDetailedContent":true,"content":{"id":"ERC-5521","specConstraints":[{"id":"reference-not-ownership","constraint":"Changing NFT ownership does not change the reference relationship or automatically include descendants.","appliesTo":"application","normativity":"security-considerations","specQuote":"### Ownership and Reference\n\nThe change of ownership has nothing to do with the reference relationship. Normally, the distribution of profits complies with the agreement when the NFT was being created regardless of the change of ownership unless specified in the agreement.\n\nReferring a token will not refer to its descendants by default. In the case that only a specific child token gets referred, it means the privity of the contract will involve nobody other than the owner of this specific child token. Alternatively, a chain-of-reference all the way from the root token to a specific very bottom child token (from root to leaf) can be constructed and recorded in the `referring` to explicitly define the distribution of profits.","specSection":"Security Considerations — Ownership and Reference","specUrl":"https://ercs.ethereum.org/ERCS/erc-5521#ownership-and-reference","designImplication":"Keep ownership, reference, and descendant relationships as separate views. Do not imply that a transfer changes profit-sharing or the referenced graph."},{"id":"open-mint-reference-risk","constraint":"Open minting permits users to create relationships, which creates risks from incorrect references, supply inflation, and off-chain errors.","appliesTo":"application","normativity":"security-considerations","specQuote":"### Open Minting and Relationship Risks\n\nThe `safeMint` function has been deliberately designed to allow unrestricted minting and relationship setting, akin to the open referencing system seen in platforms such as Google Scholar. This decision facilitates strong flexibility, enabling any user to create and define relationships between NFTs without centralized control. While this design aligns with the intended openness of the system, it inherently carries certain risks. Unauthorized or incorrect references can be created, mirroring the challenges faced in traditional scholarly referencing, where erroneous citations may occur. Additionally, the open nature may expose the system to potential abuse by malicious actors, who might manipulate relationships or inflate the token supply. It is important to recognize that these risks are not considered design flaws but intentional trade-offs, which balance the system's flexibility against potential reliability concerns. \n\nStakeholders should be aware that the on-chain data integrity guarantees extend only to what has been recorded on the blockchain and do not preclude the possibility of off-chain errors or manipulations. Thus, users and integrators should exercise caution and judgment in interpreting and using the relationships and other data provided by this system.","specSection":"Security Considerations — Open Minting and Relationship Risks","specUrl":"https://ercs.ethereum.org/ERCS/erc-5521#open-minting-and-relationship-risks","designImplication":"Label user-created references as unverified and show their provenance. Do not present an open relationship as an endorsed citation or financial fact."},{"id":"reference-timestamp-granularity","constraint":"The creation timestamp is block-level and cannot support fine-grained transaction-level comparisons.","appliesTo":"application","normativity":"security-considerations","specQuote":"### Timestamp\n\nThe `createdTimestamp` only covers the block-level timestamp (based on block headers), which does not support fine-grained comparisons such as transaction-level.","specSection":"Security Considerations — Timestamp","specUrl":"https://ercs.ethereum.org/ERCS/erc-5521#timestamp","designImplication":"Label timestamp precision honestly and avoid ordering claims that require transaction-level timing."},{"id":"community-accepted-reference","constraint":"An rNFT SHOULD reference content already accepted by the community; its createdTimestamp is a block-level indicator and cannot order two rNFTs in the same block.","appliesTo":"application","normativity":"rationale","specQuote":"`createdTimestamp`: A key principle of this standard is that an rNFT should reference content already accepted by the community (a time-based sequence known by participants). Global timestamps for rNFTs are thus essential, serving to prevent conflicting states (akin to concurrency issues in transaction processing and block organization). We define a block-level timestamp where `createdTimestamp = block.timestamp` Note that, given that the granularity of references is tied to the block timestamp, it is impractical to discern the order of two rNFTs within the same block.","specSection":"Rationale — Why createdTimestampOf?","specUrl":"https://ercs.ethereum.org/ERCS/erc-5521#why-createdtimestampof","designImplication":"Present community acceptance and reference provenance as context, and label block-level timing as approximate rather than as a precise creation order."},{"id":"offchain-reference-caution","constraint":"Users and integrators SHOULD exercise caution when interpreting relationships because on-chain integrity does not rule out off-chain errors or manipulation.","appliesTo":"application","normativity":"security-considerations","specQuote":"Stakeholders should be aware that the on-chain data integrity guarantees extend only to what has been recorded on the blockchain and do not preclude the possibility of off-chain errors or manipulations. Thus, users and integrators should exercise caution and judgment in interpreting and using the relationships and other data provided by this system.","specSection":"Security Considerations — Open Minting and Relationship Risks","specUrl":"https://ercs.ethereum.org/ERCS/erc-5521#open-minting-and-relationship-risks","designImplication":"Label on-chain relationship data as recorded facts, while surfacing provenance and room for off-chain error rather than implying endorsement."}],"sources":[{"label":"Official specification","url":"https://ercs.ethereum.org/ERCS/erc-5521","type":"official-spec"}],"lastReviewed":"2026-09-18","lastUpdated":"2026-09-18","summary":"NFTs can reference other NFTs — creating a directed graph of relationships (remixes, derivatives, citations).","designerTakeaways":["You can show References and Referenced by lists on every derivative NFT detail page.","Your graph view can limit depth to 2 hops with View full graph for explorers.","You can link cross-contract references to correct collection with verification badge."],"applicability":{"whenToUse":["Remix and derivative culture is core to product.","On-chain citation between tokens matters.","Attribution disputes need transparent lineage."],"whenToAvoid":["Flat unrelated collectibles.","Graph would have single node always.","Indexer cannot resolve cross-contract refs."]},"prototypeFirst":[{"screen":"Reference lists on detail","why":"Default view for lineage without graph complexity.","covers":["Has references","Referenced by others","None"],"include":["References list with thumbs","Referenced by list","Tap to navigate"]},{"screen":"Lineage graph preview","why":"Visual learners see remix tree.","covers":["2-hop graph","Deep graph"],"include":["Mini graph","Expand to full screen","Depth limit label"]},{"screen":"Cross-contract reference link","why":"References span collections.","covers":["Same chain ref","Broken ref"],"include":["Collection name","Verify resolved","Broken link message"]},{"screen":"Remix creation flow","why":"Minter selects parent references at create.","covers":["Pick references","Confirm lineage"],"include":["Reference picker","Preview lineage","Mint with refs"]}],"mentalModel":[{"label":"Reference","description":"This token points to sources it derives from."},{"label":"Referenced by","description":"Other tokens point here — downstream derivatives."},{"label":"Directed graph","description":"Edges one-way — remix points to original, not always reverse indexed automatically."},{"label":"Cross-contract","description":"Reference may be different collection address — link must resolve both."},{"label":"Timestamp ordering","description":"Creation time orders citation chronology."}],"statesToDesign":[{"state":"Has references only","trigger":"Derivative of others.","userNeed":"See sources.","designResponse":"References list prominent."},{"state":"Referenced by many","trigger":"Popular original.","userNeed":"Discover derivatives.","designResponse":"Referenced by with count and preview thumbs."},{"state":"Graph expanded","trigger":"User opens full graph.","userNeed":"Explore without overwhelm.","designResponse":"Pan/zoom with depth filter."},{"state":"Broken reference","trigger":"Burned or invalid ref.","userNeed":"Not broken UI.","designResponse":"Reference unavailable gray node."},{"state":"No recorded references","trigger":"No reference records are returned for the token.","userNeed":"See the absence of recorded links without an authorship claim.","designResponse":"Show \"No recorded references\" and any Referenced by results; verify authorship independently."}],"designDecisions":[{"question":"Graph or lists default?","recommendation":"Lists default; graph optional expand.","rationale":"Graph overwhelms casual collectors."},{"question":"Max graph depth?","recommendation":"2 hops default; slider to 4 max.","rationale":"Citation chains explode combinatorially."},{"question":"Citation format?","recommendation":"Remixed from [thumb] [name] with date.","rationale":"Academic citation too cold for art."}],"problemsSolved":[{"problem":"Remix attribution disputes","oldWay":"He-said she-said off-chain","newWay":"On-chain reference list on token","impact":"high"},{"problem":"Discovering derivative works","oldWay":"Manual search","newWay":"Referenced by index on originals","impact":"medium"},{"problem":"Cross-collection lineage invisible","oldWay":"Refs only in metadata text","newWay":"Resolvable cross-contract reference links","impact":"medium"}],"uxPatterns":[{"name":"Reference Lineage Lists","description":"References and Referenced by on detail.","components":["ReferenceList","ThumbRow","DateLabel"],"userFlow":["Open NFT","See references","Tap source","Navigate to parent"]},{"name":"Remix Graph Explorer","description":"Optional 2-hop visual graph.","components":["GraphCanvas","DepthControl","NodeCard"],"userFlow":["Tap View graph","See 2-hop","Expand depth","Tap node to open"]}],"antiPatterns":[{"pattern":"Full graph as only view","why":"Casual users bounce","instead":"Lists first; graph optional","severity":"high"},{"pattern":"Unbounded graph depth render","why":"Browser hang","instead":"Depth limit with expand control","severity":"critical"},{"pattern":"Broken refs shown as active links","why":"404 confusion","instead":"Reference unavailable state","severity":"medium"}],"vocabulary":[{"use":"Remixed from","avoid":"Reference array entry","why":"Creative attribution language."},{"use":"Derivatives","avoid":"Referenced-by subgraph","why":"Collector-friendly term."},{"use":"View lineage","avoid":"Open citation graph","why":"Discovery action language."}],"technicalNotes":"ERC-5521 graph UI needs depth limits; resolve cross-contract refs before showing links.","relatedStandards":[{"id":"ERC-5489","relationship":"Outbound links complement reference graph"},{"id":"ERC-721","relationship":"Referable extension"}]},"sources":[{"label":"Official specification","url":"https://ercs.ethereum.org/ERCS/erc-5521","type":"official-spec"},{"label":"Discussion search","url":"https://ethereum-magicians.org/search?q=ERC-5521","type":"discussion"}],"urls":{"canonical":"https://www.eipsfordesigners.com/standards/ERC-5521","markdown":"https://www.eipsfordesigners.com/standards/ERC-5521/content.md","agent":"https://www.eipsfordesigners.com/standards/ERC-5521/agent.md","api":"https://www.eipsfordesigners.com/api/standards/ERC-5521","official":"https://ercs.ethereum.org/ERCS/erc-5521","discussion":"https://ethereum-magicians.org/search?q=ERC-5521"},"freshness":{"lastReviewed":"2026-09-18","lastUpdated":"2026-09-18"}}