FuelLabs / fuel-core

Rust full node implementation of the Fuel v2 protocol.
Other
58.15k stars 2.77k forks source link

Select eviction policy for DA compression temporal registry #2231

Open Dentosal opened 1 week ago

Dentosal commented 1 week ago

Introduced in #1609.

DA compression uses "temporal registry", a key-value database where each compressed block header lists new writes to the registry. Since the keyspace is limited to 24bits per type, keys have to be removed according to some logic. The scheme is designed so that changing the way the evicted keys are picked can be freely changed without affecting backwards compatibility.

Currently, the code simply removes the lowest key that's not used by the current block. This suboptimal. Ideally, the values are least likely to be reused in the future will be dropped first (and values never written to are always dropped first). Something like LRU might be a good candidate for this. To get best results, we should observe real data from the system to see what the reuse rates are.

https://github.com/FuelLabs/fuel-core/blob/8529440440955f04765d3769a32dd3ea75c20190/crates/compression/src/eviction_policy.rs#L21-L31