You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
execution: treat empty BAL as valid access list (EIP-7928) (#20776)
This update aligns BAL handling with the requirements described in
[EIP-7928](https://eips.ethereum.org/EIPS/eip-7928), which requires that
even an empty BAL be recognized as a legitimate access list. According
to the specification, the header should include the `rlp.encode([])`
hash, while the payload should have the standard empty RLP list
(`0xc0`). Previously, even though the header hash was established
correctly, the BAL bytes themselves were not saved. This effectively
regarded an empty BAL as if it did not exist, contradicting the desired
behavior indicated in the EIP.
With this change, empty BALs are now handled consistently like any other
BAL. The RLP decoder now returns an initialized empty slice instead of
nil, so `0xc0` naturally round-trips through the standard encode/decode
path without special-case logic. The `len(block.BlockAccessList) > 0`
guard in the DB inserter correctly persists the `[]byte{0xc0}` sidecar
(length 1), and the engine API response encodes it back via standard RLP
rules. The payload response path also retains the `br.BlockAccessList !=
nil` guard so that a genuinely missing BAL is never silently emitted as
`0xc0`. This removes any ambiguity between a valid empty BAL and cases
where BAL data is missing or pruned.
0 commit comments