web3wagmi
← All standards

⚠️ Errors in the published specifications

Many specifications state their own ERC-165 interface id. Every such claim is checked against the id computed from the interface the spec declares. These 17 do not match, and in each case the published value is the one that is wrong.

ProposalInterfaceComputedAssertedWhy the parser is right
ERC-998ERC998ERC20BottomUp0x3617a1cb0xffafa991Asserted value is the XOR of only 4 of the 5 declared functions; it predates transferFromParentERC223(address,uint256,address,uint256,bytes).
ERC-1261IERC12610xf87798780x1d8362cfMatches no subset of the 15 declared selectors, with or without the ERC-173/ERC-165 parents. The comment predates several signature edits.
ERC-1417IPoll0xd19836980x4fad898bAsserted value is the XOR minus getVoterBaseDenominator() (0x9e35bf13), which was added to the body after the comment was written.
ERC-4353IERC721Staked0x5a459ed40x3a3d855fSingle-function interface, so the id is stakedAmount(uint256)'s selector by definition. The asserted value matches no signature in any upstream revision.
ERC-4393ITipToken0xe47a70220x985a3267The spec's own normative prose states 0xe47a7022, which agrees with the parser. The divergent value is a stray note inside an event's NatSpec.
ERC-5007IERC50070x7a0cdf920xf140be0dThe int64 to uint64 edit was to return types, which cannot change a selector, yet the comment was rewritten. The file's sibling IERC5007Composable still matches the parser exactly.
ERC-5496IERC54960xc906a5cb0x076e1bbbAsserted value is reproducible only with setPrivilege(uint256,uint256,address,uint64); the body widened that parameter to uint256.
ERC-5635IERC5635DNFT0xbda946360xd584841cThe comment states a non-ERC-165 derivation, bytes4(keccak256("IERC5635DNFT{}")), which is also numerically wrong: that expression yields 0x37c007c8.
ERC-5635IERC5635Registry0x592133340xb5065e9fSame name-hash formula used file-wide; bytes4(keccak256("IERC5635Registry{}")) is 0xc4859425, so the asserted value is wrong on its own terms.
ERC-5700IERC1155Bindable0xc6f446420xd0d555c6Matches no subset, no parent combination and no drafted variant. The corresponding prose literal 0xd0d55c6 is only 7 hex digits, so it is not a valid bytes4.
ERC-6059IERC60590xf71e99d20x42b0e56fAsserted value requires addChild(uint256,uint256,bytes) and nestTransferFrom(...,bytes); the published body declares neither.
ERC-6353IERC20charity0xaceb828b0x557512b6Never matched the body in any published revision; exhaustive search over the 10 declared selectors plus ERC-20 and ERC-165 finds no combination producing it.
ERC-7204IERC72040x4b090fea0xf73edcdaThe asserted value appears exactly once in the entire corpus and matches no subset of the 5 declared selectors, with or without ERC-165.
ERC-7401IERC70590x14a07a0c0x42b0e56fERC-7401 half-applied its own stated fix: it restored bytes data on nestTransferFrom but left addChild(uint256,uint256), which the asserted id requires with bytes.
ERC-7561IERC75610x304ad1f20xc1b31357Asserted value is a copy-paste of ERC-7196's id, the XOR of totalSupply(), balanceOf(address) and transfer(address,uint256). ERC-7561 declares no transfer(address,uint256).
ERC-5791IERC57910x83e705090x4901df9fAsserted value is the XOR of tokenIdFor(address), isChipSignatureForToken(uint256,bytes,bytes) and the two removed transferTokenWithChip overloads, so it predates their replacement by transferToken(address,address,bytes,uint256,bool,bytes). Found by exhaustive subset search; no combination with ERC-721 or ERC-165 reproduces it.
ERC-7604IERC1155Permit0x29011db40x7409106dNo subset of the three declared selectors, alone or combined with the ERC-165, ERC-1155, ERC-5216, ERC-721 and ERC-1271 parents, reproduces the asserted value; nor does any non-canonical hashing of the signatures. The value appears in no other file in the corpus, so it is a hand-miscomputed literal.

Each was verified by re-deriving the id from the signatures the spec declares and, where the cause was not obvious, by exhaustive subset search over the declared selectors.