// the find
pcaversaccio/createx
Factory smart contract to make easier and safer usage of the `CREATE` and `CREATE2` EVM opcodes as well as of `CREATE3`-based (i.e. without an initcode factor) contract creations.
CreateX is a singleton factory contract deployed at the same address across 80+ EVM chains, giving you CREATE, CREATE2, and CREATE3 deployments plus EIP-1167 clone creation from one audited address. It's aimed at protocol teams who need deterministic cross-chain contract addresses without rolling their own factory. The salt encoding scheme lets you bake in permissioned-deployer and cross-chain replay protection without extra contracts.
The salt guard mechanism is genuinely well-designed — encoding deployer address and redeploy protection flags into the salt bytes means you get access control and cross-chain safety without any state storage or owner variables. 100% test coverage backed by Foundry property-based tests and invariant suites, plus a Slither config, is a higher bar than most infra contracts hit. The presigned deployment transactions let you deploy to a new chain at the same address without needing a privileged key, using the Nick's method trick. Being already deployed on 80+ chains including most testnets means you can use it today without a deployment ceremony.
CREATE3 is still an EIP pull request, not a finalized standard — the implementation here uses a two-step proxy trick that works but adds gas overhead versus native opcode support if that ever ships. The reentrancy note on every AndInit function is a real gotcha: the docs wave it away as 'use-case agnostic' but in practice this is where people will shoot themselves, and there's no optional mutex path. The pseudo-random salt fallback (when you call the no-salt overloads) uses block properties, which is weak enough to be predictable by validators — anyone relying on it for collision resistance is making a mistake the docs warn about but don't prevent. The AGPL-3.0 license is a practical barrier for commercial protocol teams who might otherwise just drop this in.