{"id":"ERC-5773","name":"Context-Dependent Multi-Asset Tokens","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"}],"uxImpact":"NFTs have multiple assets (files) — different outputs based on context (PDF for readers, 3D for games, image for marketplaces). Design implications: show asset selector/tabs per NFT, display context-appropriate asset automatically, indicate available formats, allow owner to reorder asset priority. Design decisions: auto-detection of context vs manual selection, how to preview multiple assets, handling asset acceptance (propose-commit pattern), storage of multiple asset versions.","hasDetailedContent":true,"content":{"id":"ERC-5773","sources":[{"label":"Official specification","url":"https://eips.ethereum.org/EIPS/erc-5773","type":"official-spec"}],"lastReviewed":"2026-05-25","lastUpdated":"2026-05-25","summary":"NFTs have multiple assets (files) — different outputs based on context (PDF for readers, 3D for games, image for marketplaces).","designerTakeaways":["You can auto-select marketplace image vs game 3D model based on app context.","Your detail page can show asset format tabs with preview for each accepted asset.","You can surface pending asset proposals with Accept for owners before they display publicly."],"applicability":{"whenToUse":["NFTs ship multiple file types for different platforms.","Games need 3D while marketplaces need PNG.","Owner curates asset priority order."],"whenToAvoid":["Single static image metadata only.","No multi-asset indexer support.","One format suffices everywhere."]},"prototypeFirst":[{"screen":"Context-aware display","why":"Same NFT must look right in marketplace vs game.","covers":["Marketplace context","Game context","Reader PDF"],"include":["Auto format pick","Context label in advanced","Fallback image"]},{"screen":"Asset tabs on detail","why":"Collectors browse all formats intentionally.","covers":["Image tab","3D tab","PDF tab"],"include":["Tab bar","Preview pane","Format badge"]},{"screen":"Owner asset priority editor","why":"Owners decide which asset shows first where.","covers":["Reorder list","Save priority"],"include":["Drag reorder","Context mapping","Save confirmation"]},{"screen":"Pending asset proposal","why":"New assets need acceptance before public display.","covers":["Proposed","Accepted","Rejected"],"include":["Proposal inbox","Preview","Accept/Decline"]}],"mentalModel":[{"label":"Multi-asset token","description":"One NFT id, many files attached with metadata."},{"label":"Context","description":"Marketplace, game, or reader — each picks appropriate asset."},{"label":"Priority order","description":"Owner-ranked fallback when context ambiguous."},{"label":"Propose-commit","description":"New assets proposed then accepted like nested NFT flow."},{"label":"Accepted vs pending","description":"Only accepted assets show in public views."}],"statesToDesign":[{"state":"Single context render","trigger":"App knows context.","userNeed":"See right format automatically.","designResponse":"Render best asset silently."},{"state":"Multi-tab browse","trigger":"User on detail page.","userNeed":"Compare formats.","designResponse":"Tabs with previews per format."},{"state":"Pending asset proposal","trigger":"Creator proposed new file.","userNeed":"Review before public.","designResponse":"Owner inbox with Accept/Decline."},{"state":"Missing format for context","trigger":"Game wants 3D but none accepted.","userNeed":"Graceful fallback.","designResponse":"Fallback image plus 3D not available note."},{"state":"Priority reorder saved","trigger":"Owner changed order.","userNeed":"Confirm public display updated.","designResponse":"Saved toast; refresh previews."}],"designDecisions":[{"question":"Auto context vs manual tabs?","recommendation":"Auto in embedded contexts; tabs on detail page.","rationale":"Games should not force users to pick PNG vs GLB."},{"question":"How many tabs visible?","recommendation":"Max 4 visible plus More menu.","rationale":"Format sprawl overwhelms collectors."},{"question":"Preview 3D in marketplace?","recommendation":"Static poster with Open 3D viewer optional.","rationale":"Auto-spin 3D hurts grid performance."}],"problemsSolved":[{"problem":"Wrong file in wrong app","oldWay":"Marketplace shows GLB broken","newWay":"Context selects PNG for marketplace, GLB for game","impact":"high"},{"problem":"One metadata URL limitation","oldWay":"Single JSON cannot serve all platforms","newWay":"Multiple assets per token with priority","impact":"high"},{"problem":"Unauthorized asset swaps","oldWay":"Metadata hijack fears","newWay":"Propose-commit acceptance for new assets","impact":"medium"}],"uxPatterns":[{"name":"Context Asset Picker","description":"Auto-render format by app context.","mockup":"concept/nft-gallery","components":["ContextResolver","AssetRenderer","FallbackImage"],"userFlow":["App loads NFT","Context detected","Best asset renders","Fallback if missing"]},{"name":"Multi-Asset Tabs","description":"Browse all accepted formats on detail.","mockup":"concept/nft-gallery","components":["AssetTabs","PreviewPane","FormatBadge"],"userFlow":["Open detail","Switch tabs","Preview each format","Optional download"]}],"seenInTheWild":[{"app":"Decentraland","url":"https://decentraland.org/","note":"3D wearables need different assets than marketplace thumbnails."},{"app":"OpenSea","url":"https://opensea.io/","note":"Media type handling for video, 3D, and HTML NFTs."},{"app":"Art Blocks","url":"https://www.artblocks.io/","note":"Generative outputs multi-format display."}],"antiPatterns":[{"pattern":"Showing GLB spin in grid thumbnails","why":"Performance collapse","instead":"Poster image in grid; 3D in viewer only","severity":"high"},{"pattern":"Displaying unaccepted proposed assets publicly","why":"Spam or malicious files shown","instead":"Owner accept gate before public","severity":"critical"},{"pattern":"Eight equal tabs with no default","why":"Decision paralysis","instead":"Context auto-pick plus optional tabs","severity":"medium"}],"vocabulary":[{"use":"3D model","avoid":"GLB asset entry","why":"Format name users know."},{"use":"Display version","avoid":"Context priority index","why":"Curatorial language."},{"use":"Accept new file","avoid":"Commit asset proposal","why":"Inbox action language."}],"onMonad":[{"aspect":"Multi-asset loading","ethereum":"Large 3D fetches slow grids","monad":"Fast network does not fix CDN — same lazy load rules","designImplication":"Lazy load all non-image assets on Monad too."},{"aspect":"Asset updates","ethereum":"Priority reorder txs costly","monad":"Cheap reorder encourages owner curation","designImplication":"Inline priority editor on Monad."}],"technicalNotes":"ERC-5773 requires context parameter on render; gate proposed assets behind owner acceptance.","relatedStandards":[{"id":"ERC-4906","relationship":"Metadata updates when assets change"},{"id":"ERC-721","relationship":"Multi-asset extension to NFT"}]},"sources":[{"label":"Official specification","url":"https://eips.ethereum.org/EIPS/erc-5773","type":"official-spec"},{"label":"Discussion","url":"https://ethereum-magicians.org/search?q=ERC-5773","type":"discussion"},{"label":"Official specification","url":"https://eips.ethereum.org/EIPS/erc-5773","type":"official-spec"}],"urls":{"canonical":"https://www.eipsfordesigners.com/standards/ERC-5773","markdown":"https://www.eipsfordesigners.com/standards/ERC-5773/content.md","agent":"https://www.eipsfordesigners.com/standards/ERC-5773/agent.md","api":"https://www.eipsfordesigners.com/api/standards/ERC-5773","official":"https://eips.ethereum.org/EIPS/erc-5773","discussion":"https://ethereum-magicians.org/search?q=ERC-5773"},"freshness":{"lastReviewed":"2026-05-25","lastUpdated":"2026-05-25"}}