ERC-6492: Signatures for Pre-deployed Smart Accounts
ERC-6492 solves a niche but painful problem with smart accounts: a user can have a "counterfactual" smart account address (deterministic from CREATE2) that they haven't actually deployed yet. They want to sign a marketplace listing or DAO vote before spending gas to deploy. ERC-6492 wraps signatures with (factory, factoryCalldata, signature) so a verifier can check the signature using the yet-to-be-deployed account's eventual code.
Mechanics
A 6492-wrapped signature appended with 0x6492649264926492649264926492649264926492649264926492649264926492 magic suffix tells the verifier:
- If the contract isn't deployed yet, deploy it (via
factory.factoryCalldata). - Then validate via ERC-1271's
isValidSignature. - If still invalid, treat as standard ECDSA signature.
Neo Equivalent
Neo doesn't have counterfactual deploys: a contract address is the script hash, and you must deploy bytecode before you can be signed-for. But a Neo user can sign a listing as their EOA (which always exists at its public-key-derived hash), then upgrade to a smart-contract account later via NEP-30 verify. The C# tab shows how a verifier handles both cases without the wrapping ceremony.
Live on Neo TestNet
Both implementations are deployed on Neo N3 TestNet (network magic 894710606).
| Implementation | Contract Hash | Deploy Tx |
|---|---|---|
Solidity (neo-solc) | 0x95170df70a3c425fdaad9795f77a68430ac659d9 | (reused — see 0x95170df70a3c425fdaad9795f77a68430ac659d9) |
Neo C# (nccs) | 0x7dd2cd08072ab383cf7152bf5ed734d7d240bfc9 | (reused — see 0x7dd2cd08072ab383cf7152bf5ed734d7d240bfc9) |
Cross-implementation invocations match on the marker-verification counter. Source pairs under docs/standards-mirror/deployments/erc-6492/.
