Skip to content

Conversation

@Thegaram
Copy link

@Thegaram Thegaram commented Nov 20, 2025

1. Purpose or design rationale of this PR

During stateless execution, revm eagerly loads access list entries, even if they are not used during execution. To ensure compatibility with witnesses produced by l2geth, we explicitly add access list items in debug_executionWitness.

2. PR title

Your PR title must follow conventional commits (as we are doing squash merge for each PR), so it must start with one of the following types:

  • feat: A new feature

3. Deployment tag versioning

Has the version in params/version.go been updated?

  • This PR doesn't involve a new deployment, git tag, docker image tag, and it doesn't affect traces
  • Yes

4. Breaking change label

Does this PR have the breaking-change label?

  • This PR is not a breaking change
  • Yes

Summary by CodeRabbit

  • Refactor

    • Preloads access-list entries into execution witness so access-list-derived reads are present before block processing.
  • Chores

    • Patch version increment (minor build/version metadata update).

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link

coderabbitai bot commented Nov 20, 2025

Walkthrough

Adds preloading of access list entries into the execution witness for all transactions in a block. The change iterates through each transaction's AccessList entries and loads corresponding account balances and storage keys into the witness state before block processing begins.

Changes

Cohort / File(s) Summary
Access List Preloading
eth/api.go
Added logic to prefetch access list entries from all transactions in a block into the execution witness, including account balances and referenced storage keys

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Review the iteration logic over AccessList entries to ensure all required fields are accessed
  • Verify witness state population is correct for both account and storage entries
  • Confirm no edge cases with empty or malformed access lists
  • Check integration with existing block processing flow

Suggested reviewers

  • georgehao
  • lightsing

Poem

🐰 A rabbit's verse on witness ways,
We hop through access lists ablaze,
Preloading balances and keys so true,
Before the block gets rendered through!

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title 'feat(witness): include access-list in witness' follows Conventional Commits format with 'feat' type and clearly describes the main change: adding access-list entries to the witness.
Description check ✅ Passed The pull request description follows the required template structure and includes all essential sections: purpose/design rationale, conventional commit-compliant title (feat), deployment versioning decision, and breaking change assessment.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat-witness-include-access-list

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@Thegaram Thegaram requested a review from Copilot November 20, 2025 13:36
Copilot finished reviewing on behalf of Thegaram November 20, 2025 13:37
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR adds access-list preloading to the execution witness generation process to maintain compatibility with revm's eager loading behavior. Since revm always loads access-list entries even if they aren't used during execution, the witness must include these entries to match the behavior expected by l2geth.

  • Preload all access-list addresses and storage slots into the witness before block processing
  • Increment patch version from 14 to 15

Reviewed Changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
params/version.go Increments patch version to 15 to reflect the witness generation change
eth/api.go Adds logic to iterate through all transactions and preload access-list entries (accounts and storage) into the witness before block processing

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@Thegaram Thegaram merged commit d53c0e1 into develop Nov 21, 2025
26 of 27 checks passed
@Thegaram Thegaram deleted the feat-witness-include-access-list branch November 21, 2025 09:51
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.

4 participants