go-ethereum/eth/catalyst
Bosul Mun e595aedcd0
Some checks are pending
/ Linux Build (push) Waiting to run
/ Linux Build (arm) (push) Waiting to run
/ Keeper Build (push) Waiting to run
/ Windows Build (push) Waiting to run
/ Docker Image (push) Waiting to run
core/txpool/blobpool: add cache for GetBlobs request (#35124)
This PR introduces a cache for GetBlobs request.

The main purpose of this PR is to reduce the getBlobs latency by reading and
decoding blobs from the pool in advance of the actual query. This is important
especially in the context of a sparse blobpool, since it may be necessary to
recover blobs from cells on a getBlobs request.

Previously, the Engine API read and decoded blobs from the pool on every call.
Now those calls check the cache and only fall back to the pool on a miss.

The cache has two modes:

- In topK mode (default), it wakes up periodically, picks the most profitable
  pending blob transactions up to the current fork's maxBlobsPerBlock, and loads
  their blobs. The selection logic is shared with the miner's block-building
  logic. The selection size is derived from eip4844.MaxBlobsPerBlock at the
  current head.
- When the CL calls HasBlobs, the cache switches to hasBlobs mode and tries to
  pin the set it just reported as available. Cache updates (read, decode, and
  optionally conversion in the future) run in background goroutines.

---------

Co-authored-by: Felix Lange <fjl@twurst.com>
2026-06-11 17:26:15 +02:00
..
api.go core/txpool/blobpool: add cache for GetBlobs request (#35124) 2026-06-11 17:26:15 +02:00
api_benchmark_test.go eth/catalyst, core/txpool/blobpool: add tracing to GetBlobs endpoints (#35026) 2026-05-22 11:24:14 +08:00
api_test.go eth/catalyst, core/txpool/blobpool: add tracing to GetBlobs endpoints (#35026) 2026-05-22 11:24:14 +08:00
api_testing.go eth/catalyst: respect slot num if specified in payload attributes for testing_buildBlockV1 (#34722) 2026-04-14 19:00:29 -04:00
api_testing_test.go eth/catalyst: implement testing_buildBlockV1 (#33656) 2026-02-23 15:56:31 +01:00
metrics.go eth/catalyst: implement getBlobsV3 (#33404) 2025-12-31 09:48:50 +08:00
queue.go cmd/geth: implement dev mode for post-merge (#27327) 2023-07-06 04:42:34 -04:00
simulated_beacon.go rpc, internal/telemetry: trace JSON-RPC response writes (#35049) 2026-06-02 14:13:06 +02:00
simulated_beacon_api.go eth/catalyst: abort dev mode block commit if shut down is triggered (#32166) 2025-07-08 22:15:53 +09:00
simulated_beacon_test.go eth/catalyst: set FeeRecipient in dev mode (#31316) 2025-03-17 09:32:44 +01:00
witness.go eth/catalyst: implement engine_newPayloadWithWitnessV5 and use witness field spec ordering (#35009) 2026-05-21 21:00:57 +02:00