Skip to content

Conversation

@clabby
Copy link
Contributor

@clabby clabby commented Oct 1, 2024

Overview

Simplifies the dynamic EIP-1559 params feature of Holocene by including the parameters within the PayloadAttributesV3 and the block Header.

Rationale

Currently, the EIP-1559 parameters are included within the L1Block contract. However, unlike other variables within the L1 info transaction:

  1. The EIP-1559 parameters are unlikely to change frequently enough to warrant being in the L1 info transaction. Most other fields change every L1 block, but even on the most ambitious OP Stack chains (Base), they only expect these values to change once per week.
  2. In the execution engine, all OP Stack EVM implementations currently load the L1 block info from the state database. However, since the EIP-1559 parameters are required at the beginning of the block, we would also need to lift this out of the EVM and into the block executor.
  3. The EIP-1559 params in L1 info makes the function to compute the next block's basefee stateful. That becomes a fairly invasive change, where the pre-block environment fillers now have to have access to the database, L1 block info formation from storage slots logic, etc. In reth, for example, the base fee computation function is within a lower-level config type, without access to the state or transactions. Ultimately we lose database access several layers of abstraction higher up, warranting a refactor to make this change work. In geth, it's similar, but the change is a bit less invasive higher up with only 2 layers to pass the state handle through.

There's precedent for SystemConfig variables that are needed at the beginning of a block, or that don't update frequently, to belong within the PayloadAttributes (The gas_limit). The block builder additionally having access to control the EIP-1559 parameters is constrained by consensus rule, and similarly to the gasLimit, is specified to be referenced from the SystemConfig in the derivation pipeline's payload builder. This change would simplify this feature's implementation within execution clients and save us from needlessly posting the parameters in the L1 info transaction every 2 seconds as such.

Why in the block header?

https://github.com/ethereum-optimism/specs/pull/404/files#diff-b93100978f12975e6b4ee660c7362c71d4f2a416ef7c9f0e76e17ca0062842efR144-R152

Copy link
Contributor Author

clabby commented Oct 1, 2024

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @clabby and the rest of your teammates on Graphite Graphite

@clabby clabby force-pushed the cl/rm-l1-info branch 2 times, most recently from 4c10e4c to 6c74c7e Compare October 1, 2024 01:02
@clabby clabby marked this pull request as draft October 1, 2024 01:35
@clabby clabby closed this Oct 1, 2024
@clabby clabby reopened this Oct 1, 2024
@clabby clabby force-pushed the cl/rm-l1-info branch 3 times, most recently from a3aea03 to c0f02e4 Compare October 1, 2024 04:50
@clabby clabby changed the title chore(holocene): Simplify eip1559Params feat(holocene): Simplify eip1559Params Oct 1, 2024
@clabby clabby marked this pull request as ready for review October 1, 2024 05:05
@refcell
Copy link
Contributor

refcell commented Oct 1, 2024

Although I think this is sound, I'm a bit concerned of using the nonce in case we need it down the road for something. Placing these in the L1 info feels more scalable to me and is a more consistent way of introducing modifications, though there is the aforementioned tradeoff that the basefee computation becomes invasive.

@tynes
Copy link
Contributor

tynes commented Oct 1, 2024

We should make sure that there is a getter for EIP1559 params on the SystemConfig so that its legible on chain what the config is. This will help to make standardness checks possible as part of the superchain-registry. This might also be in the spec, I just see the getters removed from the L1Block contract, would be good to double check

@tynes tynes merged commit fb1fb8e into main Oct 1, 2024
@tynes tynes deleted the cl/rm-l1-info branch October 1, 2024 20:03
github-merge-queue bot pushed a commit to alloy-rs/op-alloy that referenced this pull request Oct 1, 2024
## Overview

Removes the `Holocene` variant of the L1 info transaction. The
specification of the dynamic EIP-1559 parameters has changed to put this
feature in the `PayloadAttributes` instead.

ethereum-optimism/specs#404
github-merge-queue bot pushed a commit to alloy-rs/op-alloy that referenced this pull request Oct 1, 2024
…utes` (#138)

## Overview

Adds the `eip1559Params` field to the `OptimismPayloadAttributes, per
ethereum-optimism/specs#404
docker-dragonmj9ol added a commit to docker-dragonmj9ol/op-alloy that referenced this pull request Nov 6, 2025
## Overview

Removes the `Holocene` variant of the L1 info transaction. The
specification of the dynamic EIP-1559 parameters has changed to put this
feature in the `PayloadAttributes` instead.

ethereum-optimism/specs#404
docker-dragonmj9ol added a commit to docker-dragonmj9ol/op-alloy that referenced this pull request Nov 6, 2025
…utes` (#138)

## Overview

Adds the `eip1559Params` field to the `OptimismPayloadAttributes, per
ethereum-optimism/specs#404
theochap pushed a commit to ethereum-optimism/optimism that referenced this pull request Jan 21, 2026
…p-alloy#137)

## Overview

Removes the `Holocene` variant of the L1 info transaction. The
specification of the dynamic EIP-1559 parameters has changed to put this
feature in the `PayloadAttributes` instead.

ethereum-optimism/specs#404
theochap pushed a commit to ethereum-optimism/optimism that referenced this pull request Jan 21, 2026
…utes` (alloy-rs/op-alloy#138)

## Overview

Adds the `eip1559Params` field to the `OptimismPayloadAttributes, per
ethereum-optimism/specs#404
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants