-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Description
Currently the Euclid fork maps to the Ethereum Shanghai fork, due to missing EIPs that Scroll doesn't support. Below is an overview of the required work to allow for ScrollSpecId::Feynman to map to the Ethereum Prague fork, which would avoid to much overloading of the revm fork.
Cancun
- EIP-1153: Transient storage opcodes → already active for Scroll since Curie.
- EIP-5656: MCOPY - Memory copying instruction → already active for Scroll since Curie.
- EIP-4788: Beacon block root in the EVM → would be implemented in Reth, so activating it should not influence the behavior of Revm.
- EIP-4844: Shard Blob Transactions → Would require setting the
blob_excess_gas_and_pricefield of theBlockEnvtoSome(0), and would activate EIP-4844 transactions in revm. If we prevent these transactions at mempool level and validate their absence at block validation level, this should be acceptable. This is similar to what OP does. - EIP-6780: SELFDESTRUCT only in same transaction → NOT ACTIVE
- EIP-7516: BLOBBASEFEE opcode → NOT ACTIVE
Shanghai
- EIP-7702: Set EOA account code → already active for Scroll since Euclid.
- EIP-2537: Precompile for BLS12-381 curve operations → NOT ACTIVE
- EIP-7623: Increase calldata cost → planned for Feynman.
- EIP-2935: Save historical block hashes in state → would be implemented in Reth, so activating it should not influence the behavior of revm.
Changes required in revm
- Map Feynman to Prague
- Deactivate BLOBBASEFEE from the instructions.
- Deactivate BLS12-381 from precompiles.
Changes required in Reth
- Set
blob_excess_gas_and_pricetoSome(0)in all places that prepare aBlockEnv. Similar to the ConfigureEvm implementation to Op.
Metadata
Metadata
Assignees
Labels
No labels