feat(builder): add support for block access list (EIP-7928) for flashblocks builder#261
Draft
feat(builder): add support for block access list (EIP-7928) for flashblocks builder#261
Conversation
Add access list generation to the flashblocks builder, tracking all state reads and writes during EVM execution indexed by transaction position. This enables parallel execution hints for downstream consumers. Builder-side changes: - Add `access_lists` module to xlayer-builder with types, incremental builder, and DB interceptor (ported from Base's base-access-lists) - Add `process_transaction_state()` to extract access list data from revm changesets — uses `Account.original_info` for pre-state diffing instead of Base's DB wrapper approach (avoids State trait conflicts) - Integrate at all 3 execution points: sequencer txs, cached txs, pool txs - Finalize per-flashblock via `std::mem::take` + `build()` in `build_block()` - Populate `OpFlashblockPayloadMetadata.access_list` with EIP-7928 data - Bump deps/optimism submodule to include op-alloy access_list field 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Stop populating `receipts` and `new_account_balances` in flashblock metadata, replaced by the richer EIP-7928 access list. This aligns with Base PR base/base#1428 which removes these fields post-V1. - Remove `new_account_balances` computation from `build_block()` - Remove `receipts_with_hash` construction from `build_block()` - Set both fields to `None` in all metadata construction sites - Update test framework to handle optional receipts field - Bump deps/optimism submodule with optional metadata fields 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.6 <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.
Summary
Adds support for block-level access list generation (EIP-7928) to the flashblocks builder. The block-level access list adds tracking all state reads and writes during EVM execution indexed by transaction position, which is added into the optional OpFlashblockPayloadMetadata access list field (okx/optimism#221, ethereum-optimism/optimism#20096)
Builder-side changes:
access_listsmodule to xlayer-builder with types, incremental builder, and DB interceptorprocess_transaction_state()to extract access list data from revm changesets — usesAccount.original_infofor pre-state diffingstd::mem::take+build()inbuild_block()OpFlashblockPayloadMetadata.access_listwith EIP-7928 data🤖 Generated with Claude Code