Discussion topic for EIP-7928: https://github.com/ethereum/EIPs/pull/9580
Update Log
- 2025-04-01: Initial Commit
- 2025-04-22: Discord Channel
- 2025-04-23: Design Space Exploration
External Reviews
TBD
Outstanding Issues
TBD
Discussion topic for EIP-7928: https://github.com/ethereum/EIPs/pull/9580
TBD
TBD
We ran some initial benchmarks using a block-level access list (providing only account addresses and storage keys, without balance diffs or post-execution write values) on Geth. After introducing BAL, Geth’s live sync performance improved by approximately 30%.
I wish the Specification wasn’t entirely code.
The BAL MUST be complete and accurate. It MUST NOT contain too few entries (missing accesses) or too many entries (spurious accesses).
The access list should be complete, but this may be impossible because of .PREVRANDAO
I like this spec a lot. It should also deprecate transaction-level access lists and remove the warm/cold distinction.
Is the code used for this experiment available somewhere? Would love to see it!
Why “The access list should be complete”? Why not “The access list must be complete”?
The BAL should be generated during block building. The verifier should then re-run the block and then verify that the BAL is complete (nothing misses, and there is nothing added which is not accessed).
Note that the contents of the BAL do not influence execution paths, so the EVM execution itself has no knowledge of the BAL. This is possible with tx-level access lists and in particular the divergence in gas costs if a slot/address is warm or cold, which could yield situations where it is impossible to generate a complete access list (which is also why eth_createAccessList
has a retry-limit, because otherwise you could find yourself in an infinite loop )
I thought must was impossible because I misremembered PREVRANDAO
. It’s less random (and useful) than I remembered.
yeah, we will publish a full post on the code, core ideas and basic benchmarks next week