TLDR
On March 19, 2024, Optimism initiated a fault-proof upgrade on the Optimism Sepolia network that broke the functionality of the op-verifier and op-gateway due to the replacement of L2OutputOracle by DisputeGameFactory.
We are currently developing Opti.domains and are eager to contribute to developing and maintaining the Optimism verifier and gateway implementations. We are implementing an upgrade to the op-verifier and op-gateway to support DisputeGameFactory and have opened a pull request on the repository.
On March 19, 2024, Optimism initiated a significant upgrade on the Optimism Sepolia network to introduce a fault-proof system. Unfortunately, this upgrade broke the functionality of the op-verifier and op-gateway components of the ENS EVM Gateway. Below is an overview of the upgradeās key points.
The L2OutputOracle is being entirely removed and replaced by the OptimismPortal and DisputeGameFactory. The L2OutputOracle smart contract is currently used by the trusted Proposer role to store L2 state output proposals. Presently, developers use these outputs to prove that their withdrawals actually happened on L2. But with fault proofs, developers will have to change how their client software proves withdrawals in the first step of the two-step withdrawal process.
You can see proof on Etherscan that L2OutputOracle has ceased on Optimism Sepolia: https://sepolia.etherscan.io/address/0x90E9c4f8a994a250F6aEfd61CAFb4F2e895D458F
Despite the lack of documentation on upgrading from L2OutputOracle to DisputeGameFactory, we have reverse-engineered the Optimism code and implemented the necessary upgrades to the op-verifier and op-gateway in this pull request. Here is a summary of the changes introduced:
L2OutputOracle | DisputeGameFactory |
---|---|
l2OutputIndex | disputeGameIndex |
getL2Output(ā¦) | gameAtIndex(ā¦) |
outputRoot | gameProxy.rootClaim().raw() |
latestOutputIndex() | gameCount() + findLatestGames(ā¦) |
outputProposal.l2BlockNumber | disputeGame.l2BlockNumber() |
To facilitate a smooth transition, itās crucial to incorporate an activation point system into the op-verifier smart contract. Moreover, to ensure our gateway remains adaptable to future updates, the op-verifier contract should be designed with an upgradeable pattern. However, itās been observed that the EVM Gateway is intended to be immutable, leading us to forego these enhancements for the EVM Gateway. Should you be interested in exploring the implementation of an activation point or an upgradeable smart contract, please let us know.
We have already applied the upgradeable design pattern to all contracts within our Opti.Domains CCIP Gateway and plan to introduce an activation point to our Opti.Domains CCIP Gateway shortly. This approach will enable us to upgrade without disrupting the user experience.
The source code for Opti.Domains CCIP Gateway is available at:
The Opti.Domains team is eager to continue contributing to developing and maintaining the Optimism verifier and gateway implementations.
The integration of the fault-proof system is scheduled to merge into the Optimism Mainnet in Q3 2024.
We also have a plan to open a temp check on scaling ENS to Optimism and generating revenue for ENS DAO early next week.
We would like to work with ENS DAO and hope to receive a warm welcome into the ENS family.
Feel free to comment below if you have any comments.