Overview
Important
This is the op-deployer release for op-contracts/v8.0.0 (Upgrade 20). Use it to deploy new chains with op-contracts/v8.0.0. It contains a new staged prepare / prestate / continue deployment workflow, Super Root dispute games for new chains, Karst at genesis by default, more reliable gas estimation, and several breaking command and flag removals.
Breaking changes
upgradecommand removed (#21945).op-deployer upgradeand all its version subcommands (v2.0.0throughv6.0.0-rc.2, andembedded) are gone, and op-deployer no longer upgrades existing chains from any earlier op-contracts release.manage migratecommand removed (#21929). The super-root migration command and its flags (--starting-respected-game-type,--dispute-game-type,--dispute-game-enabledand others) are gone, with no replacement in op-deployer.- Contract verification is on by default;
--verifyremoved (#21947).apply,bootstrap superchainandbootstrap implementationsnow verify contracts unless--no-verify(DEPLOYER_NO_VERIFY) is set. Remove--verify/DEPLOYER_VERIFYfrom scripts — op-deployer rejects it as unknown. The--verifierdefault changes frometherscantoetherscan,blockscout, and a verification failure is now logged with a retry command instead of failing a successful deployment. apply --validateandop-validatorremoved (#21308). Remove--validate/DEPLOYER_VALIDATEand runop-deployer validate autoafterapplyinstead.--op-program-svc-urlremoved (#21299). Remove--op-program-svc-url/DEPLOYER_OP_PROGRAM_SVC_URL. op-deployer no longer fetches prestates from an op-program service, andstate.jsonno longer carriesprestateManifest; existing state files still load. For permissionless games, record the prestate with the newprestatecommand.- New chains deploy Super Root dispute games (#21689, #22128, #21720). The default
respectedGameTypechanges from1(PERMISSIONED_CANNON) to5(SUPER_PERMISSIONED). An intent that setsrespectedGameType = 1now fails withDeployOPChain: dispute game type does not match OPCM super root mode; remove the override or set it to5. A new permissionless chain can start onSUPER_CANNON_KONA(9) through theprepareworkflow, withSUPER_PERMISSIONEDregistered as its fallback. manage add-game-type-v2config for Super Root games (#20641, #20363). Game type5(SUPER_PERMISSIONED) now takessuperPermissionedDisputeGameConfig: {proposer}instead ofpermissionedDisputeGameConfig, and game type4(SUPER_CANNON) is rejected.- Interop hardfork renamed to Lagoon (#21105, #21370). The intent override
l2GenesisInteropTimeOffsetis nowl2GenesisLagoonTimeOffset; the old key is silently ignored, so rename it in any intent that schedules the fork. The generated rollup config keyinterop_timebecomeslagoon_time, and the L2 genesis keyinteropTimebecomeslagoonTime.
Other changes
Staged deployment workflow
- New
prepare,prestateandcontinuecommands split a chain deployment into reviewable stages (#21560, #21600, #21611, #21897, #21963, #21974, #22082, #22337):preparepins an existing OPCM (opcmAddressandsuperchainConfigProxyare required in the intent), anchors each chain at the L1safeblock, dry-runs the deployment against an L1 fork and records the predicted addresses, L2 genesis and starting anchor root instate.json. It sends no transactions.--genesis-time-offset(DEPLOYER_GENESIS_TIME_OFFSET, default 21600s, minimum 3600s) sets the L2 genesis time after the anchor block.inspect genesisandinspect rollupwork on a prepared state.prestate --dispute-absolute-prestate(DEPLOYER_DISPUTE_ABSOLUTE_PRESTATE) records the absolute prestate for each pendingCANNON_KONAorSUPER_CANNON_KONAchain.continuerefuses to run if the intent, deployer, OPCM, anchor or artifacts changed sinceprepare(rerunprepareinstead), simulates every chain before broadcasting, checkpoints each chain as it lands and can be rerun after a failure.applyremains the single-step path for permissioned chains.applyandprepareeach refuse a state file produced by the other.
Deploy
init --intent-type standard*and the standard intent checks now target the op-contracts/v8.0.0 OPCM from the superchain registry (#22703)- Broadcasts from
apply,bootstrap,manageandcontinuenow let the L1 node estimate gas for each transaction instead of reusing gas limits from op-deployer's own script simulation, and send transactions one at a time, stopping at the first failure. Deployments are slower but no longer fail when L1 gas costs are repriced, as with EIP-8037 in Glamsterdam. Gas estimation also no longer caps the estimate at 2^24, so the L1 node applies its own fork's limit (#21728, #22217) - When an intent sets only
opcmAddress, the SuperchainConfig proxy is now read from the OPCM onchain rather than looked up in the superchain registry, so deployments against an OPCM on an L1 outside the registry work (#22252) bootstrap superchainand theapplysuperchain stage no longer deploy ProtocolVersions. TheprotocolVersionsProxyAddressandprotocolVersionsImplAddressfields are gone from thebootstrapoutputs, and the matching fields are gone fromsuperchainContractsinstate.json(#20527)
Genesis
- New chains now activate every hardfork up to the newest one active on OP Mainnet at genesis, read from the embedded superchain registry. In this release that is Karst; previously it was Jovian. Override the schedule with the
l2Genesis*TimeOffsetfields in the intent (#21633, #21664) - New deploy config field
keepKarstUpgradeGas(defaultfalse), written to the rollup config askeep_karst_upgrade_gas(#21441) applynow validates the generated L2 genesis allocs and fails withL2 genesis allocs failed validationif an account is unexpected or a proxy's admin and implementation slots are inconsistent (#21345)- The generated L2 genesis no longer leaves the L2 ProxyAdmin owner account with a nonzero nonce (#21343)
- L1 dev genesis (
--deployment-target genesis) now appliesbpo2TimeOffset, which was previously ignored, and accepts newl1DevGenesisParamsfieldsbpo3TimeOffset,bpo4TimeOffset,bpo5TimeOffsetandamsterdamTimeOffset(#21920) - L2 genesis generation for
--deployment-target genesisnow accepts contract artifacts above the EIP-170 code-size limit, such as unoptimized development builds (#21936)
Bug fixes
- Fixed a
revision id N cannot be revertedpanic during script execution when the revision id did not start with1, hit on the OPCM v2 upgrade path (#21396) - A spurious
Transaction receipt not found err="context canceled"warning is no longer logged after a transaction confirms (#21317)
Miscellaneous
- The artifact download progress bar is now a single line,
Downloading... NN% (x/y), updated once per second, and is hidden when stderr is not a terminal (#20988)
Security
- Built with Go 1.26.5 (previously 1.24.13), picking up Go standard library security fixes (#21452, #21854)
Full Changelog: op-deployer/v0.7.1...op-deployer/v0.8.0
🚢 Docker Image: