feat(engine): EIP-8146 block access list sidecars (EL side) - #12261
Draft
MarekM25 wants to merge 1 commit into
Draft
feat(engine): EIP-8146 block access list sidecars (EL side)#12261MarekM25 wants to merge 1 commit into
MarekM25 wants to merge 1 commit into
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Changes
engine_notifyBlockAccessListV1(bytes)— validates the RLP sidecar and caches it in the newBlockAccessListSidecarStore(LRU, keyed bykeccak256(rlp(BAL)))ExecutionPayloadV5— the EIP-8146 payload shape: the inlineblockAccessListis replaced by itsblockAccessListHashcommitment (SlotNumber retained); exposed via newengine_newPayloadV6NewPayloadHandlerpairs an already-delivered sidecar with the arriving payload by the header'sblock_access_list_hashbefore processing, enabling the spec's early-prefetch / parallel-execution sequencingIsEip8146Enabled(JSON-RPC only; no SSZ-REST wire shape is specified yet)IsEip8146Enabledflag +eip8146TransitionTimestampchainspec plumbingSpec: 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?
Testing
Requires testing
If yes, did you write tests?
Notes on testing
Eip8146Tests: sidecar stored and retrievable by keccak commitment, malformed/empty sidecar rejection,ExecutionPayloadV5round-trips the hash commitment without an inline BAL. Engine capabilities and newPayload V3 suites pass unchanged (27 tests).Documentation
Requires documentation update
Requires explanation in Release Notes
Remarks
Known gaps, pending spec stabilization:
engine_getPayloadV6still 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 triggerHintBalprefetching.🤖 Generated with Claude Code