What is Create5? A Guide to Safe, Predictable, Cross-Chain Smart Contract Deployment
We’re excited to announce Create5, a new smart contract deployment primitive we built in our spare time to make cross-chain deployments safer and more predictable!
In the world of EVM chains, when you deploy a smart contract, the blockchain assigns it an address. With the original CREATE method, that address is computed from the deployer’s account and their transaction count (the “nonce”). You can precompute addresses for any nonce, but keeping the same address across chains requires using the same exact nonce everywhere. It’s a fragile system, because if any transaction happens, the nonce increases, and breaks the “same address across all chains” policy. This makes coordination difficult for use cases like pre-funding contracts, setting up state channels, or deploying contracts consistently across multiple chains.
Over the years, Ethereum introduced CREATE2 and then community-built CREATE3 to improve predictability.
Ethereum’s CREATE2 made contract addresses predictable by using a formula based on a constant, a salt, and the contract’s init code. Because the deployer’s wallet address no longer mattered, developers could reuse the same deployer and still get deterministic results. This enabled pre-funded and counterfactual contracts, and even made vanity addresses simpler: instead of searching for special wallets and pre-funding them, developers can reuse the same deployer and vary the salt to generate addresses with patterns like 0x8888… . The drawback was that addresses still depended on the init code, so even small differences in constructor arguments produced different addresses—limiting its usefulness for cross-chain deployments where customization is often required.
The community then developed CREATE3, which removed the dependency on init code. With CREATE3, addresses are derived only from the factory’s address and a salt. This makes customization easy: the same salt always maps to the same address across chains, regardless of constructor arguments, making cross-chain deployments consistent and reliable.
But this still left important gaps.
We developed Create5 to close them. It brings domain-scoped, permissioned deployment to EVM chains, ensuring that contracts can be safely and consistently deployed across chains without risk of collisions or hijacks.
Why Create5?
Cross-chain applications require contracts to live at predictable addresses. With plain CREATE2 or CREATE3 factories, salts are global and unprotected:
If different teams reuse the same salt, they can accidentally collide.
If a salt is public (say, from a mainnet deployment), anyone can front-run or squat it on a new chain.
Without ownership or operators, large teams can’t delegate deployments safely.
No built-in mechanism exists for coordinating large, multi-chain projects.
Create5 solves these problems by introducing domains and permissions, while keeping the deterministic, chain-agnostic address generation of CREATE3.
How Create5 Works
At its core, Create5 is a factory built on top of the official CREATE3 library. Like CREATE3, it makes addresses independent of the contract’s init code.
That means you can deploy the same contract at the same address across chains, even if constructor arguments differ (for example, chain IDs, oracles, or other chain-specific settings).
Create5 adds two key innovations:
Domains
A domain is defined as:
domain = keccak256(abi.encodePacked(owner, tag))
Every deployment uses a salt derived from this domain, namespacing addresses per owner. This cleanly isolates teams and prevents collisions.
Permissions
Only the domain’s owner—or authorized operators—can deploy contracts under that domain. This ensures salts cannot be hijacked, even if they’re publicly known from earlier deployments.
Use Cases Enabled by Create5
Cross-chain deployments: The same contract can be deployed on Ethereum, Optimism, and Arbitrum at the exact same address, even with different constructor arguments.
Team coordination: Large protocols can safely delegate deployment rights to operators without fear of collisions.
Security: Prevents malicious front-running, where attackers deploy at your intended address with your salt on a new chain.
User onboarding: Contracts can be pre-funded or pre-agreed before they’re even deployed, with guaranteed addresses.
Summary
From CREATE2’s predictable addresses, to CREATE3’s chain-agnostic deployments, and now to Create5’s domain-scoped, permissioned factory, the evolution of smart contract deployment has unlocked new levels of security and coordination.
Create5 ensures every team can deploy safely, every address can be consistent across chains, and every deployment can be protected from collision or hijack. It’s the missing piece for robust cross-chain contract systems—and we’re proud to release it as part of our ongoing effort to push the EVM forward.


