Jovian activation times are: Tuesday, Nov 4, 2025 on Sepolia Superchain, and Tuesday, Nov 18, 2025 on Mainnet Superchain.The upgrade will be executed by OP Labs on the following chains:
OP, Base, Soneium, Ink, Unichain, Metal, Mode, Zora, Arena-Z, Swell (mainnet only).Chains that inherit activations from the Superchain Registry and are NOT listed above must perform the upgrade themselves before the activation time. To check if you are inheriting the activation time automatically, see if your chain’s Superchain Registry toml file includes the Jovian activation and the superchain_time.What’s included in Upgrade 17
Upgrade 17 introduces the following changes:- Cannon Go 1.24 support: upgrading the on-chain fault proof virtual machine implementation to support Go 1.24.
- Configurable Minimum Base Fee: allows chain operators to specify a minimum base fee to shorten the length of priority fee auctions (disabled by default).
- Data Availability Footprint Block Limit: adds an in-protocol limit to estimated DA usage of transactions to prevent DA spam and priority fee auctions. (enabled by default; can be disabled via zero scalar on-chain).
- Operator Fee Fix: enables more flexible fee configurations for rollup operators and lays groundwork for future custom gas token support. If you are running operator fee with nonzero scalars, make sure to adjust them before activating the fork to avoid overcharging users.
Breaking Changes - Block header changes
extraDatafield is extended (for the minBaseFee)blobGasUsedmay become nonzero when the DA footprint feature is enabled
blobGasUsed property of each block header is set to that block’s daFootprint. Note that since Ecotone it was set to 0, as OP Stack chains don’t support blobs. It is now repurposed to store the DA footprint. If you want to disable it, set a scalar of 1. Setting 0 (or never setting the scalar value) implies the default value of the scalar, which can be updated in future forks. Please ensure your nodes and tooling can handle these updated header semantics.
For more information, see the specs.
For node operators
Update your node software as soon as possible after release:- Update
op-nodeto [NEED VERSION] - Update
op-gethto [NEED VERSION]
For chain operators
For permissionless fault proof enabled chains
Chains running permissionless fault proofs will need to deploy new dispute game contracts with new absolute prestates.1
Verify the new absolute prestate
2
As of upgrade 14, the 64 bit multi-threaded version of cannon is utilized.
3
The absolute prestate is generated with the op-program/v1.6.1-rc.1. You can use this new absolute prestate
0x03eb07101fbdeaf3f04d9fb76526362c1eea2824e4c6e970bdb19675b72e4fc8 for the following chains:4
OP, Base, Soneium, Inkand Unichain5
You can verify this absolute prestate by running the following command in the root of the monorepo on the
op-program/v1.6.1-rc.1 tag:6
make reproducible-prestate
7
This will output the calculated prestates, which will look something like:
8
-------------------- Production Prestates --------------------
Cannon64 Absolute prestate hash:
0x03eb07101fbdeaf3f04d9fb76526362c1eea2824e4c6e970bdb19675b72e4fc8
-------------------- Experimental Prestates --------------------
CannonInterop Absolute prestate hash:
0x03fc3b4d091527d53f1ff369ea8ed65e5e17cc7fc98ebf75380238151cdc949c
Cannon64Next Absolute prestate hash:
0x03eb07101fbdeaf3f04d9fb76526362c1eea2824e4c6e970bdb19675b72e4fc8
9
10
Verify that your target prestate was calculated as expected and matches the corresponding entry in
standard-prestates.toml.
11
Upload your new preimage file
12
During the previous step, you also generated the preimage of the absolute prestate, which is the op-program serialized into a binary file. You’ll find that new file at
optimism/op-program/bin/prestate-mt64.bin.gz. Rename that file to have the absolute prestate hash as the filename so it looks like PRESTATEHASH.bin.gz.13
Upload that file to where you’re storing your other absolute preimage files. This should be the location where you’re pointing your
--cannon-prestates-url at. The op-challenger will grab this file and use it when it needs to challenge games.14
Execute the upgrade
15
Once your
op-challenger is ready with the new preimage, you can execute the upgrade transaction. This should be done by making a delegatecall to the upgrade() function of the OP Contract Manager (at the address listed in the registry.16
Please simulate and validate the expected output prior to executing the transaction.