github ethereum-optimism/optimism op-challenger/v1.9.5

3 hours ago

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-types no longer defaults to cannon (#21912). The default is now cannon-kona alone. Operators who rely on the default and expect cannon games to be played must set --game-types cannon,cannon-kona (env OP_CHALLENGER_GAME_TYPES) before upgrading — otherwise the challenger will silently stop playing them.

What's Changed

Bug fixes

  • A VM run killed by --vm-timeout is now recorded as a VM failure rather than a setup failure, so vm_failures_total increases 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 cannon binary (#21739)
  • kona-host now trusts an operator-supplied private CA given as a plain PEM in SSL_CERT_DIR / SSL_CERT_FILE when 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_estimateGas for 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-resolution disables 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 the InvalidTransition sentinel 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_atTimestamp instead of supernode_syncStatus, so a plain op-node can serve --superroot-rpc for 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_atTimestamp rather 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 (env OP_CHALLENGER_SUPERROOT_RPC) and no longer accepts --rollup-rpc (#21983)
  • op-challenger move --attack now sends a ZK game's challenge() transaction, including the required challenger bond, when the target is a ZK game; --defend is rejected for ZK games (#22575)

Other

  • --supernode-rpc is renamed to --superroot-rpc, and OP_CHALLENGER_SUPERNODE_RPC to OP_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/mod and klauspost/compress updated, to pick up CVE fixes in the toolchain and image (#22424, #21854, #22750, #22067, #22425, #22064)
  • Receipt-fetching APIs in op-service/sources and op-service/apis now 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:

Don't miss a new optimism release

NewReleases is sending notifications on new releases.