Hi @Nero_eth great writeup on BALs!
Thinking of scaling L1, I was wondering why we are not doing a Bloom filter over the BAL. This would serve as a Block-level Not-Acceseed List (BNAL), or more precisely, a subset of the not-accessed list as defined by the Bloom filter, a Block-level Not-Acceseed Filter (BNAF).
We could then fast-forward this compact BNAF over the network, even before sending (and well before delivering) the block, and use it to pipeline and thus speed up block production in the following way:
- a block builder could use the previous block’s BNAF, excluding transactions that are excluded based on the BNAF bloom filter.
- This allows it to build a block even if it doesn not have the state change from the previous block.
- It also guarantees that the block could be valid even if the previous block will not get canonical.
Of course this would break the notion of the “chain” leading to a slightly more complex parallelized structure, with backward edges of depth 2. But the complexity is still limited.
Eventually, we could play with:
- pipelining more by using more BNAFs, allowing more depth in the “chain” links.
- playing with various levels of Bloom compression, as a compromise between speed of fast-forwarding the BNAF, and the amount of addresses excluded from the next block(s).
A simpler version of the above is just to fast-forward the whole BAL, and use that to form the exclusion list, but the BNAF should be much more compact, maybe even fitting in a simple IP packet.
What do you think? Maybe it is something others have already considered, I did not look up the literature …