Notice: Polkadot has migrated to AssetHub. Balances, data, referenda, and other on-chain activity has moved to AssetHub.Learn more
Deploy Universal Deterministic Deployment Proxy (CREATE2 Factory) on Asset Hub
Summary
This proposal requests the deployment of the Universal Deterministic Deployment Proxy (CREATE2 factory) at canonical address 0x4e59b44847b379578588920ca78fbf26c0b4956c on Polkadot Asset Hub mainnet.
Problem Statement
The CREATE2 deterministic deployment proxy is critical infrastructure for Ethereum-compatible chains, enabling protocols like Uniswap, Safe, and others to deploy contracts at the same addresses across all EVM chains. However, it cannot be deployed on Asset Hub through normal means due to a gas price incompatibility.
Technical Details:
The way to deploy this contract on a new chain is to submit a well-known presigned tx,
the tx includes a high gas price of 100 gwei but it's still not high enough to work on Asset Hub
- The proxy's deployment uses a pre-signed transaction with a hardcoded gas price of 100 gwei
- Polkadot Asset Hub enforces a minimum gas price of 1000 gwei (10x higher)
- The transaction signature cryptographically commits to all parameters including gas price
- Modifying the gas price of the presigned transaction would result in different contract/deployer addresses, defeating the purpose of universal deterministic deployment
Proposed Solution
Use OpenGov to execute a privileged utility_dispatchAs using the canonical create2 proxy deployer address 0x3fab184622dc19b6109349b94811493bf2a45362 as the origin of this call. The polkadot-sdk equivalent of this address is 12SUqsDfLk4k5LS7XWi6fC3jC5xeT8sFivVY776NGm26dXr4. The call executes instantiate_with_code on pallet-revive instantiating the CREATE2 proxy contract and ensuring we maintain the deterministic deployment address 0x4e59b44847b379578588920ca78fbf26c0b4956c.
This call been successfully executed on paseo asset hub : https://assethub-paseo.subscan.io/extrinsic/4724501-2
Precedent
This approach has been successfully tested on Paseo Assethub using sudo privileges, confirming:
- The contract deploys to the correct canonical address
0x4e59b44847b379578588920ca78fbf26c0b4956c - The CREATE2 mechanics work correctly in pallet-revive
- See: https://polkadot.testnet.routescan.io/address/0x4e59b44847b379578588920ca78fbf26c0b4956c
Benefits
- Protocol Compatibility: Enables Uniswap, Safe, and other major protocols to deploy at their canonical addresses on Asset Hub
- Cross-Chain Address Parity: Contracts can maintain the same addresses across Ethereum, L2s, and Polkadot
- Developer Experience: Standard tooling (Foundry, Hardhat plugins) will work as expected
- Ecosystem Growth: Removes a critical blocker for EVM developers building on Polkadot
Impact
- No Risk: This is a well-tested, standard contract deployed on hundreds of EVM chains
- One-Time Action: Once deployed, no further governance intervention needed
- High Value: Unblocks an entire class of protocol deployments and developer tooling
References
- Issue: https://github.com/paritytech/contract-issues/issues/263
- Deterministic Deployment Proxy: https://github.com/Arachnid/deterministic-deployment-proxy
- EIP-1014 (CREATE2): https://eips.ethereum.org/EIPS/eip-1014
Proposal Failed
Comments (0)