Preparing for Granite Breaking Changes
This page outlines breaking changes related to the Granite network upgrade for chain operators and node operators. If you experience difficulty at any stage of this process, please reach out to developer support (opens in a new tab).
The Granite upgrade for OP Sepolia was activated on 1723478400 - Mon Aug 12 16:00:00 UTC. The Granite OP Mainnet upgrade will be activated at 1726070401 - Wed 11 Sep 2024 16:00:01 UTC, here is the governance vote (opens in a new tab).
What's Included in Granite
This upgrade is proposed in response to security vulnerabilities identified during a series of third-party security audits by Spearbit, Cantina, and Code4rena. None of the vulnerabilities have been exploited, and user assets are not and were never at risk. However, out of an abundance of caution, the permissioned fallback mechanism has been activated in order to avoid any potential instability while the vulnerabilities are patched. For more information on the permissioned fallback mechanism and the OP Stack's defense-in-depth approach to Fault Proof security, see the fault proof documentation (opens in a new tab).
The upgrade includes both a set of smart contract upgrades to fix the vulnerabilities identified in the audit as well as an L2 hardfork to improve the stability and performance of the fault proof system. In addition, we propose extending the capabilities of the Guardian and DeputyGuardian to set the anchor state for the fault proof system in order to prevent referencing invalid anchor states. Aside from implementing these fixes, the primary impact of this upgrade would be to reset user withdrawals at the planned time, similar to the initial Fault Proof upgrade.
Please refer to the governance proposal (opens in a new tab) for the full details.
For Chain Operators
The proposed Granite upgrade impacts OP chains and requires chain operators to upgrade their chain and configure the sequencer for Granite.
Prepare Sequencer Node
If you are operating an OP Chain that has an entry in the superchain-registry
(opens in a new tab), the Granite activation date is part of the op-node
and op-geth
nodes, and are using the --network and --op-network flags. No action is needed for the sequencer after preparing the SystemConfig
transaction.
For custom chains not included in the superchain-registry
(opens in a new tab), you will need to manually configure the activation timestamp (opens in a new tab). You have two configuration options for your sequencer node:
- Option 1: Set the Granite activation date in your
rollup.json
config file. You will still need to set theoverride.granite
flag inop-geth
with the UNIX timestamp. - Option 2: Alternatively, chain operators can use the override flags to configure your sequencer node by specifying a time in the future when Granite will activate.
- Set
override.granite
in bothop-node
andop-geth
to the UNIX timestamp of the block you want to activate the Granite hardfork or corresponding env vars for this. - In general, run
op-node --help
orop-geth --help
to see flags, their descriptions and environment variables.
- Set
Rollup Configuration Breaking Changes
Alt-DA mode has had a name change. What was formerly known as Plasma Mode has been renamed and you may need to update your rollup configuration file.
To verify proper configuration, chain operators should confirm in the startup logs of their op-node
and op-geth
that the correct Granite activation timestamps are set.
For Node Operators
Node operators will need to upgrade to Granite before the activation date. The op-node release v1.9.1 (opens in a new tab) and op-geth release v1.101408.0 (opens in a new tab) contain these changes.
These following steps are necessary for every node operator:
Update to the Latest Release
Configure the Granite Activation Date
If you are operating a node for an OP Chain that has an entry in the superchain-registry
(opens in a new tab), the Granite 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.
For node operators of custom chains not included in the superchain-registry
(opens in a new tab), you will need to manually configure the activation timestamp (opens in a new tab). This can be done one of two ways:
- Option 1: Set the activation time in the
rollup.json
forop-node
. You will still need to set theoverride.granite
flag inop-geth
if you use this option. - Option 2: Set the activation time via overrides (CLI) in both
op-node
andop-geth
. These will need to be set onop-node
andop-geth
for the sequencer and all other nodes.
Verify Your Configuration
Make the following checks to verify that your node is properly configured.
op-node
andop-geth
will log their configurations at startup- Check that the Granite time is set to
activation-timestamp
in the op-node startup logs - Check that the Granite time is set to
activation-timestamp
in the op-geth startup logs