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
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
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.
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.
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.
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