{"id":"ERC-6150","name":"Hierarchical NFTs","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":"Filesystem-like hierarchical NFTs — tokens have parent/child relationships like folders and files.","officialUrl":"https://ercs.ethereum.org/ERCS/erc-6150","lastReviewed":"2026-09-18","lastUpdated":"2026-09-18","kind":"proposal","hasDetailedContent":true,"content":{"id":"ERC-6150","sources":[{"label":"Official specification","url":"https://ercs.ethereum.org/ERCS/erc-6150","type":"official-spec"}],"lastReviewed":"2026-09-18","lastUpdated":"2026-09-18","summary":"Filesystem-like hierarchical NFTs — tokens have parent/child relationships like folders and files.","designerTakeaways":["You can show folder icon for parent tokens and file icon for leaves in tree sidebar.","Your breadcrumbs can read Collection › Season › Episode › Item for orientation.","You can offer Create inside folder with parent pre-selected in mint flow."],"applicability":{"whenToUse":["Collection has natural hierarchy — courses, seasons, albums.","Users navigate hundreds of related tokens.","Parent-child minting is on-chain."],"whenToAvoid":["Flat 10k PFP drop with no structure.","Hierarchy depth breaks mobile layout without design.","No parent id in contract."]},"prototypeFirst":[{"screen":"Tree sidebar navigation","why":"Primary navigation for hierarchical collections.","covers":["Expand folders","Select leaf","Deep path"],"include":["Tree component","Icons folder/file","Selected highlight"]},{"screen":"Breadcrumb header","why":"Deep items need path context.","covers":["3-level path","Root item"],"include":["Clickable crumbs","Truncate middle on mobile"]},{"screen":"Create under parent","why":"Creators mint into folder structure.","covers":["Pick parent","Mint child"],"include":["Parent selector","Child preview","Confirm mint"]},{"screen":"Folder detail with children grid","why":"Opening folder shows contained items.","covers":["Empty folder","Many children"],"include":["Children count","Grid of leaves","Back to parent"]}],"mentalModel":[{"label":"Root token","description":"Top of tree — collection or volume."},{"label":"Folder token","description":"Parent with children — may not be tradable art itself."},{"label":"Leaf token","description":"Item with no children — the actual collectible."},{"label":"Path","description":"Root to current token — breadcrumbs encode this."},{"label":"Per-token permissions","description":"Core hierarchy does not inherit permissions; query the optional access-control extension or application policy for each token."}],"statesToDesign":[{"state":"Viewing root collection","trigger":"User at tree top.","userNeed":"See top-level folders.","designResponse":"Grid or tree of root children only."},{"state":"Inside folder","trigger":"Opened parent token.","userNeed":"See children and navigate up.","designResponse":"Breadcrumb plus children grid."},{"state":"Deep leaf detail","trigger":"Selected leaf at depth 4+.","userNeed":"Know location in hierarchy.","designResponse":"Full breadcrumb; sidebar sync."},{"state":"Empty folder","trigger":"Parent with zero children.","userNeed":"Understand empty not error.","designResponse":"Empty folder illustration plus Mint here if allowed."},{"state":"Mobile depth limit","trigger":"Tree too deep for screen.","userNeed":"Still navigate.","designResponse":"Breadcrumb-only mode; sidebar as drill-down pages."}],"designDecisions":[{"question":"Max tree depth in sidebar?","recommendation":"Indent max 4 levels then breadcrumb-only.","rationale":"Mobile cannot fit deeper indents."},{"question":"Drag-drop reorganize?","recommendation":"Avoid unless contract supports; use explicit Move to folder.","rationale":"Accidental drags restructure valuable trees."},{"question":"Folder tokens tradable?","recommendation":"If yes, warn Selling folder includes N children.","rationale":"Bundle sale surprise otherwise."}],"problemsSolved":[{"problem":"Flat grid unusable for structured collections","oldWay":"1000 items one page","newWay":"Folder tree navigation","impact":"high"},{"problem":"Users lost in deep collections","oldWay":"No idea where item lives","newWay":"Breadcrumb path on every detail","impact":"medium"},{"problem":"Minting without structure","oldWay":"All tokens sibling flat","newWay":"Create under parent mint flow","impact":"medium"}],"uxPatterns":[{"name":"NFT Folder Tree","description":"Sidebar tree with folder and leaf icons.","components":["TreeSidebar","FolderIcon","Breadcrumb"],"userFlow":["Open collection","Expand folders","Select item","Breadcrumb updates"]},{"name":"Create Under Parent","description":"Mint child token into selected folder.","components":["ParentPicker","MintForm","PathPreview"],"userFlow":["Select folder","Tap Create here","Mint child","Appears in folder"]}],"antiPatterns":[{"pattern":"Flat grid for 500-item hierarchical collection","why":"Unbrowseable","instead":"Tree or folder drill-down","severity":"high"},{"pattern":"Drag-drop reorg without confirm","why":"Accidental structure changes","instead":"Explicit Move with confirmation","severity":"high"},{"pattern":"No breadcrumb on deep items","why":"Disorientation","instead":"Always show path to root","severity":"medium"}],"vocabulary":[{"use":"Folder","avoid":"Parent token node","why":"Filesystem metaphor."},{"use":"Collection path","avoid":"Parent id chain","why":"Breadcrumb language."},{"use":"Create here","avoid":"Mint with parentId","why":"Creator action language."}],"specConstraints":[{"id":"nonzero-token-id","constraint":"A minted hierarchical NFT token ID must be greater than zero.","appliesTo":"application","normativity":"normative","specQuote":"* @param tokenId The id of minted token, required to be greater than zero","specSection":"Specification","specUrl":"https://ercs.ethereum.org/ERCS/erc-6150#specification","designImplication":"Reserve token ID 0 as the parent/root sentinel and explain why it cannot be selected as a real node in mint and navigation flows."},{"id":"zero-sentinel-rationale","constraint":"The token ID zero sentinel distinguishes a root node from a real hierarchical node.","appliesTo":"application","normativity":"rationale","specQuote":"This proposal standardizes the event `Minted` to indicate the parent and child relationship when minting a new node. When a root node is minted, parentId should be zero. That means a token id of zero could not be a real node. So a real node token id must be greater than zero.","specSection":"Rationale > Relationship between NFTs","specUrl":"https://ercs.ethereum.org/ERCS/erc-6150#relationship-between-nfts","designImplication":"Use a clear root-versus-child distinction in tree views and do not display the sentinel as a user-owned NFT."},{"id":"erc721-compat","constraint":"The hierarchical NFT proposal remains backward compatible with ERC-721.","appliesTo":"application","normativity":"backwards-compatibility","specQuote":"## Backwards Compatibility\n\nThis proposal is fully backward compatible with [EIP-721](./eip-721.md).","specSection":"Backwards Compatibility","specUrl":"https://ercs.ethereum.org/ERCS/erc-6150#backwards-compatibility","designImplication":"Reuse ERC-721 identity and ownership patterns while showing parent/child navigation and the token-ID sentinel."}],"technicalNotes":"ERC-6150 hierarchy uses parent pointers; it does not make permissions inherit from parent to child. Query the optional access-control extension or application policy per token, cap sidebar depth, and always show breadcrumbs.","relatedStandards":[{"id":"ERC-7401","relationship":"Alternative nesting model owning child NFTs"},{"id":"ERC-721","relationship":"Hierarchical extension"}]},"sources":[{"label":"Official specification","url":"https://ercs.ethereum.org/ERCS/erc-6150","type":"official-spec"},{"label":"Discussion search","url":"https://ethereum-magicians.org/search?q=ERC-6150","type":"discussion"}],"urls":{"canonical":"https://www.eipsfordesigners.com/standards/ERC-6150","markdown":"https://www.eipsfordesigners.com/standards/ERC-6150/content.md","agent":"https://www.eipsfordesigners.com/standards/ERC-6150/agent.md","api":"https://www.eipsfordesigners.com/api/standards/ERC-6150","official":"https://ercs.ethereum.org/ERCS/erc-6150","discussion":"https://ethereum-magicians.org/search?q=ERC-6150"},"freshness":{"lastReviewed":"2026-09-18","lastUpdated":"2026-09-18"}}