ERC-165: Standard Interface Detection
ERC-165 lets a contract advertise which interfaces it implements via a 4-byte ID derived from the XOR of function selectors. Wallets call supportsInterface(bytes4) to detect ERC-721, ERC-2981, ERC-1155 compliance.
Why It's Needed on Ethereum
Ethereum has no concept of contract metadata. The bytecode just is the bytecode. ERC-165 invented a runtime convention: every interface has an ID, and contracts must implement a registry function. Detection costs at least one external call.
Neo Equivalent: Manifest supportedstandards
Neo contracts deploy with a manifest — a JSON document committed alongside the NEF bytecode. The manifest includes a supportedstandards array that wallets and explorers read directly. No runtime call. No gas. The compiler populates it automatically based on method signature analysis.
Live on Neo TestNet
Both implementations are deployed on Neo N3 TestNet (network magic 894710606).
| Implementation | Contract Hash | Deploy Tx |
|---|---|---|
Solidity (neo-solc) | 0x2b5db552d1c23a43f51a0ea50765e4a1a7a051e6 | (reused — see 0x2b5db552d1c23a43f51a0ea50765e4a1a7a051e6) |
Neo C# (nccs) | 0xa400b6cb20159fb3140798401c41edcb06e00f49 | (reused — see 0xa400b6cb20159fb3140798401c41edcb06e00f49) |
Cross-implementation invocations match on supportsInterface. Source pairs under docs/standards-mirror/deployments/erc-165/.
