Skip to content

ERC / EIP ↔ Neo Standards Mirror

Most application-level Ethereum standards have a Neo N3 counterpart — sometimes a one-to-one NEP, sometimes a stronger native primitive that makes the EIP unnecessary, and sometimes a migration pattern with known semantic differences. This module catalogs the checked-in mirror set: pick a category below, then flip between the ERC/EIP detail, the Solidity implementation, and the equivalent Neo C# implementation.

Use the mirror as a migration map, then validate production behavior against the deployment results and the Solidity support matrix.

Categories

Live on TestNet

The frontend catalog currently exposes 129 ERC/EIP mapping pages across the five categories above. Forty-seven standards in this mirror have Solidity and Neo C# contract pairs deployed on Neo N3 TestNet (network magic 894710606). The same invocation matrix runs against the Solidity (compiled with neo-solc) and the Neo C# (compiled with nccs) versions, recording pass/fail assertion results for both implementations.

Snapshot status

The checked-in TestNet snapshot is a validation matrix, not an all-green parity certification. The latest checked-in result records 147 / 183 assertions passing; failures and repro details are listed in deployments/RESULTS.md.

StandardSolidityNeo C#
ERC-20 ↔ NEP-17d76434af…f961f3a9b41…b43a
ERC-165 InterfaceDetector2b5db552…1e6a400b6cb…f49
ERC-721 ↔ NEP-1148b5f8f5…7aa15c664d5…baf
ERC-777 Hookedd0f1fb49…7d0d64d453…849
ERC-1014 DeterministicFactoryc267a2ea…b0e462113ca…4f8
ERC-1155 Multi-Tokenf1d7867c…317ef019e6f…6bd
ERC-2309 BatchMint20262b3b…9002e157ce2…918
ERC-2470 SingletonFactory625c19cb…012602d11ec…df5
ERC-2981 ↔ NEP-24ade57dfd…234bf3fe7eb…5e1
ERC-3525 Bondd0fd56da…2c6fcfde62a…6c
ERC-4906 DynamicMetadataNFT86f4d37e…7933429da47…061
ERC-5114 Achievement91e34b16…41fd9d32f5f…039
ERC-5192 Soulbound1b75ecb9…0347081fcf3…2b
ERC-5267 DomainExposer1dd8a392…b6cdcfa0661…877
ERC-5484 ConsensualSBT8a9e1835…95102317b71…ac
ERC-6147 GuardedNFTaf32605e…64f274c031d…9df
ERC-7201 NamespacedStoragebb2553c7…f320932ad78…05d
ERC-7818 Expirablefcaaf98f…64dcb1b0441…6e0
ERC-173 Ownable19977aea…be4ce89aec2…459
ERC-1271 MultiSig88eec008…de788079ecd…682
ERC-1820 Registry02704624…ee48f36ff27…59d
ERC-1056 DIDdd6d4a48…f50d13806f6…b30
ERC-1967 Upgradeable48f6d58a…245096f01e4…976
ERC-2535 Diamond26b6f333…5271b3c602c…dcf
ERC-2612 PermitTokenedd521fd…aa0b451279f…70c
ERC-2771 Forwarder6653a8da…ed91463ad54…0a
ERC-3156 FlashLenderb7d5cd14…7eca82c8142…84b
ERC-4337 SmartAccountaa11f9ef…a56e26da230…09f
ERC-4494 PermitNFTe683fa29…b66c7056410…257
ERC-4626 Vaultfaf678fd…0f0e515ad2…0c5
ERC-5805 Votingb87fa58c…1101d33818b…692
ERC-6372 Clocke3c55758…42beb454a6b…335
ERC-6492 PreDeploySig95170df7…9d97dd2cd08…fc9
ERC-7540 AsyncVaultd8838ba1…b41c2137b33…26e
ERC-7575 MultiAssetVault985a293c…6b1d85564c8…ffc
ERC-7579 ModularAccount5e6edfc0…528cbd2e64f…f86
EIP-191 PersonalSign64d3b4d2…eb1d06071f8…14e
EIP-712 TypedData8e501310…fdd38e8f069…c9a
EIP-1153 TransientGuard7e4e4812…a66e67e6815…7bf
EIP-2098 CompactSigd63ea34d…1d9b2701b6d…eee
EIP-2718 TypedTx4e2300b8…bf6b600afb3…cb8
EIP-2930 AccessList02a174b4…2c33570e80f…6ad
EIP-3198 FeeAware8ed358ae…0a032b98cb2…630
EIP-3855 Push052b86044…e4d6704d604…9f6
EIP-3860 InitcodeSize5d95f5db…728b58a104c…337
EIP-6780 SelfDestruct67a59c17…9308acf52e9…f8eb
EIP-7702 SetCodeb156b370…751158d0d7f…bfd

Checked-in TestNet snapshot: 147 / 183 assertions pass across 47 deployed pairs. The full pass/fail matrix is in results.json and RESULTS.md. The deploy runner now exits non-zero when any compile, deploy, liveness, or assertion check fails.

What about the other catalog entries?

The checked-in catalog includes deployable demos for most entries. A small set remains outside the live TestNet pair matrix because the Ethereum mechanism is either protocol-specific, superseded by another EIP, or not yet part of the deployment snapshot.

Eighty-two catalog entries are not in the live TestNet pair matrix:

  • EIP-1559 (fee-market base-fee auction) — Neo doesn't auction fees.
  • EIP-4844 (blob transactions) — Neo doesn't have blobs.
  • EIP-3074 (AUTH/AUTHCALL) — superseded by EIP-7702 and covered by Neo witness scopes.
  • ERC-6909 (minimal multi-token) — documented as a direct Neo C# port but not part of the checked-in deployment snapshot.
  • ERC-1363 (payable token) — built into NEP-17's onNEP17Payment callback; no standalone deploy needed.
  • ERC-3009 (transfer with authorization) — subsumed by Neo's witness scopes; no separate contract required.
  • ERC-6551 (token bound accounts) — registry-pattern catalog entry; deploy targets a per-collection setup rather than a single fixture.
  • ERC-1167 (minimal proxy clones) — registry-pattern catalog entry; cloning is a deploy-time operation rather than a single fixture.
  • ERC-4361 (Sign-In with Ethereum) — primarily an off-chain server convention; on-chain verifier is application-specific.
  • ERC-3668 (CCIP Read) — subsumed by Neo's native Oracle service; no on-chain mirror contract needed.
  • ERC-7528 (native asset address) — Neo native assets (NEO, GAS) already have well-known contract hashes; nothing to deploy.
  • ERC-7656 (generalised contract-linked services) — registry-pattern catalog entry, like ERC-6551.
  • ERC-3448 (MetaProxy Standard) — registry-pattern catalog entry; same deploy-time shape as ERC-1167.
  • ERC-7535 (native asset vault) — collapses to ERC-4626 with asset = NEO/GAS; covered by the existing ERC-4626 deployment.
  • ERC-4907 (rental NFT) — NEP-11 storage extension; no separate fixture needed beyond a port-side example.
  • ERC-6093 (custom token errors) — vocabulary convention; no contract to deploy.
  • ERC-7786 (cross-chain messaging gateway) — bridge-adapter pattern; per-bridge deploy depends on the chosen transport.
  • ERC-5313 (light contract ownership) — view-only convention; satisfied by every existing contract that exposes getOwner.
  • ERC-5564 (stealth addresses) — announcer contract is small; deploy depends on a wallet-SDK rollout to be useful.
  • ERC-6066 (NFT signature validation) — NEP-11 storage extension scoped per tokenId; no separate fixture beyond an example NFT.
  • ERC-3643 (T-REX regulated token) — multi-contract framework (token + identity registry + compliance modules); per-deployment shape rather than a single fixture.
  • ERC-5202 (blueprint contract format) — Neo's deploy primitive already separates blob storage from execution; no magic-prefix container needed.
  • ERC-7944 (async cancellation for ERC-7540) — extension of ERC-7540's request queue; covered by the existing ERC-7540 deployment plus the additional cancel flow.
  • ERC-8042 (diamond storage) — storage convention for ERC-2535; covered by the existing ERC-2535 deployment plus storage-prefix discipline.
  • ERC-5679 (token mint/burn) — selector convention; satisfied by every NEP-17 / NEP-11 contract that exposes a Mint wrapper.
  • ERC-2135 (consumable interface) — NEP-11 storage extension; no separate fixture needed.
  • ERC-7160 (multi-metadata NFT) — NEP-11 storage extension; no separate fixture needed.
  • ERC-3475 (abstract storage bonds) — port-side primitive; deploy is per-issuance configuration.
  • ERC-7092 (financial bonds) — port-side primitive; deploy is per-bond configuration.
  • ERC-6982 (default lockable tokens) — NEP-11 storage extension; covered by per-collection deploy.
  • ERC-7677 (paymaster web service) — off-chain JSON-RPC convention; on-chain footprint is optional escrow contract.
  • ERC-7144 (ERC-20 with transaction validation) — NEP-17 transfer override + per-policy validator; per-deployment shape.
  • ERC-7943 (Universal RWA Interface) — capability-flag + compliance umbrella; per-deployment shape rather than a single fixture.
  • ERC-5006 (Rental NFT user extension for ERC-1155) — NEP-11 divisible + record storage; per-collection shape.
  • ERC-2767 (contract ownership governance) — interface convention; satisfied whenever a governance contract owns the governed contract.
  • ERC-7758 (modern transfer-with-authorization) — same Neo answer as ERC-3009; covered by witness scopes.
  • ERC-5169 (client script URI) — token-metadata extension; one method addition to any NEP-11 / NEP-17 contract.
  • ERC-5375 (NFT author and consent) — NEP-11 metadata extension; per-collection configuration shape.
  • ERC-5023 (shareable NFT) — NEP-11 multi-holder extension; per-collection shape.
  • ERC-7066 (lockable extension) — NEP-11 storage extension; covered by per-collection deploy.
  • ERC-7432 (NFT roles) — NEP-11 storage extension; per-collection role conventions.
  • ERC-6105 (no-intermediary trading) — NEP-11 listing/swap extension; per-collection shape.
  • ERC-5615 (ERC-1155 supply extension) — NEP-11 divisible storage extension; covered by per-collection deploy.
  • ERC-5773 (multi-asset tokens) — NEP-11 storage extension; per-collection shape.
  • ERC-6059 (nestable NFTs) — NEP-11 parent-child storage extension; per-collection shape.
  • ERC-4519 (physical-asset NFTs) — NEP-11 + device-pubkey extension; per-device deploy depending on physical batch.
  • ERC-5570 (digital receipt NFT) — NEP-11 metadata extension; per-merchant deploy shape.
  • ERC-6150 (hierarchical NFTs) — NEP-11 storage extension; per-collection shape.
  • ERC-6220 (composable equippable parts) — NEP-11 + catalog extension; per-collection shape.
  • ERC-5380 (entitlement extension) — NEP-11 storage extension; per-collection shape.
  • ERC-5489 (NFT hyperlink) — NEP-11 storage extension; per-collection shape.
  • ERC-6672 (multi-redeemable NFTs) — NEP-11 storage extension; per-collection / per-operator shape.
  • ERC-7634 (limited transfer count) — NEP-11 storage extension; per-collection shape.
  • ERC-7007 (AI-generated content) — NEP-11 attestation extension; per-collection / per-model shape.
  • ERC-5725 (vesting NFT) — NEP-11 + NEP-17 underlying-token mechanics; per-deployment configuration.
  • ERC-6454 (transferable detection) — NEP-11 view extension; satisfied by every contract that exposes IsTransferable.
  • ERC-7715 (AA permission grants) — Witness-scope-based authorisation; per-account permission module deploy.
  • ERC-5507 (refundable NFTs) — per-token escrow + refund window; per-collection deploy.
  • ERC-5528 (refundable ERC-20) — per-buyer escrow + refund window; per-deployment shape.
  • ERC-5521 (referable NFT) — citation-graph extension; per-collection shape.
  • ERC-5646 (state fingerprint) — view extension; satisfied by every contract that hashes its mutable state.
  • ERC-5585 (NFT authorization rights) — per-(tokenId, rights) storage extension; per-collection shape.
  • ERC-6239 (semantic SBT) — NEP-11 + RDF claims storage; per-collection shape.
  • ERC-7053 (digital media indexing) — event-emission convention; no per-fixture deploy needed.
  • ERC-7405 (modular wallet) — per-account module dispatch; per-wallet deploy.
  • ERC-7585 (cross-chain SIWE) — off-chain library convention; on-chain verifier is application-specific.
  • ERC-6381 (NFT emote repository) — standalone singleton; one global deploy serves all NEP-11s.
  • ERC-7857 (AI agent NFT) — NEP-11 + encrypted-metadata extension; per-collection / per-service deploy.
  • ERC-7231 (identity-aggregated NFT) — NEP-11 + Merkle-root extension; per-collection shape.
  • ERC-7531 (staked NFT recognition) — staking-contract view; per-staking-contract deploy.
  • ERC-5216 (ERC-1155 allowance) — NEP-11 divisible storage extension; per-collection shape.
  • ERC-5008 (NFT nonce) — NEP-11 storage extension; per-collection shape.
  • ERC-4910 (royalty-bearing NFTs) — NEP-11 + NEP-24 escrow extension; per-collection shape.
  • ERC-5732 (commit interface) — standalone commit-reveal contract; one global deploy serves any consumer.
  • ERC-4400 (NFT consumable, lite) — NEP-11 storage extension; per-collection shape.
  • ERC-5750 (method extensibility) — convention satisfied by every NEP-17 / NEP-11 (already four-parameter shape).
  • ERC-5269 (ERC detection) — manifest supportedstandards already provides this natively.
  • ERC-5453 (endorsement / generalised permit) — native witness scopes already provide per-call signature auth.
  • ERC-5496 (multi-privilege NFT) — NEP-11 storage extension; per-collection shape.
  • ERC-6357 (multi-delegatecall) — Neo's transaction script natively supports multi-invoke without contract changes.
  • ERC-1046 (fungible tokenURI) — NEP-17 view convention; per-deployment metadata pointer.
  • ERC-7746 (security middleware hooks) — pre/post hook chain pattern; per-deployment shape.

The other protocol entries in the table have live demos exposing their Neo counterparts, such as transaction version, witness scopes, PUSH0, NEF size, ContractManagement.Destroy, and NEP-30 verify.

Source pairs, deploy script, full results JSON, and instructions to reproduce live under docs/standards-mirror/deployments/.

How to Read This

Each entry shows three views in a tabbed nav bar:

TabWhat it shows
ERC / EIP DetailThe standard's purpose, interface, motivation, and the corresponding Neo mechanism.
Solidity ImplementationA reference Solidity implementation as deployed on Ethereum.
Neo C# ImplementationThe idiomatic Neo equivalent — either a direct NEP, a composition pattern, or an explanation of why the EIP is a no-op on Neo because the protocol already covers it.

How To Read The Pills

Each entry carries a parity pill that summarizes the mirror relationship:

PillMeaning
NEP-XX (green)Direct NEP equivalent. Same interface shape, sometimes simpler.
Native (blue)Subsumed by Neo's protocol primitives. No NEP or contract needed.
Pattern (orange)Composition pattern in the Neo devpack — no dedicated NEP, but a clear recipe.

Module Internals

Each category page registers its entries with a shared <StandardsMirror> Vue component that drives the master/detail UI. All content is plain Markdown — VitePress's bundled Shiki highlights every Solidity and C# block, and the search index covers everything.

To add another standard, append a <StandardEntry> block to the appropriate category page. The page automatically picks it up.

For deeper reference on the Neo standards behind the mirrors, see Standards and Contracts and devpack/standards/STANDARDS_MAPPING.md.

MIT Licensed