Upgrade 18 (approved by Optimism Governance) introduced
CANNON_KONA (8) as an available game type alongside CANNON (0). Upgrade 19 promotes CANNON_KONA to the respected game type for chains managed by the Optimism Security Council — meaning it is applied automatically as part of the onchain upgrade. Non-managed chains that want to switch must follow this guide.Overview
Kona proofs use the
kona-client fault proof program, which is a combination of kona-node and op-reth. This runs alongside the existing op-program (a combination of op-node and op-geth). Both programs:
- Use Cannon as the FPVM, and
- Are used by the same dispute game implementation (
FaultDisputeGame.sol).
CANNON(0) — op-programCANNON_KONA(8) — kona-client
CANNON (0), meaning only those games are used for withdrawals. This guide explains how to switch your chain so that Kona proofs (CANNON_KONA, 8) become the respected game type.
The high-level flow is:
- Verify that cannon+kona support is correctly deployed on-chain.
- Confirm that your off-chain infra (especially
op-challenger) is Kona-ready. - Switch the respected game type to
CANNON_KONA(8). - Update
op-proposerto post Kona games. - Monitor the system.
How to Switch to Kona Proofs
1
Confirm cannon+kona support is deployed
Before changing the respected game type, verify that your chain has been upgraded to support both
CANNON and CANNON_KONA games.The required upgrade is performed via
OPCM.upgrade with an OpChainConfig that sets both cannonPrestate and cannonKonaPrestate.-
Check
OpChainConfigprestates Ensure that theOpChainConfigused in your most recent upgrade included:cannonPrestatepointing to a validcannon64prestate.cannonKonaPrestatepointing to a validcannon64-konaprestate.
-
Verify
DisputeGameFactoryimplementations After the cannon+kona upgrade, theDisputeGameFactoryshould have:- A non-zero implementation for
CANNON(0), and - A non-zero implementation for
CANNON_KONA(8).
Both calls should return non-zero addresses.cast - A non-zero implementation for
2
Ensure op-challenger is Kona-ready
Your challengers must be able to play both cannon and kona games before you change the respected game type.
-
Trace types
If you explicitly configure trace types, ensure that
cannon-konais included. A typical setting is: -
Prestate URLs
Make sure
op-challengercan fetch both cannon and cannon-kona prestates:-
If they are at the same URL, use:
-
If they are at different locations, use:
-
If they are at the same URL, use:
-
Kona host binary
For operators not using the standard OP Labs
op-challengerDocker images, you must also provide:Thekona-hostbinary is available from the Kona repository (for example underbin/host). Build it from the same release as thecannon-konaprestate you configured.
3
Switch the respected game type to CANNON_KONA
Once both on-chain and off-chain pieces are ready, you can switch the respected game type so that Kona proofs become the canonical path for withdrawals.The respected game type is configured in the
AnchorStateRegistry contract.-
Encode the calldata
Use
cast calldatato encode a call tosetRespectedGameType(uint32)with game type8(which corresponds toCANNON_KONA):cast -
Send the transaction
Send the transaction from the Guardian to the
AnchorStateRegistry:cast -
Verify the new respected game type
After the transaction confirms, verify that the respected game type is now
8:The returned value should becast8, indicating thatCANNON_KONAis now the respected game type.
4
Update op-proposer to use game type 8
With
CANNON_KONA set as the respected game type, your proposers must create Kona games.-
Update the proposer game type
Change your
op-proposerconfiguration from game type 0 to 8:This change is not required as part of the initial cannon+kona upgrade; it is only required when you actually switch the respected game type toCANNON_KONA. - Restart proposers Restart your proposer processes so they pick up the new configuration. Verify in logs and metrics that they are now using game type 8.
5
Monitor, and validate
After switching to Kona proofs, closely monitor your chain to ensure everything is functioning as expected.
-
Run test withdrawals
- Perform a few small test withdrawals and ensure that:
- New fault dispute games are created with game type
CANNON_KONA(8). - Your challengers are responding correctly using
kona-host.
- New fault dispute games are created with game type
- Perform a few small test withdrawals and ensure that:
-
Observe metrics and logs
- Monitor
op-proposerandop-challengerlogs for errors. - Watch dispute game metrics (for example, game counts and step timings) for anomalies.
- Monitor