Add a local DA provider for optimism bedrock chains. This requires a single network call per block to calculate the required DA gas for every user operation.
The DA provider contains an LRU cache to ensure that we only issue 1 network call update per block.
Compression happens locally now, via a fastlz binding at a specific commit. This commit is specifically the same used by LibZip.sol, which is used by the optimism DA oracle contract.
Nitro DA oracle with caching
The oracle only makes 1 network call per new UO + 1 network call per block
Due to the nitro implementation, there is the possibility of rounding errors, which are reduced here by scaling. Errors should underestimate by a small margin
Proposed Changes