This guide provides specific instructions for upgrading the OP Stack’s Layer 1 contracts fromDocumentation Index
Fetch the complete documentation index at: https://docs.optimism.io/llms.txt
Use this file to discover all available pages before exploring further.
op-contracts/v1.3.0 to op-contracts/v1.8.0. This upgrade includes important changes to the system configuration and introduces the Fault Proof System.
Overview of the Holocene upgrade
The Holocene upgrade is a protocol upgrade. Learn more about it in the Holocene notice page. This guide shows you how to take your OP Stack chain from the L2 Output Oracle System to a permissioned Fault Proof System contract version associated with the Holocene upgrade. After upgrading to OP Stack contracts v1.8.0 and enabling permissioned fault proofs, all pending (unfinalized) withdrawal proofs created on L1 are invalidated. This means that withdrawals must be manually reproven by users after the upgrade; the process is not automatic.Formatting config files
You need your chain’sdeployments.json and deploy-config.json
Ensure both files are correctly formatted, using the exact field names shown in the below examples, with ALL values - particularly the relevant ones - updated for your specific chain:
deployments.json:
deploy-config.json:
ProxyAdmin, ProxyAdminOwner, all L1 addresses, L2OO) are actually up to date by cross checking the superchain-registry and on-chain (you can do this easily with op-fetcher, especially for the deployments.json.
Step-by-step upgrade process
1. Create your working directory
Create a working directory:2. Copy config files
Copy yourdeployments.json and deploy-config.json into the working directory
3. Configure and deploy environment
Create and update an.env file with the required information:
4. Run the deployment process
Run the deployment process with the following command:kfoplabs/upgrade-v1.3.0-v1.8.0-permissioned image is available in the perm/op-contracts/v1.8.0 branch of the Optimism monorepo. If you need to fork or customize the upgrade script (e.g. to support L3s), start from that branch.
5. Verify outputs
The deployment should output four files:deploy.logis a log of the deployment processdeployments.jsonincludes the newly deployed contract addressesbundle.jsonis the safe transaction bundletransactions.jsonis the summary of the executed deployment transactionsstandard-addresses.jsonis the addresses ofSystemConfigImpl,OptimismPortal2Impl,L1CrossDomainMessengerImpl,L1StandardBridgeImpl,L1ERC721BridgeImpl, andOptimismMintableERC20FactoryImplvalidation.txtis used for Tenderly state diff validation. Some info needed for the superchain-ops task might be missing from this file, and will instead be generated during the Tenderly simulation.