github ethereum-optimism/optimism op-dispute-mon/v1.6.0

latest release: op-proposer/v1.16.4
4 hours ago

Overview

Note

This is a minor release of op-dispute-mon containing new metrics, bond accounting fixes, and monitoring support for upcoming dispute game types. It is a recommended upgrade for all users.

This release also covers op-dispute-mon/v1.5.3, which was tagged but never published, so the compare link below is against v1.5.2.

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.

What's Changed

Features

  • New op_dispute_mon_anchor_state_l2_sequence_number gauge, labelled anchor_state_registry, reporting the L2 sequence number of each monitored AnchorStateRegistry's current anchor state. Alerting on this against the live L2 head detects a stalling anchor state. Reading the registry address is best-effort — a failure is logged and skipped rather than failing the game (#21209)

Bug fixes

  • Fault games in refund distribution mode were queried for the wrong recipients, so refunds owed to original depositors were invisible to credit and collateral accounting. Bonds in refund mode are now attributed to the depositor, which corrects op_dispute_mon_credits, op_dispute_mon_withdrawal_requests, op_dispute_mon_bond_collateral_required / _available and op_dispute_mon_honest_actor_pending_withdrawals for those games — expect divergence counts and honest-withdrawable amounts to shift after upgrading (#22450)
  • Monitor shutdown is now idempotent, waits for the in-flight monitoring pass to finish, and is bounded by the shutdown context. Previously stopping the service never stopped the monitor loop, and a second stop panicked (#21862)

Super dispute games (coming in Upgrade 20)

  • Added monitoring for simplified SuperPermissionedDisputeGames: these route through the existing super-root agreement checks, with claim, bond, withdrawal and DelayedWETH monitoring skipped as inapplicable. Invalid super permissioned proposals are still detected even though the contract auto-resolves to defender wins (#21106)
  • Terminal SuperPermissioned games no longer contribute buckets to op_dispute_mon_resolution_status, where their zero max clock duration previously produced meaningless complete_max_duration entries (#22225)
  • Removed support for super-cannon (game type 4), which no longer exists. SuperCannonKona (9) and SuperPermissioned (5) are unaffected (#20555)

ZK dispute games (coming in a future upgrade)

  • ZK dispute games (game type 10) are now monitored end to end: the game caller is constructed for type 10 instead of being rejected, ZK games are classified as super-root games so their claims are compared against super roots rather than single-chain output roots, and ZK bond, credit and withdrawal accounting is normalized to match what the contract records. Previously a type-10 game was counted in op_dispute_mon_failed_games on every poll (#22229, #22228, #22227, #21979)
  • On a chain where ZK games can appear, --superroot-rpc becomes a hard requirement: without it a type-10 game fails enrichment, is counted in op_dispute_mon_failed_games, and logs an error on every poll (#22229)

Other

  • Three new time series are exported unconditionally, at zero, on every scrape — there is no flag to disable them: op_dispute_mon_games_waiting_for_root_source{game_type="zk"}, op_dispute_mon_zk_games_pending_lifecycle_action{action="resolution"} and {action="bond_distribution"}. Dashboards and recording rules that enumerate op-dispute-mon series will pick them up (#22229)
  • The bond, credit, withdrawal and balance enrichers were consolidated into a single normalized bond snapshot behind a dedicated monitor lane. op_dispute_mon_honest_actor_bonds keeps its name and honest_actor_address / state labels but is now written from that snapshot rather than from raw claims, so it is worth sanity-checking after upgrading (#22226, #22225)
  • --supernode-rpc is renamed to --superroot-rpc, and OP_DISPUTE_MON_SUPERNODE_RPC to OP_DISPUTE_MON_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)
  • Superchain registry chain configs are now embedded from the monorepo's own op-core/superchain bundle instead of op-geth's, and the build fails on bundle drift. --network / OP_DISPUTE_MON_NETWORK is unchanged, but it is worth confirming the network name you pass still resolves (#21487)
  • Rebuilt on the Go 1.26.6 toolchain, and golang.org/x/text, golang.org/x/mod and klauspost/compress updated, to pick up CVE fixes in the toolchain and image (#21452, #21854, #22424, #22067, #22425, #22064)

Full Changelog: op-dispute-mon/v1.5.2...op-dispute-mon/v1.6.0

🚢 Docker Image:

Don't miss a new optimism release

NewReleases is sending notifications on new releases.