Skip to content

feat(builder): add support for block access list (EIP-7928) for flashblocks builder#261

Draft
sieniven wants to merge 4 commits intomainfrom
niven/flashblocks-access-list
Draft

feat(builder): add support for block access list (EIP-7928) for flashblocks builder#261
sieniven wants to merge 4 commits intomainfrom
niven/flashblocks-access-list

Conversation

@sieniven
Copy link
Copy Markdown
Contributor

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:

  • Add access_lists module to xlayer-builder with types, incremental builder, and DB interceptor
  • Add process_transaction_state() to extract access list data from revm changesets — uses Account.original_info for pre-state diffing
  • Integration 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

sieniven and others added 4 commits April 15, 2026 12:29
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>
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.

1 participant