EIP-1014: Deterministic Deployment via CREATE2
CREATE2(value, salt, code) deploys a contract at a deterministic address derived from (deployer, salt, codehash). Use cases: counterfactual deployment (you know the address before deploy), state channels, factory patterns, vanity addresses.
Address Formula
address = keccak256(0xff ++ deployer ++ salt ++ keccak256(initcode))[12:]Neo Equivalent
Neo's ContractManagement.Deploy(nef, manifest, data) produces a script hash that's deterministic in the bytecode and the deployer's identity — same property, simpler formula.
scriptHash = Hash160(deployer || nef.script || manifest.name)The deployer can pre-compute the script hash before deploy and use it in counterfactual flows. The Neo C# tab shows a factory pattern.
Live on Neo TestNet
Both implementations are deployed on Neo N3 TestNet (network magic 894710606).
| Implementation | Contract Hash | Deploy Tx |
|---|---|---|
Solidity (neo-solc) | 0xc267a2eaa32edae5ac95d484a69e77653fe10b0e | (reused — see 0xc267a2eaa32edae5ac95d484a69e77653fe10b0e) |
Neo C# (nccs) | 0x462113ca40c8a41597165ccbeada2e70e57764f8 | (reused — see 0x462113ca40c8a41597165ccbeada2e70e57764f8) |
Cross-implementation invocations match on deployCount. Source pairs under docs/standards-mirror/deployments/erc-1014/.
