{"id":"ERC-6059","name":"Parent-Governed Nestable NFTs","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":"NFTs can own other NFTs in parent-child hierarchies — enabling bundling, delegation, and composability. Design implications: show nested tree views of NFT hierarchies, design 'pending child' acceptance flows (propose-commit pattern), visualize bundle contents expandable within parent, indicate 'nested inside' status. Design decisions: depth limit for hierarchy display, whether dragging NFTs into others is intuitive, how to handle cross-collection nesting, showing root owner vs immediate parent.","hasDetailedContent":true,"content":{"id":"ERC-6059","summary":"ERC-6059 enables NFTs to own other NFTs in parent-child hierarchies. Your character NFT can own sword, armor, and potion NFTs inside it—transfer the character and everything it owns moves together. Perfect for gaming, bundles, and composable digital assets.","applicability":{"whenToUse":["Your product addresses: related NFTs scattered across wallet.","Your product must handle: can't transfer bundle atomically.","The flow should deliver: sword and armor nested INSIDE character NFT.","You are designing a nested nft tree view experience with visible states and recovery paths."],"whenToAvoid":["Tree view with expand/collapse for nested items.","Always expand and show ALL contents before sale.","Require explicit accept for incoming nest requests.","Assets are fungible tokens only with no unique-item semantics."]},"designerTakeaways":["You can design UI that delivers sword and armor nested INSIDE character NFT.","You can design UI that delivers transfer character = everything inside moves too.","You can design UI that delivers tree structure: Character → Equipment → Gems."],"problemsSolved":[{"problem":"Related NFTs scattered across wallet","oldWay":"Character, sword, armor all separate items in flat list","newWay":"Sword and armor nested INSIDE character NFT","impact":"critical"},{"problem":"Can't transfer bundle atomically","oldWay":"Transfer character, sword, armor in 3 separate transactions","newWay":"Transfer character = everything inside moves too","impact":"critical"},{"problem":"No visual hierarchy for collections","oldWay":"All NFTs shown at same level","newWay":"Tree structure: Character → Equipment → Gems","impact":"high"},{"problem":"Complex inventory management","oldWay":"Search entire wallet to find items for specific character","newWay":"Click character, see everything it owns","impact":"high"},{"problem":"Selling bundle requires escrow","oldWay":"Trust marketplace to hold items during multi-item sale","newWay":"Sell parent NFT, children transfer automatically","impact":"medium"}],"uxPatterns":[{"name":"Nested NFT Tree View","description":"Hierarchical display of NFTs owning NFTs","mockup":"concept/nft-gallery","userFlow":["User opens inventory","Sees top-level NFTs","Expands to see children","Children can have their own children","Total value includes all nested items"]},{"name":"Add Child to NFT","description":"Nest one NFT inside another","mockup":"concept/nft-gallery","userFlow":["User selects parent NFT","Views available items to nest","Selects items to add","Confirms ownership transfer to NFT","Items now inside parent NFT"]},{"name":"Remove from Parent","description":"Extract nested NFT back to wallet","mockup":"concept/nft-gallery","userFlow":["User opens parent NFT inventory","Selects items to remove","Chooses destination (wallet or another NFT)","Sees warning about nested children","Confirms removal"]},{"name":"Bundle Sale","description":"Sell parent with all children","mockup":"concept/bundled-defi","userFlow":["User selects NFT to sell","System shows all nested contents","Displays floor prices for each item","Suggests bundle pricing","User sets price and lists","Buyer gets everything atomically"]},{"name":"Pending Child Request","description":"Accept or reject NFT being nested","mockup":"concept/nft-gallery","userFlow":["Someone sends NFT to be nested","Parent owner sees pending request","Reviews the item and sender","Accepts legitimate items","Rejects spam or unwanted items"]}],"uiComponents":[{"name":"NFTTreeView","description":"Expandable tree showing nested NFT hierarchy","states":["collapsed","expanded","loading","empty"],"props":["rootNFT","depth","onExpand","onSelect"]},{"name":"NestingModal","description":"Dialog for adding NFT as child","states":["selecting","confirming","nesting","complete"],"props":["parentNFT","availableChildren[]","onNest"]},{"name":"BundleValueCalculator","description":"Shows total value of NFT including nested","states":["calculating","ready","no-price-data"],"props":["parentNFT","children[]","showBreakdown"]},{"name":"PendingNestRequest","description":"Card for approving/rejecting nest requests","states":["pending","accepted","rejected"],"props":["childNFT","parentNFT","sender","onAccept","onReject"]},{"name":"NestedBreadcrumb","description":"Shows path: Wizard > Backpack > Potion","states":["shallow","deep"],"props":["path[]","onNavigate"]}],"antiPatterns":[{"pattern":"Flat list hiding nested structure","why":"User can't see what's inside their NFTs","instead":"Tree view with expand/collapse for nested items","severity":"critical"},{"pattern":"Not showing nested items when selling","why":"Buyer doesn't know what they're getting","instead":"Always expand and show ALL contents before sale","severity":"critical"},{"pattern":"Auto-accepting nested children","why":"NFT gets filled with spam","instead":"Require explicit accept for incoming nest requests","severity":"high"},{"pattern":"Hiding nested item value","why":"User undersells valuable bundle","instead":"Calculate and display total nested value","severity":"high"},{"pattern":"No way to see deep nesting","why":"Items buried 3+ levels deep become lost","instead":"Breadcrumb navigation and full expand option","severity":"medium"},{"pattern":"Transfer child without warning","why":"User moves item and loses track of it","instead":"Confirm with \"This will move INTO [NFT name]\"","severity":"medium"}],"onMonad":[{"aspect":"Nesting Transactions","ethereum":"Each nest/unnest costs gas","monad":"Cheap nesting enables frequent inventory changes","designImplication":"Players can reorganize inventory freely"},{"aspect":"Deep Nesting","ethereum":"Fetching deep trees is slow and expensive","monad":"Fast parallel queries for entire hierarchy","designImplication":"Can show full tree instantly, not lazy-load"},{"aspect":"Bundle Transfers","ethereum":"Large bundles still one transaction","monad":"Sub-second transfer of entire inventory","designImplication":"Trading full characters feels instant"},{"aspect":"Real-time Updates","ethereum":"Nesting confirmation takes time","monad":"Inventory updates in under a second","designImplication":"Game UIs can update immediately after action"}],"keyTakeaways":["ERC-6059 = NFTs that own other NFTs","Transfer parent = transfer all children","Always show nested structure, not flat list","Calculate bundle value including all nested items","Require accept for incoming nest requests"],"technicalNotes":"ERC-6059 adds childOf() and parentOf() tracking. Children can be added via nestTransfer() which requires parent owner approval. Pending children exist in limbo until accepted. ownerOf() returns immediate parent, while rootOwner() traverses up to the wallet. Events: ChildProposed, ChildAccepted, ChildTransferred."},"sources":[{"label":"Official specification","url":"https://eips.ethereum.org/EIPS/eip-6059","type":"official-spec"},{"label":"Discussion","url":"https://ethereum-magicians.org/search?q=ERC-6059","type":"discussion"}],"urls":{"canonical":"https://www.eipsfordesigners.com/standards/ERC-6059","markdown":"https://www.eipsfordesigners.com/standards/ERC-6059/content.md","agent":"https://www.eipsfordesigners.com/standards/ERC-6059/agent.md","api":"https://www.eipsfordesigners.com/api/standards/ERC-6059","official":"https://eips.ethereum.org/EIPS/eip-6059","discussion":"https://ethereum-magicians.org/search?q=ERC-6059"},"freshness":{"lastReviewed":"2026-04-05","lastUpdated":"2026-04-05"}}