Canyon Network Upgrade
The following information is how you can prepare your nodes for both the Canyon upgrade and the ProtocolVersions contract.
ProtocolVersions Smart Contract Information
These releases enshrine a protocol-version within nodes as a constant in the software, with requirements and recommendations signaled through the L1 ProtocolVersions contract. Nodes periodically read the value from L1 and compare it against the locally hardcoded constant. This release also introduces a "Superchain target" (within the superchain-registry (opens in a new tab), a library the op-node uses) which groups chains together.
Each chain operator is still in charge of upgrading their own sequencer nodes, but their nodes will now be aware of upgrades, and can be configured to halt or produce warnings when an upgrade is near and the node is behind the protocol-version. Because this behavior is optional, this is not a consensus-critical change for this release. However, we anticipate future releases to utilize this functionality more explicitly, and upgrade the Superchain in unison.
The rollup.json and genesis.json files are deprecated for chains that follow a Superchain target, and will be imported into the op-node from the superchain-registry (opens in a new tab) instead.
Mainnet Information
The contents of the Canyon network upgrade are detailed in this blog post (opens in a new tab).
This is the upgrade guide to the Canyon network upgrade and synced protocol-version upgrades.
Required Action
You must upgrade your nodes to the following versions prior to January 11th 2024.
- Upgrade your
op-nodeto version: v1.3.2 (opens in a new tab) - Upgrade your
op-gethto version: v1.101304.2 (opens in a new tab)
Recommended Configuration
Note: this configuration path uses the protocol-version functionalities described above.
Set the network flags
- On
op-gethspecify--op-networkwith a pre-configured OP Stack network. - On
op-nodespecify--networkwith a pre-configured OP Stack network.
The following are the supported options:
options: base-goerli, base-mainnet, base-sepolia, op-goerli, op-labs-chaosnet-0-goerli-dev-0, op-labs-devnet-0-goerli-dev-0, op-mainnet, op-sepolia, pgn-mainnet, pgn-sepolia, zora-goerli, zora-mainnetLoading and reporting protocol versions from the Superchain:
- On
op-nodeset--rollup.load-protocol-versionstotrue.
Optionally, enabling halting your node on breaking changes:
- On
op-gethspecify--rollup.halt=major - On
op-nodespecify--rollup.halt=major
This does not shut down your node, but stops syncing once it detects an incompatible protocol version. Your node defaults to not halting, but we recommend setting this to at least major so your node does not produce diverging state.
Verifying Your Configuration
You can verify your node is configured correctly with the following:
- Both op-node and op-geth log their configuration at startup
- Check that Canyon time is set to
1704992401in the op-node logs - Check that Canyon time and Shanghai time are set to
1704992401in the op-geth logs
Testnet Information
Required Action
You must upgrade your nodes to the following versions prior to January 11th 2024.
- Upgrade your
op-nodeto version: v1.3.1 (opens in a new tab) - Upgrade your
op-gethto version: v1.101304.1 (opens in a new tab)
Recommended Configuration
Set the network flags
- On
op-gethspecify--op-networkwith a pre-configured OP Stack network. - On
op-nodespecify--networkwith a pre-configured OP Stack network.
The following are the supported options:
options: base-goerli, base-mainnet, base-sepolia, op-goerli, op-labs-chaosnet-0-goerli-dev-0, op-labs-devnet-0-goerli-dev-0, op-mainnet, op-sepolia, pgn-mainnet, pgn-sepolia, zora-goerli, zora-mainnetLoading and reporting protocol versions from the Superchain:
- On
op-nodeset--rollup.load-protocol-versionstotrue.
Optionally, enabling halting your node on breaking changes:
- On
op-gethspecify--rollup.halt=major - On
op-nodespecify--rollup.halt=major
This does not shut down your node, but stops syncing once it detects an incompatible protocol version. Your node defaults to not halting, but we recommend setting this to at least major so your node does not produce diverging state.
Manual Configuration
Not recommended, but supported. Only do this on OP Goerli & OP Sepolia and NOT OP MAINNET
Using an existing datadir / geth init and rollup.json configuration.
- On
op-gethuse the flag--override.canyon. - On
op-nodeeither addcanyon_timeto therollup.jsonor use the--override.canyonflag at timestamp1699981200 - Please note: We strongly suggest using the
--network flag. We recommend against long term use of the override.canyon flag because the node does not persist the canyon timestamp. If the flag is removed, without activating canyon another way, the node will diverge.
Verifying Your Configuration on OP Goerli & OP Sepolia
You can verify your node is configured correctly with the following:
- Both op-node and op-geth log their configuration at startup
- Check that Canyon time is set to
1699981200in the op-node logs - Check that Canyon time and Shanghai time are set to
1699981200in the op-geth logs
Additional Support
If you require additional support. Please reach out on our developer forum (opens in a new tab) and we'll answer your questions there.