bal-codec
EIP-7928 Block-Level Access List: RLP decoding, ordering/uniqueness
validation, keccak256(rlp(bal)), and verification against the header's
blockAccessListHash. Knows nothing about Solidity, storage, or nodes —
this is the one crate a spec change touches.
use ;
// The empty BAL is `rlp([])` = 0xc0; its hash is fixed by the EIP.
let bal = decode?;
assert!;
assert_eq!;
bal.verify?;
# Ok::
With the json feature, the execution-apis JSON form served by
eth_getBlockAccessList decodes through the same validation:
let v: Value = rpc_response.clone;
let bal = from_rpc_json?;
assert_eq!;
Lookups use the sorted order the EIP mandates: bal.account(&addr) and
account.slot(&key) are binary searches. A BAL that violates ordering or
uniqueness is rejected, never softly accepted.
Part of balq.