Overview
Note
This is a patch release of op-challenger containing bug fixes, dependency updates, and a change to the default game types. It is a recommended upgrade for all users.
Note: super dispute games (interop) are coming in Upgrade 20, and ZK dispute games in a future upgrade. Changes to those code paths in this release are preparation for that functionality and do not affect operators today.
Breaking changes
--game-typesno longer defaults tocannon(#21912). The default is nowcannon-konaalone. Operators who rely on the default and expectcannongames to be played must set--game-types cannon,cannon-kona(envOP_CHALLENGER_GAME_TYPES) before upgrading — otherwise the challenger will silently stop playing them.
What's Changed
Bug fixes
- A VM run killed by
--vm-timeoutis now recorded as a VM failure rather than a setup failure, sovm_failures_totalincreases and the runner's VM-failure alert fires. Previously a stuck run only surfaced through the consecutive-setup-failure path, which needs more than ten failures in a row sustained over thirty minutes — roughly 33 hours with the default three-hour timeout (#22738) - Cannon-Kona absolute prestate conversion now runs the VM binary selected for the game type instead of always invoking the legacy
cannonbinary (#21739) - kona-host now trusts an operator-supplied private CA given as a plain PEM in
SSL_CERT_DIR/SSL_CERT_FILEwhen connecting to L1, L2 and beacon endpoints, retries preimage fetches with capped backoff instead of a tight loop, and reports the full error chain when a fetch fails (#22604) - op-challenger no longer pins the gas ceiling on
eth_estimateGasfor its L1 transactions, letting the L1 node apply the limit for its own active fork. Current behaviour is unchanged; the fixed 2^24 cap would have made valid transactions unestimatable on EIP-8037-aware nodes (#22217)
Super dispute games (coming in Upgrade 20)
- op-challenger now advances the anchor state and closes finalized
SuperPermissionedDisputeGame(game type 5) games, without making that type playable.--selective-claim-resolutiondisables this lifecycle behaviour in addition to the claim resolution it already restricted (#21811) - The interop VM runner now takes the game L1 head from the highest fully-processed L1 block, fixing runs that always failed with
local node too far behind, and rejects game inputs whose claim is theInvalidTransitionsentinel so a run can no longer report success without exercising derivation (#22727) - Interop game inputs now read the dispute timestamp and L1 head from
superroot_atTimestampinstead ofsupernode_syncStatus, so a plain op-node can serve--superroot-rpcfor a chain whose dependency set is only itself (#22642) - Fixed a kona-host hang on interop runs against chains with a non-zero L2 genesis block number, where the L2 output root hint resolved to a pre-Bedrock block and the preimage fetch retried indefinitely (#22732)
ZK dispute games (coming in a future upgrade)
- The ZK game actor now validates proposals against super roots from
superroot_atTimestamprather than single-chain output roots, which it had been comparing against a super-root hash and so judged every valid proposal invalid. Game type 10 now requires--superroot-rpc(envOP_CHALLENGER_SUPERROOT_RPC) and no longer accepts--rollup-rpc(#21983) op-challenger move --attacknow sends a ZK game'schallenge()transaction, including the required challenger bond, when the target is a ZK game;--defendis rejected for ZK games (#22575)
Other
--supernode-rpcis renamed to--superroot-rpc, andOP_CHALLENGER_SUPERNODE_RPCtoOP_CHALLENGER_SUPERROOT_RPC, reflecting that the source may be either an op-node or an op-supernode. The old flag and environment variable names continue to work (#21864)- Rebuilt on the Go 1.26.6 toolchain, and
golang.org/x/crypto,golang.org/x/text,golang.org/x/modandklauspost/compressupdated, to pick up CVE fixes in the toolchain and image (#22424, #21854, #22750, #22067, #22425, #22064) - Receipt-fetching APIs in
op-service/sourcesandop-service/apisnow return OP-aware receipt types; downstream Go importers of those packages need to update (#21908)
Full Changelog: op-challenger/v1.9.4...op-challenger/v1.9.5
🚢 Docker Image: