Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Tracking] Pectra support / Isthmus #23

Open
emhane opened this issue Jan 17, 2025 · 5 comments
Open

[Tracking] Pectra support / Isthmus #23

emhane opened this issue Jan 17, 2025 · 5 comments
Labels
A-kona Area: kona (rust fault prover) A-maili Area: maili (op-rs ecosystem dependency) A-op-alloy Area: op-alloy (op-rs dependency) A-op-batcher Area: op-batcher A-op-geth Area: op-geth (go execution client incl. go evm) A-op-node Area: op-node (go consensus client) A-op-program Area: op-program (go fault-prover) A-op-reth Area: op-reth (rust execution client) A-op-revm Area: op-revm (rust evm) A-spec Area: spec H-isthmus Hardfork: change is planned for Isthmus upgrade H-pectra Hardfork: change planned for Pectra (L1) upgrade M-tracking Meta: tracking issue U-node Upgrade: involving changes to node component (cl, el, etc.)

Comments

@emhane
Copy link
Member

emhane commented Jan 17, 2025

Tracks spec inclusion and implementation of Pectra support in Isthmus. Noop specs are required for not breaking as L1 hardforks. EIPs marked as noop or nodiff are low hanging fruit to write specs for [and to implement].

@emhane emhane added A-kona Area: kona (rust fault prover) A-maili Area: maili (op-rs ecosystem dependency) A-op-alloy Area: op-alloy (op-rs dependency) A-op-geth Area: op-geth (go execution client incl. go evm) A-op-node Area: op-node (go consensus client) A-op-program Area: op-program (go fault-prover) A-op-reth Area: op-reth (rust execution client) A-op-revm Area: op-revm (rust evm) A-spec Area: spec H-isthmus Hardfork: change is planned for Isthmus upgrade H-pectra Hardfork: change planned for Pectra (L1) upgrade M-tracking Meta: tracking issue U-node Upgrade: involving changes to node component (cl, el, etc.) labels Jan 17, 2025
@emhane emhane pinned this issue Jan 17, 2025
@emhane emhane changed the title [Tracking] Isthmus [Tracking] Pectra support / Isthmus Jan 17, 2025
@emhane emhane added the A-op-batcher Area: op-batcher label Jan 24, 2025
@refcell
Copy link

refcell commented Jan 31, 2025

System Contracts Plan

The complete list of EIPs included in Pectra (as specified by the [EIP-7600](https://eips.ethereum.org/EIPS/eip-7600) hardfork meta) are with notes for predeploys.
  • EIP-2537: Precompile for BLS12-381 curve operations
    • Only contains precompiles.
  • EIP-2935: Save historical block hashes in state
    • Contains the Block Hashes system contract.
  • EIP-6110: Supply validator deposits on chain
    • Contains the deposit contract address that is not expected to work on L2 and is safer to exclude as proto notes.
  • EIP-7002: Execution layer triggerable exits
    • Contains a withdrawals request predeploy.
  • EIP-7251: Increase the MAX_EFFECTIVE_BALANCE
    • Consolidation requests predeploy.
  • EIP-7549: Move committee index outside Attestation
    • N/A - consensus layer changes
  • EIP-7623: Increase calldata cost
    • N/A
  • EIP-7685: General purpose execution layer requests
    • N/A
  • EIP-7691: Blob throughput increase
    • N/A
  • EIP-7702: Set EOA account code
    • N/A
  • EIP-7840: Add blob schedule to EL config files
    • N/A

EIPs with Predeploys

Concern

If we don't include them and all existing L1 tests assume them, we could have a strange bug someplace.

Therefore, we should heavily consider including them unless there is a good reason not to.

Considerations

Upgrade Path

Can we re-create the deterministically deployed tx with a deposit tx?
If so, this is preferred.

We could also just set code in the EL but that introduces another diff.

Genesis Path

We need to update L2Genesis.s.sol script to set the code at the correct addresses.

From proto:

With the beacon-root history accumulator contract in the previous L1 upgrade, very similar to the new block-hash accumulator contract, we used a trick with deposits to deploy the contract automatically as part of the upgrade, in case it's not already permissionlessly deployed. I would strongly recommend we do the same type of thing this upgrade.

Current State

EIP-2935

Already specified and included as a pre-block contract call in kona.

EIP-6110

Re-uses the deposit contract address.

EIP-7002

Already implemented in kona as a pre-block contract call.

EIP-7251

Already implemented in kona as a pre-block contract call

@emhane
Copy link
Member Author

emhane commented Jan 31, 2025

@refcell 6110 is already nooped in op-reth, see #21

@emhane
Copy link
Member Author

emhane commented Jan 31, 2025

@refcell doesn't 2537 require pre-deploy?

@refcell
Copy link

refcell commented Jan 31, 2025

2537 contains precompiles

@emhane
Copy link
Member Author

emhane commented Jan 31, 2025

alright, no op for platform then who have to deploy the contracts, removing platform label from 2537

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-kona Area: kona (rust fault prover) A-maili Area: maili (op-rs ecosystem dependency) A-op-alloy Area: op-alloy (op-rs dependency) A-op-batcher Area: op-batcher A-op-geth Area: op-geth (go execution client incl. go evm) A-op-node Area: op-node (go consensus client) A-op-program Area: op-program (go fault-prover) A-op-reth Area: op-reth (rust execution client) A-op-revm Area: op-revm (rust evm) A-spec Area: spec H-isthmus Hardfork: change is planned for Isthmus upgrade H-pectra Hardfork: change planned for Pectra (L1) upgrade M-tracking Meta: tracking issue U-node Upgrade: involving changes to node component (cl, el, etc.)
Projects
None yet
Development

No branches or pull requests

2 participants