Proposal Preview: Implement Prague features in Isthmus
Proposal Title: Pectra Hardfork on Optimism
Proposal Type: Protocol Upgrade
Please note that this is a Proposal Preview and is not an actual proposal. It is meant to allow the Collective to provide feedback and ask questions before an official proposal is published.
I鈥檓 Julian, a software engineer at Base working on the OP stack. I wrote this proposal and received reviews from @ajsutton.
Neither Base nor I represent or speak on behalf of the Optimism Foundation.
Executive Summary
The Pectra hardfork on the Ethereum mainnet is imminent with Ethereum core devs finalizing the EIPs to be included and deciding on a mainnet fork block soon. This hardfork includes many EIPs that we want to include in the OP stack like BLS12-381 precompiles, historical block hashes on-chain, and set-code transactions (EIP-7702).
To reduce complexity of upgrades and the latency between L1 and L2 adoption of these new features, we should include Pectra features in the Isthmus hard fork.
Motivation
Many of the EIPs in the Pectra hardfork are useful to end users, so including these features as soon as possible after the release of L1 is important to achieving feature parity with L1.
-
EIP-7702 allows many additional wallet features that were not possible before. If Optimism doesn鈥檛 adopt these features soon after L1, users may be frustrated about a sub-optimal wallet experience.
-
EIP-2935 allows reading block hashes from a system contract, which some new contract deployments may rely on. This will help us achieve predeploy compatibility with L1.
-
EIP-2537 includes new precompiles for BLS12-381 curve operations which will make ZK proofs cheaper to execute and signature aggregation which allows compressing the size of batched transaction signatures.
Also, in order to reduce the diff from L1 and simplify hard fork scheduling, we should carry out the entire Pectra upgrade in Isthmus instead of implementing each EIP individually.
Specifications
Technical Details
Specs for each EIP are implemented in the specs repo under Isthmus. This spec explains how the protocol should change to adopt Pectra EIPs.
Included EIPs:
- EIP-7702: Set code transaction
- Added authorization list to span batch format: specs/specs/protocol/isthmus/derivation.md at main 路 ethereum-optimism/specs 路 GitHub
- EIP-2537: BLS12-381 precompiles
- Added input limits and specify acceleration: specs/specs/protocol/isthmus/exec-engine.md at a795bb1f8c34410c47f05d4c3614482361db64b1 路 ethereum-optimism/specs 路 GitHub
- EIP-2935: Block hashes contract predeploy
- Added network upgrade transaction: specs/specs/protocol/isthmus/derivation.md at a795bb1f8c34410c47f05d4c3614482361db64b1 路 ethereum-optimism/specs 路 GitHub
- EIP-7251: Increase the MAX_EFFECTIVE_BALANCE
- Only affects execution clients
- EIP-7623: Increase calldata cost
- Only affects execution clients
- EIP-7002: Execution layer triggerable withdrawals
- Not applicable to OP
- Requests sent to this contract are ignored, and the contract is not deployed by default
- EIP-6110: Supply validator deposits on chain
- Not applicable to OP
- Requests sent to this contract are ignored, and the contract is not deployed by default
- EIP-7685: General purpose execution layer requests
- No requests are currently applicable to OP, so the execution requests array is always empty in Isthmus.
Security Considerations
The new BLS precompiles could affect the performance of the fault proof program if not accelerated (similar to the existing ecrecover
precompile, but because they鈥檙e accelerated this concern is fully mitigated.
Links to Specs
- L1 devnet-6 EIP list (latest): https://notes.ethereum.org/@ethpandaops/pectra-devnet-6
- Isthmus upgrade spec: specs/specs/protocol/isthmus/overview.md at main 路 ethereum-optimism/specs 路 GitHub
- Pectra support on Isthmus project: GitHub 路 Where software is built
Impact Summary
Implementing Pectra features in Isthmus will make the next hardfork require upgrades to certain key components.
- The
op-challenger
preimage will need to be upgraded to support new accelerated precompiles and new transaction types proxyd
needs to be updated to handle set code transactions- Span batch format is updated to include the new tx type
All of the typical components that need to be upgraded during a hardfork also need to be upgraded. However, this proposal does not cover the Isthmus hardfork itself, only the implementation of Pectra within Isthmus.
Action Plan
The specs for Pectra are complete and published to the specs repo linked above.
- Feb 6: if devnet-6 stable, pick testnet fork slots for Holesky and Sepolia on ACDC#150
- Feb 10: client releases out with Holesky and Sepolia configurations
- Feb 20: if Holesky has forked without issues, pick mainnet fork slot
The core dev team doesn鈥檛 want to pick a mainnet time slot earlier to avoid creating misleading expectations, but we can expect mid-March if everything goes smoothly with the testnet.
There鈥檚 no firm date for Isthmus yet, but we鈥檙e aiming for end of March, or 2 weeks after L1 mainnet Pectra. We鈥檒l probably set a firm date for Isthmus once the other features besides Pectra are fully spec鈥檇 and implemented and once the L1 core dev team has set a date for L1 Pectra.
If the L1 core dev team decides to delay the release of Pectra at the last minute, we can move Pectra to the next OP hardfork or reschedule the hardfork depending on how long L1 delays.
Once we have a date for L1 Pectra and Isthmus, we should notify the community in the same way as other hardforks.
Conclusion
This proposal outlines how we鈥檒l implement Pectra features on Isthmus as a fast follow-up to L1. We believe this upgrade will allow OP to achieve feature parity with L1 as soon as possible, and hope the community votes to implement these EIPs in Isthmus, the next OP hardfork.