Hi I’m Maurelian, an engineer at OP Labs.
OP Labs is a software development company focused on the Optimism ecosystem, and a core developer of the OP Stack. We provide some services to, but do not represent or speak on behalf of the Optimism Foundation.
This is the fourth proposed network upgrade after Bedrock. It introduces a new L1 contract, the SuperchainConfig
, along with improvements to the existing pause mechanism.
Executive Summary
This protocol upgrade would not only strengthens individual chains, but leverages the collective security intelligence of the entire Superchain ecosystem. The proposed upgrade takes the current incident response mechanism a step further, introducing a Superchain-wide pause mechanism that can enhance protection across multiple fronts, including the L1CrossDomainMessenger and withdrawals for ERC-20 and ERC-721 tokens, which are additional security critical code paths that protect user assets.
If this vote passes, the L1 contracts which support the OP Mainnet network will be upgraded to the versions of those contracts in the optimism repo at commit 856c08b
(tagged as release candidate op-contracts/v1.2.0-rc.1
).
Technical Specification
This is a security focused upgrade. It is limited to the L1 smart contracts, and does not affect the node or execution client software.
The following changes are being introduced with the upgrade:
-
A new
SuperchainConfig
contract and improvements to the pausability mechanism providing stronger protection for assets held in the bridge.- See the
SuperchainConfig
specification
- See the
-
The
OptimismPortal
andL1CrossDomainMessenger
are updated to fix an issue (which would only occur during an upgrade), resulting in some values being unnecessarily reset to their defaults after an upgrade. -
The L1
OptimismMintableERC20TokenFactory
is being updated with two improvements:
Security Considerations
This upgrade has been audited by Trust Security, the final report can be found here.
Summary of the audit findings
The audit did not identify any security issues in the system’s newly added functionality.
The audit did however identify an issue in the system’s existing upgrade path. The affected contracts were fixed and upgraded on the Sepolia testnet.
Importantly, the issue could only be exploited if the upgrade was performed in a specific way. In such a case, an attacker could have intercepted the upgrade transaction, to perform a one-time double withdrawal of ETH held in the L1CrossDomainMessenger
. Note that this contract currently holds zero ETH at the time of writing. Under normal circumstances, the vast majority of ETH is stored in the OptimismPortal
.
Please see TRST-H-1 in the audit report for a detailed discussion of the issue.
This issue is only exploitable during an upgrade, and the upgrade scripts have been fixed, so no future upgrades will be at risk of this issue.
No other findings from the audit presented a risk of a loss of assets.
Impact Summary
OP Labs does not anticipate any down time due to this upgrade, and node operators are not affected.
Existing contracts retain their current interfaces in order to remain backwards compatible with any existing integrations.
The primary new functionality will be an extension of the pause mechanism, which prevents the withdrawal of assets from the system in the event that a vulnerability is identified. This will improve the incident response capacity of OP Labs.
Currently only the OptimismPortal
’s proveWithdrawalTransaction()
and finalizeWithdrawalTransaction()
functions are pausable.
Following this upgrade, this will expand to include the following additional functions:
L1CrossDomainMessenger.relayMessage()
L1StandardBridge.finalizeBridgeERC20()
L1StandardBridge.finalizeERC20Withdrawal
L1tandardBridge.finalizeBridgeETH()
L1StandardBridge.finalizeETHWithdrawal
L1ERC721Bridge.finalizeBridgeERC721()
Prior to the upgrade, a new proxy (at the address here) and implementation (at 0x53c165169401764778f780a69701385eb0ff19b7
) for the SuperchainConfig
(version 1.1.0
) has been deployed and initialized.
The upgrade will also result in the following changes to the internal state of the existing L1 contracts, with the implementations corresponding to the addresses listed here.
Summary of these changes:
- The
L1CrossDomainMessenger
will be upgraded to version2.2.0
, and a new storage variablesuperchainConfig
will hold the address of theSuperchainConfig
proxy contract. - The
L1ERC721Bridge
contract will be upgraded to version2.0.0
, and a new storage variablesuperchainConfig
will hold the address of theSuperchainConfig
proxy contract. - The
L1StandardBridge
contract will be upgraded to version2.0.0
, and a new storage variablesuperchainConfig
will hold the address of theSuperchainConfig
proxy contract. - The
OptimismPortal
contract will be upgraded to version2.1.0
, and a new storage variablesuperchainConfig
will hold the address of theSuperchainConfig
proxy contract.5. TheSystemConfig
contract will be upgraded to version1.11.0
.6. TheL2OutputOracle
contract will be upgraded to version1.7.0
. - The
OptimismMintableERC20Factory
contract will be upgraded to version1.8.0
.
All L1 contracts have also had modifications to the source code formatting (white space and comment-style) which do not otherwise affect their behavior.
Action Plan
If this proposal passes a Token House vote, the L1 contracts will be upgraded following the completion of the Citizens’ House Cycle #18 Veto Period. The upgrade will be completed atomically such that all affected L1 contracts will be upgraded within a single transaction.
As this is a contracts-only upgrade, no action is required by node operators.