ERC-998 Composable Non-Fungible Token
🆔 ERC-165 interface ids
Computed here as the XOR of the selectors each interface defines.
| ERC998ERC721TopDown | 0xcde244d9 |
| ERC998ERC721TopDownEnumerable | 0xa344afe4 |
| ERC998ERC20TopDown | 0x7294ffed |
| ERC998ERC20TopDownEnumerable | 0xc5fd96cd |
| ERC998ERC721BottomUp | 0xa1b23002 |
| ERC998ERC721BottomUpEnumerable | 0x8318b539 |
| ERC998ERC20BottomUp | 0x3617a1cb |
⚠️ The spec asserts 0xffafa991 for ERC998ERC20BottomUp, which its own interface does not produce.
Asserted value is the XOR of only 4 of the 5 declared functions; it predates transferFromParentERC223(address,uint256,address,uint256,bytes).
⚙️ Functions this standard introduces (31)
0xe226ed22 | balanceOfERC20(uint256,address) | view |
0xe380b7bd | balanceOfToken(address,uint256) | view |
0x0d5a621b | childContractByIndex(uint256,uint256) | view |
0x051847d5 | childTokenByIndex(address,uint256,uint256) | view |
0x160b01a1 | childTokenByIndex(uint256,address,uint256) | view |
0x627c81ff | erc20ContractByIndex(uint256,uint256) | view |
0xba6b5f96 | getChild(address,uint256,address,uint256) | |
0x07cff6f2 | getERC20(address,uint256,address,uint256) | |
0x150b7a02 | onERC721Received(address,address,uint256,bytes) | |
0xeadb80b8 | ownerOfChild(address,uint256) | view |
0x43a61a8e | rootOwnerOf(uint256) | view |
0xed81cdda | rootOwnerOfChild(address,uint256) | view |
0x8d81f51e | safeTransferChild(uint256,address,address,uint256,bytes) | |
0x1d98f3c5 | safeTransferChild(uint256,address,address,uint256) | |
0xc0ee0b8a | tokenFallback(address,uint256,bytes) | |
0x89885a59 | tokenOwnerOf(uint256) | view |
0x8da7d0b5 | totalChildContracts(uint256) | view |
0x8600f2ec | totalChildTokens(address,uint256) | view |
0x35b21ceb | totalChildTokens(uint256,address) | view |
0xa7811732 | totalERC20Contracts(uint256) | view |
0xc0a899f2 | transferAsChild(address,uint256,address,uint256,uint256,bytes) | |
0x737bf30f | transferAsChild(address,uint256,address,uint256,uint256) | |
0xbef44f18 | transferChild(uint256,address,address,uint256) | |
0x08937f62 | transferChildToParent(uint256,address,uint256,address,uint256,bytes) | |
0x830ef41b | transferERC20(uint256,address,address,uint256) | |
0xd49d1bac | transferERC223(uint256,address,address,uint256,bytes) | |
0x5e3e2687 | transferFromParent(address,uint256,address,uint256,bytes) | |
0x5438496f | transferFromParent(address,uint256,address,uint256) | |
0xc9b8085a | transferFromParentERC223(address,uint256,address,uint256,bytes) | |
0xf50acfa0 | transferToParent(address,address,uint256,uint256,bytes) | |
0x3b6ca44c | transferToParent(address,address,uint256,uint256) |
⚖️ Compare with
Parsed from the canonical specification · discussion