Skip to content

Interface Detection: EIP-165 vs Manifest

Back to Standards and Contracts

Overview

Ethereum and Neo take fundamentally different approaches to interface detection:

EVM (EIP-165)Neo (Manifest)
MechanismRuntime query via supportsInterface(bytes4)Static manifest JSON
Query methodstaticcall to contractContractManagement.getContract()
Gas costPer-query gas costFree (manifest is metadata)
MaintenanceManual supportsInterface() implementationCompiler auto-populates

No supportsInterface() function is needed on Neo. The compiler automatically populates the supportedstandards array based on method signature analysis.

EIP-165 SelectorERC StandardNeo Manifest Entry
0x80ac58cdERC-721"NEP-11"
0x36372b07ERC-20"NEP-17"
0x2a55205aERC-2981"NEP-24"

supportsInterface() Is Unnecessary

If your contract includes supportsInterface(bytes4), the compiler emits warning W106:

warning[W106]: function 'supportsInterface' (EIP-165) is unnecessary on Neo N3.
  Neo uses the manifest 'supportedstandards' array for interface detection,
  which the compiler populates automatically.
  = suggestion: Remove — Neo N3 uses manifest-based interface discovery

MIT Licensed