Kona proofs will become available if and when Optimism Governance approves Upgrade 18.
Until then, you can experiment with Kona proofs using op-deployer/v0.6.0-rc.2, which allows you to upgrade from
op-contracts/v5.0.0 to op-contracts/v6.0.0-rc.1.
This smart contract release candidate will be finalized after governance approval.Overview
| Parameter | Type | Current (typical) | Target when switching | Notes |
|---|---|---|---|---|
| Respected game type | Enum | CANNON (0) | CANNON_KONA (8) | Determines which game type is used for withdrawals |
OP_PROPOSER_GAME_TYPE | Number | 0 | 8 | Proposer game type (must match respected game type) |
cannonPrestate | Bytes32 | Set | Set | Must be a valid cannon64 prestate hash |
cannonKonaPrestate | Bytes32 | Set | Set | Must be a valid cannon64-kona prestate hash |
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