Skip to main content
netspecsEthereum networking

4.5.4.Engine blob access

Stage
In progress
Version
Sources
4 pinned sources

The consensus client can recover blob data from the execution client's blob pool. The caller supplies versioned hashes in block order.

Dencun blob retrieval

engine_getBlobsV1 accepts ordered versioned blob hashes and returns one positional blob and proof bundle for each hash. A missing item is null. The method has a one-second target timeout and supports at least 128 hashes.

Fusaka blob retrieval

engine_getBlobsV2 accepts ordered versioned blob hashes and returns all requested extended blobs and cell proofs or one top-level null. The method has a one-second target timeout.

engine_getBlobsV3 accepts the same ordered hash list and returns a positional array, using null only for missing items. A top-level null means that the execution client cannot serve the blob pool at all. The method has a one-second target timeout.

Each returned proof set covers every cell in the extended blob. The caller checks versioned hashes and KZG proofs before it turns blobs into data columns.

Glamsterdam cell retrieval

engine_getBlobsV4 takes an ordered array of versioned blob hashes and a 16-byte cell-index bit array. The same selected indices apply to every blob. The Amsterdam Engine API gives the call a one-second timeout and requires support for at least 128 hashes. Draft EIP-8070 instead specifies a 500-millisecond timeout; implementations must not treat that draft value as the Amsterdam contract. The response keeps request order and returns one BlobCellsAndProofsV1 result per hash. A missing blob is a positional null. A present blob may contain null cells, and each such cell has a matching null proof. A syncing or otherwise unavailable execution client returns a top-level null. An oversized request returns -38004; pruned data returns null at the affected position. Each non-null proof is a 48-byte KZG proof. This local method lets the consensus client request selected cells without using devp2p.

Failure handling

The execution client supports at least 128 hashes and rejects a larger local limit with -38004. Pruned data produces missing values.

For engine_getBlobsV1, a syncing client may return an array of null items.

For the all-or-nothing and partial methods, a syncing or unavailable client may return top-level null.

The consensus client does not treat missing data as an invalid KZG proof.

Design rationale

The local API lets the consensus client reuse blob data that reached the execution pool before it asks consensus peers.