Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -1954,6 +1954,7 @@
{
"group": "Notices",
"pages": [
"notices/upgrade-17",
"notices/fusaka-notice",
"notices/upgrade-16",
"notices/upgrade-16a",
Expand Down
146 changes: 146 additions & 0 deletions notices/upgrade-17.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
---
title: Upgrade 17 - Jovian Hard Fork
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just want to check in whether we need to use the numerical label here. @sbvegan any thoughts? There is a push to not use numbers going forward.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the governance team is still collecting feedback and I don't think a decision has been made yet

description: Learn how to prepare for the Jovian hard fork
---

The Jovian hardfork is a proposed network upgrade for OP Stack chains, which brings several improvements to the way rollup fees are calculated as well as performing a maintenance update to the fault proof virtual machine.

Check warning on line 6 in notices/upgrade-17.mdx

View check run for this annotation

Mintlify / Mintlify Validation (optimism-373f39ad) - vale-spellcheck

notices/upgrade-17.mdx#L6

Did you really mean 'hardfork'?

Check warning on line 6 in notices/upgrade-17.mdx

View check run for this annotation

Mintlify / Mintlify Validation (optimism-373f39ad) - vale-spellcheck

notices/upgrade-17.mdx#L6

Did you really mean 'rollup'?

<Info>
The Jovian hard fork for the Sepolia Superchain will be activated at Wed 12 Nov 2025 16:00:01 UTC (`1762963201`) and the Mainnet Superchain will be optimistically activated at Tue 25 Nov 2025 16:00:01 UTC (`1764086401`) pending [governance approval](todo add proposal link).

Check warning on line 9 in notices/upgrade-17.mdx

View check run for this annotation

Mintlify / Mintlify Validation (optimism-373f39ad) - vale-spellcheck

notices/upgrade-17.mdx#L9

Did you really mean 'Sepolia'?

Check warning on line 9 in notices/upgrade-17.mdx

View check run for this annotation

Mintlify / Mintlify Validation (optimism-373f39ad) - vale-spellcheck

notices/upgrade-17.mdx#L9

Did you really mean 'Superchain'?

Check warning on line 9 in notices/upgrade-17.mdx

View check run for this annotation

Mintlify / Mintlify Validation (optimism-373f39ad) - vale-spellcheck

notices/upgrade-17.mdx#L9

Did you really mean 'Superchain'?

The upgrade will be executed by OP Labs on the following chains: `OP`, `Base`, `Soneium`, `Ink`, `Unichain`, `Metal`, `Mode`, `Zora`, `Arena-Z`, and `Swell` (Swell Mainnet only).

Check warning on line 11 in notices/upgrade-17.mdx

View check run for this annotation

Mintlify / Mintlify Validation (optimism-373f39ad) - vale-spellcheck

notices/upgrade-17.mdx#L11

Did you really mean 'Mainnet'?

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](https://github.com/ethereum-optimism/superchain-registry/tree/main/superchain/configs) includes the Jovian activation and the `superchain_time` field.

Check warning on line 13 in notices/upgrade-17.mdx

View check run for this annotation

Mintlify / Mintlify Validation (optimism-373f39ad) - vale-spellcheck

notices/upgrade-17.mdx#L13

Did you really mean 'Superchain'?

Additionally, Swell Mainnet will activate the Isthmus hard fork at Tue 25 Nov 2025 04:00:01 UTC (`1764043201`).

Check warning on line 15 in notices/upgrade-17.mdx

View check run for this annotation

Mintlify / Mintlify Validation (optimism-373f39ad) - vale-spellcheck

notices/upgrade-17.mdx#L15

Did you really mean 'Mainnet'?
</Info>

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

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

Check warning on line 27 in notices/upgrade-17.mdx

View check run for this annotation

Mintlify / Mintlify Validation (optimism-373f39ad) - vale-spellcheck

notices/upgrade-17.mdx#L27

Did you really mean 'rollup'?
</Info>

For more information on the Jovian implementation details, please review the [Jovian specifications](https://specs.optimism.io/protocol/jovian/overview.html).

## Breaking Changes - Block header changes

* `extraData` field is extended (for the [minBaseFee](https://specs.optimism.io/protocol/jovian/exec-engine.html#minimum-base-fee-in-block-header))
* `blobGasUsed` may become nonzero when the DA footprint feature is enabled

The `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](https://specs.optimism.io/protocol/jovian/exec-engine.html#da-footprint-block-limit).

## For node operators

These following steps are necessary for every node operator:

<Steps>
<Step title="Update to the latest release">
The releases contain both the Jovian Mainnet and Sepolia Superchain activation timestamps.

Check warning on line 47 in notices/upgrade-17.mdx

View check run for this annotation

Mintlify / Mintlify Validation (optimism-373f39ad) - vale-spellcheck

notices/upgrade-17.mdx#L47

Did you really mean 'Mainnet'?

Check warning on line 47 in notices/upgrade-17.mdx

View check run for this annotation

Mintlify / Mintlify Validation (optimism-373f39ad) - vale-spellcheck

notices/upgrade-17.mdx#L47

Did you really mean 'Sepolia'?

Check warning on line 47 in notices/upgrade-17.mdx

View check run for this annotation

Mintlify / Mintlify Validation (optimism-373f39ad) - vale-spellcheck

notices/upgrade-17.mdx#L47

Did you really mean 'Superchain'?

* [op-node/v1.16.0](https://github.com/ethereum-optimism/optimism/releases/tag/op-node%2Fv1.16.0)
* [op-geth/v1.101603.3](https://github.com/ethereum-optimism/op-geth/releases/tag/v1.101603.3)
* [op-reth version will be published next week]()
</Step>

<Step title="Configure the Jovian activation date">
<Info>
If you are operating a node for an OP Chain that has opted into the [hardfork activation inheritance behavior](https://github.com/ethereum-optimism/superchain-registry/blob/main/docs/hardfork-activation-inheritance.md) and are utilizing the network flags, the Jovian activation date is part of the `op-node` and `op-geth` nodes. So, no action is needed for the sequencer after upgrading to the latest release. Please skip to [Step 3: Verify Your Configuration](#verify-your-configuration).

Check warning on line 56 in notices/upgrade-17.mdx

View check run for this annotation

Mintlify / Mintlify Validation (optimism-373f39ad) - vale-spellcheck

notices/upgrade-17.mdx#L56

Did you really mean 'hardfork'?

The following chains are included but are subject to change: `OP`, `Base`, `Soneium`, `Ink`, `Unichain`, `Metal`, `Mode`, `Zora`, `Arena-Z`, and `Swell` (Swell Mainnet only).
</Info>

For node operators of not using the [hardfork activation inheritance behavior](https://github.com/ethereum-optimism/superchain-registry/blob/main/docs/hardfork-activation-inheritance.md), you will need to manually configure the activation. This can be done one of two ways:

* **Option 1:** Set the activation time via overrides (CLI) in both `op-node` and `op-geth`. These will need to be set on `op-node` and `op-geth` for the sequencer and all other nodes.
* **Option 2:** Set the activation time in the `rollup.json` for `op-node`. You will still need to set the `override.isthmus` flag in `op-geth` or set the time in the EL clients genesis file if you use this option.

</Step>

<Step title="Verify Your Configuration">
Make the following checks to verify that your node is properly configured.

* `op-node` and `op-geth` will log their configurations at startup
* Check that the Jovian time is set to its correct activation timestamp in the op-node startup logs
* Check that the Jovian time is set to its correct activation timestamp in the op-geth startup logs
</Step>
</Steps>

## For chain operators

Chain operators must prepare their nodes and additionally upgrade the following versions:

* Update [op-challenger/v1.7.0-rc.1](https://github.com/ethereum-optimism/optimism/releases/tag/op-challenger%2Fv1.7.0-rc.1)
* Update [op-conductor/v0.9.0](https://github.com/ethereum-optimism/optimism/releases/tag/op-conductor%2Fv0.9.0)


For operators running the rust stack, you will need to update to the following versions:

* [kona-node/v1.2.0](https://github.com/op-rs/kona/releases/tag/kona-node%2Fv1.2.0)
* [kona-client/v1.2.0](https://github.com/op-rs/kona/releases/tag/kona-client%2Fv1.2.0)
* [kona-host/v1.2.0](https://github.com/op-rs/kona/releases/tag/kona-host%2Fv1.2.0)


### For permissionless fault proof enabled chains

Check warning on line 92 in notices/upgrade-17.mdx

View check run for this annotation

Mintlify / Mintlify Validation (optimism-373f39ad) - vale-spellcheck

notices/upgrade-17.mdx#L92

Did you really mean 'permissionless'?

Chains running permissionless fault proofs will need to deploy new dispute game contracts with new absolute prestates.

Check warning on line 94 in notices/upgrade-17.mdx

View check run for this annotation

Mintlify / Mintlify Validation (optimism-373f39ad) - vale-spellcheck

notices/upgrade-17.mdx#L94

Did you really mean 'permissionless'?

Check warning on line 94 in notices/upgrade-17.mdx

View check run for this annotation

Mintlify / Mintlify Validation (optimism-373f39ad) - vale-spellcheck

notices/upgrade-17.mdx#L94

Did you really mean 'prestates'?

<Steps>
<Step title="Verify the new absolute prestate">

The absolute prestate is generated with the [op-program/v1.8.0-rc.3](https://github.com/ethereum-optimism/optimism/tree/op-program/v1.8.0-rc.3). You can use this new absolute prestate `0x03799051d2bfe459127d4597f469f535ff1bd2a6e1e2134443167620871c11f3` for the following chains:

Check warning on line 99 in notices/upgrade-17.mdx

View check run for this annotation

Mintlify / Mintlify Validation (optimism-373f39ad) - vale-spellcheck

notices/upgrade-17.mdx#L99

Did you really mean 'prestate'?
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.


* Mainnet and Sepolia: `OP`, `Base`, `Ink`, and `Unichain`

Check warning on line 101 in notices/upgrade-17.mdx

View check run for this annotation

Mintlify / Mintlify Validation (optimism-373f39ad) - vale-spellcheck

notices/upgrade-17.mdx#L101

Did you really mean 'Mainnet'?

Check warning on line 101 in notices/upgrade-17.mdx

View check run for this annotation

Mintlify / Mintlify Validation (optimism-373f39ad) - vale-spellcheck

notices/upgrade-17.mdx#L101

Did you really mean 'Sepolia'?

You can verify this absolute prestate by running the following [command](https://github.com/ethereum-optimism/optimism/blob/3ebc32348de4bb064990d117d2dcfa1e115e187b/Makefile#L134-L136) in the root of the monorepo on the `op-program/v1.8.0-rc.3` tag:

Check warning on line 103 in notices/upgrade-17.mdx

View check run for this annotation

Mintlify / Mintlify Validation (optimism-373f39ad) - vale-spellcheck

notices/upgrade-17.mdx#L103

Did you really mean 'prestate'?

Check warning on line 103 in notices/upgrade-17.mdx

View check run for this annotation

Mintlify / Mintlify Validation (optimism-373f39ad) - vale-spellcheck

notices/upgrade-17.mdx#L103

Did you really mean 'monorepo'?

```shell
make reproducible-prestate
```

This will output the calculated prestates, the tail end of the output should look like this:

Check warning on line 109 in notices/upgrade-17.mdx

View check run for this annotation

Mintlify / Mintlify Validation (optimism-373f39ad) - vale-spellcheck

notices/upgrade-17.mdx#L109

Did you really mean 'prestates'?

```shell
-------------------- Production Prestates --------------------

Cannon64 Absolute prestate hash:
0x03799051d2bfe459127d4597f469f535ff1bd2a6e1e2134443167620871c11f3

-------------------- Experimental Prestates --------------------

Cannon64Next Absolute prestate hash:
0x03799051d2bfe459127d4597f469f535ff1bd2a6e1e2134443167620871c11f3

CannonInterop Absolute prestate hash:
0x0375052a8100e452f648435703f524245fadce6122fa99046921bdd84683a982

CannonInteropNext Absolute prestate hash:
0x0375052a8100e452f648435703f524245fadce6122fa99046921bdd84683a982
```

* The "Cannon64" hash is the 64-bit prestate.

Check warning on line 129 in notices/upgrade-17.mdx

View check run for this annotation

Mintlify / Mintlify Validation (optimism-373f39ad) - vale-spellcheck

notices/upgrade-17.mdx#L129

Did you really mean 'prestate'?

Verify that your target prestate was calculated as expected and matches the corresponding entry in
[standard-prestates.toml](https://github.com/ethereum-optimism/superchain-registry/blob/main/validation/standard/standard-prestates.toml).

Check warning on line 132 in notices/upgrade-17.mdx

View check run for this annotation

Mintlify / Mintlify Validation (optimism-373f39ad) - vale-spellcheck

notices/upgrade-17.mdx#L132

Did you really mean 'prestate'?
</Step>

<Step title="Upload your new preimage file">
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`.

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.

Check warning on line 138 in notices/upgrade-17.mdx

View check run for this annotation

Mintlify / Mintlify Validation (optimism-373f39ad) - vale-spellcheck

notices/upgrade-17.mdx#L138

Did you really mean 'preimage'?

Check warning on line 138 in notices/upgrade-17.mdx

View check run for this annotation

Mintlify / Mintlify Validation (optimism-373f39ad) - vale-spellcheck

notices/upgrade-17.mdx#L138

Did you really mean 'prestate'?
</Step>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The prestate section looks good.


<Step title="Execute the upgrade">
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](https://github.com/ethereum-optimism/superchain-registry/blob/6621a0f13ce523fe1bb8deea739fe37abe20f90d/validation/standard/standard-versions-mainnet.toml#L22).

Check warning on line 142 in notices/upgrade-17.mdx

View check run for this annotation

Mintlify / Mintlify Validation (optimism-373f39ad) - vale-spellcheck

notices/upgrade-17.mdx#L142

Did you really mean 'preimage'?

Check warning on line 142 in notices/upgrade-17.mdx

View check run for this annotation

Mintlify / Mintlify Validation (optimism-373f39ad) - vale-spellcheck

notices/upgrade-17.mdx#L142

Did you really mean 'delegatecall'?

Please simulate and validate the expected output prior to executing the transaction.
</Step>
</Steps>