This standard extends EIP-721 and EIP-6150. This introduces a structured parent-child relationship between NFTs, allowing an NFT to be fractionally split into multiple child NFTs and merged back into a single entity. It provides interfaces to retrieve an NFT’s parent, children, and hierarchical status, ensuring flexible ownership management. This standard is particularly useful for applications in fractional ownership, asset distribution, and composable digital assets, opening new possibilities in fields like real estate, gaming, and decentralized finance.
Motivation
This EIP introduces hierarchical NFTs with splitting and merging capabilities, allowing assets to be dynamically restructured. This proposal is crucial for fractional ownership, gaming assets, and financial instruments, where assets need to be split or merged.
Splitting: One of the key limitations of EIP-6150 is its rigid hierarchy, where NFTs are permanently assigned to a parent without the ability to restructure ownership. In many real-world scenarios, assets need to be split into smaller, independent units. This EIP introduces a standardized way to split an NFT into multiple child NFTs, enabling dynamic asset management. For example, in financial markets, a share NFT can be split into multiple fractional share NFTs, allowing investors to own and trade smaller portions of a share.
Merging: Just as assets need to be split, there are scenarios where multiple NFTs should be combined into a single entity. The proposed EIP enables a merging mechanism, allowing child NFTs to be consolidated into a single parent NFT, allowing asset management and transactions. For instance, in finance, fractional share NFTs can be merged back into a full share NFT, enabling seamless ownership consolidation. This is particularly useful for investors who gradually accumulate fractions of a stock and later want to own a full share.
Share Distribution: This EIP introduces ownership share management, allowing NFTs to track and distribute fractional ownership among multiple stakeholders. This solves fractional ownership tracking within parent-child NFT structures. This also allows dynamic adjustments of ownership based on splitting and merging actions. For example, a real estate NFT representing a building can have multiple owners with different share percentages. When the NFT is split, the new NFTs retain a proportion of the original ownership share. When merged, the system redistributes the shares accordingly. This Enables multi-party ownership in digital assets.
How the proposed EIP Improves Over Existing Standards
The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in RFC 2119 and RFC 8174.
pragmasolidity^0.8.0;// Note: the ERC-165 identifier for this interface is 0x43cb816b.
interfaceIERC7891/* is IERC6150, IERC721, IERC165 */{/**
* @notice Emitted when a child token is minted under a parent with an assigned share.
* @param parentId The ID of the parent token
* @param childId The ID of the newly minted child token
* @param share Share percentage assigned to the child token
*/eventSplit(uint256indexedparentId,uint256indexedchildId,uint8share);/**
* @notice Emitted when multiple child tokens are merged into a new token.
* @param newTokenId The ID of the newly minted merged token
* @param mergedTokenIds Array of token IDs that were merged
*/eventMerged(uint256indexednewTokenId,uint256[]mergedTokenIds);/**
* @notice Mints a new root-level parent NFT.
* @param _tokenURI URI string pointing to token metadata
* @return tokenId The ID of the newly minted parent token
*/functionmintParent(stringmemory_tokenURI)externalpayablereturns(uint256tokenId);/**
* @notice Mints a child NFT under a given parent with a specific share allocation.
* @param parentId ID of the parent token
* @param _share Share percentage assigned to the child token
* @return tokenId The ID of the newly minted child token
*/functionmintSplit(uint256parentId,uint8_share)externalpayablereturns(uint256tokenId);/**
* @notice Merges multiple child NFTs into a new token under the same parent.
* @param parentId ID of the parent token
* @param _tokenIds Array of child token IDs to be merged
* @return newTokenId The ID of the newly minted merged token
*/functionmintMerge(uint256parentId,uint256[]memory_tokenIds)externalpayablereturns(uint256newTokenId);/**
* @notice Transfers share ownership from one NFT to another.
* @param to Token ID receiving the share
* @param from Token ID sending the share
* @param _share Share percentage to transfer
*/functionsharePass(uint256to,uint256from,uint8_share)external;/**
* @notice Burns an NFT and transfers its share back to the parent NFT.
* @param tokenId The ID of the token to burn
*/functionburn(uint256tokenId)external;}
Rationale
This EIP builds upon ERC-721 and ERC-6150 to introduce a structured mechanism for share-based hierarchical NFTs, enabling splitting, merging, and fractional ownership directly within the token standard. The proposal reuses ERC-6150’s parent-child architecture to preserve compatibility and reduce implementation complexity. Share management is embedded natively through internal mappings, allowing each token to track its fractional ownership independently without relying on external protocols. Functions like mintSplit and mintMerge are designed to reflect real-world asset behaviors, clearly distinguishing between asset decomposition and consolidation. The sharePass function facilitates redistribution of shares between tokens without requiring minting or burning, offering an efficient internal transfer mechanism. A burn function is included to allow share return to the parent on destruction, aligning with ownership. Overall, the interface is purposefully minimal and intuitive, designed for extensibility while maintaining gas efficiency and semantic clarity.
Backwards Compatibility
The proposed EIP extends EIP-721 and EIP-6150, making it backward compatible.