Upgrade Guide - Multi-Chain Node & Canyon Hard Fork Upgrades


Update Your Software for these benefits

This upgrade allows nodes to coordinate hard forks together and is intended for chain operators, node operators, and sequence providers.

# Overview

We expect numerous OP Chains to be governed by the Law of Chains (opens new window). Our long-term vision is to unite them all as part of a single, unified Superchain that provides unlimited scalability while appearing to users as a single chain. This isn’t the case today, however; OP Chains are currently deployed and upgraded separately. As a first step towards achieving Superchain unification, we need to make the operation of each chain as simple as possible. This will lay the foundation for future iterations of the Superchain’s user experience.

This upgrade guide covers two essential parts:

  • Multi-chain Node Upgrade
  • Canyon Hard Fork Upgrade

# Multi-chain Node Upgrade

This release enshrines 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 new window), 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.

rollup.json and genesis.json are deprecated for chains that follow a Superchain target, and will be imported into the op-node from the superchain-registry (opens new window) instead.

# Release

This release includes changes to the superchain-registry and setting mainnet and sepolia superchain-target protocol version contract addresses. Feel free to upgrade testnets and replicas first to test out this change.

op-node

Flag Parameter Description Default / Recommended value
--network value ($OP_NODE_NETWORK) Predefined network selection. Available networks: op-mainnet, op-goerli, op-sepolia xx
--beta.extra-networks ($OP_NODE_BETA_EXTRA_NETWORKS) Enable selection of a predefined-network from the superchain-registry. The availability of configurations in the superchain-registry may change. Available networks: zora-goerli, base-mainnet, pgn-mainnet, zora-mainnet, op-sepolia, pgn-sepolia, base-goerli, op-goerli, op-labs-chaosnet-0-goerli-dev-0, op-labs-devnet-0-goerli-dev-0, op-mainnet (default: false)
--rollup.halt value ($OP_NODE_ROLLUP_HALT) Opt-in option to halt on incompatible protocol version requirements of the given level (major/minor/patch/none), as signaled onchain in L1 xx
--rollup.load-protocol-versions ($OP_NODE_ROLLUP_LOAD_PROTOCOL_VERSIONS) Load protocol versions from the superchain L1 ProtocolVersions contract (if available), and report in logs and metrics (default: false)

op-geth

Flag Parameter Description Default / Recommended value
--rollup.halt value ($GETH_ROLLUP_HALT) Opt-in option to halt on incompatible protocol version requirements of the given level (major/minor/patch/none), as signaled through the Engine API by the rollup node xx
--op-network value ($GETH_BETA_OP_NETWORK) Pick an OP Stack network configuration xx
--rollup.superchain-upgrades ($GETH_BETA_ROLLUP_SUPERCHAIN_UPGRADES) Apply superchain-registry config changes to the local chain-configuration (default: false)

This example uses OP-Sepolia but can also be configured with ENV vars on both op-node and op-geth!

op-node

  • --network=op-sepolia
  • --beta.extra-networks # if not running op-sepolia/mainnet/goerli
  • --rollup.halt=minor # if opting in to halting on incompatible breaking changes
  • --rollup.load-protocol-versions=true

op-geth

  • --rollup.halt=minor
  • --op-network=op-sepolia
  • --rollup.superchain-upgrades=true

# Canyon Hard Fork Upgrade

# Next Steps