Skip to content

feat(engine): EIP-8146 block access list sidecars (EL side) - #12261

Draft
MarekM25 wants to merge 1 commit into
NethermindEth:masterfrom
MarekM25:feature/eip-8146
Draft

feat(engine): EIP-8146 block access list sidecars (EL side)#12261
MarekM25 wants to merge 1 commit into
NethermindEth:masterfrom
MarekM25:feature/eip-8146

Conversation

@MarekM25

@MarekM25 MarekM25 commented Jul 4, 2026

Copy link
Copy Markdown
Contributor

Changes

  • engine_notifyBlockAccessListV1(bytes) — validates the RLP sidecar and caches it in the new BlockAccessListSidecarStore (LRU, keyed by keccak256(rlp(BAL)))
  • ExecutionPayloadV5 — the EIP-8146 payload shape: the inline blockAccessList is replaced by its blockAccessListHash commitment (SlotNumber retained); exposed via new engine_newPayloadV6
  • NewPayloadHandler pairs an already-delivered sidecar with the arriving payload by the header's block_access_list_hash before processing, enabling the spec's early-prefetch / parallel-execution sequencing
  • Capabilities: both methods advertised only when IsEip8146Enabled (JSON-RPC only; no SSZ-REST wire shape is specified yet)
  • IsEip8146Enabled flag + eip8146TransitionTimestamp chainspec plumbing

Spec: https://eips.ethereum.org/EIPS/eip-8146 (Hegotá / EIP-8081 candidate). Not yet activated in any fork file — activation lands with the Hegotá fork wiring (#12226).

Part of the Hegotá (EIP-8081) PR series.

Types of changes

What types of changes does your code introduce?

  • New feature (a non-breaking change that adds functionality)

Testing

Requires testing

  • Yes

If yes, did you write tests?

  • Yes

Notes on testing

Eip8146Tests: sidecar stored and retrievable by keccak commitment, malformed/empty sidecar rejection, ExecutionPayloadV5 round-trips the hash commitment without an inline BAL. Engine capabilities and newPayload V3 suites pass unchanged (27 tests).

Documentation

Requires documentation update

  • No

Requires explanation in Release Notes

  • No

Remarks

Known gaps, pending spec stabilization: engine_getPayloadV6 still returns the BAL inline for the builder flow (the EIP's separate-return shape for getPayload is not yet concretely specified), and validation of a payload whose sidecar never arrives currently follows the existing missing-BAL path rather than generate-then-compare-hash. The sidecar store does not yet trigger HintBal prefetching.

🤖 Generated with Claude Code

The block access list no longer travels in the execution payload
envelope: engine_notifyBlockAccessListV1 delivers the RLP-encoded BAL
independently (validated and cached by its keccak commitment), and the
new engine_newPayloadV6 accepts ExecutionPayloadV5, which replaces the
inline BAL with its blockAccessListHash commitment. NewPayloadHandler
pairs an already-delivered sidecar with the arriving payload by the
header commitment before processing.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@github-actions github-actions Bot added eip new feature taiko related to the taiko alethia rollup labels Jul 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

eip new feature taiko related to the taiko alethia rollup

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant