BlobAndProofV2
The fields are encoded as follows:
blob:DATA-FIELD_ELEMENTS_PER_BLOB * BYTES_PER_FIELD_ELEMENT = 4096 * 32 = 131072bytes (DATA) representing a SSZ-encodedBlobas defined in EIP-4844.proofs:Array of DATA- Array ofKZGProofas defined in EIP-4844, 48 bytes each (DATA).
proofs MUST contain exactly CELLS_PER_EXT_BLOB cell proofs.
engine_getBlobsV2
Consensus layer clients MAY use this method to fetch blobs from the execution layer blob pool.
Request
- method:
engine_getBlobsV2 - params:
Array of DATA, 32 Bytes - Array of blob versioned hashes.
- timeout: 1s
Response
- result:
Array of BlobAndProofV2- Array ofBlobAndProofV2ornullin case of any missing blobs. - error: code and message set in case an error occurs during processing of the request.
Specification
Refer to the specification for engine_getBlobsV1 with changes of the following:
- Given an array of blob versioned hashes client software MUST respond with an array of
BlobAndProofV2objects with matching versioned hashes, respecting the order of versioned hashes in the input array. - Client software MUST return
nullin case of any missing or older version blobs. For instance,- if the request is
[A_versioned_hash, B_versioned_hash, C_versioned_hash]and client software has data for blobsAandC, but doesn’t have data forB, the response MUST benull. - if the request is
[A_versioned_hash_for_blob_with_blob_proof], the response MUST benullas well.
- if the request is
- Client software MUST support request sizes of at least 128 blob versioned hashes. The client MUST return
-38004: Too large requesterror if the number of requested blobs is too large. - Client software MUST return
nullif syncing or otherwise unable to serve blob pool data. - Callers MUST consider that execution layer clients may prune old blobs from their pool, and will respond with
nullif a blob has been pruned.
engine_getBlobsV3
Consensus layer clients MAY use this method to fetch blobs from the execution layer blob pool, with support for partial responses. For an all-or-nothing query style, refer to engine_getBlobsV2.
Request
- method:
engine_getBlobsV3 - params:
Array of DATA, 32 Bytes - Array of blob versioned hashes.
- timeout: 1s
Response
- result:
Array of BlobAndProofV2- Array ofBlobAndProofV2, insertingnullonly at the positions of the missing blobs, or anullliteral in the designated cases specified below. - error: code and message set in case an error occurs during processing of the request.
Specification
To assist the reader, we highlight differences against
engine_getBlobsV2using italic.
- Given an array of blob versioned hashes client software MUST respond with an array of
BlobAndProofV2objects with matching versioned hashes, respecting the order of versioned hashes in the input array. - Given an array of blob versioned hashes, if client software has every one of the requested blobs, it MUST return an array of
BlobAndProofV2objects whose order exactly matches the input array. For instance, if the request is[A_versioned_hash, B_versioned_hash, C_versioned_hash]and client software hasA,BandCavailable, the response MUST be[A, B, C]. - If one or more of the requested blobs are unavailable, the client MUST return an array of the same length and order, inserting
nullonly at the positions of the missing blobs. For instance, if the request is[A_versioned_hash, B_versioned_hash, C_versioned_hash]and client software has data for blobsAandC, but doesn’t have data forB, the response MUST be[A, null, C]. If all blobs are missing, the client software must return an array of matching length, filled withnullat all positions. - Client software MUST support request sizes of at least 128 blob versioned hashes. The client MUST return
-38004: Too large requesterror if the number of requested blobs is too large. - Client software MUST return
nullif syncing or otherwise unable to generally serve blob pool data. - Callers MUST consider that execution layer clients may prune old blobs from their pool, and will respond with
nullat the corresponding position if a blob has been pruned.
BlobCellsAndProofsV1
blob_cells:Array of DATA|null- a sequence of byte arrays (DATA) representing the partial matrix of the requested blobs, withnullentries for missing cells.proofs:Array of DATA|null- Array ofKZGProofas defined in EIP-4844, 48 bytes each (DATA). Entries corresponding tonullcells MUST also benull.
engine_getBlobsV4
Consensus layer clients MAY use this method to fetch blob cells from the execution layer blob pool, with support for partial responses. Unlike engine_getBlobsV3, this method returns individual cells and their KZG proofs rather than full blobs.
Request
- method:
engine_getBlobsV4 - params:
versioned_blob_hashes:Array of DATA, 32 Bytes - an array of blob versioned hashes.indices_bitarray:DATA, 16 Bytes - a bitarray denoting the indices of the cells to retrieve.
- timeout: 1s
Response
- result:
(Array of BlobCellsAndProofsV1) | null- Array ofBlobCellsAndProofsV1, insertingnullonly at the positions of the missing blobs, or anullliteral in the designated cases specified below. - error: code and message set in case an error occurs during processing of the request.
Specification
- Given an array of blob versioned hashes and a cell indices bitarray, client software MUST respond with an array of
BlobCellsAndProofsV1objects with matching versioned hashes, respecting the order of versioned hashes in the input array. EachBlobCellsAndProofsV1object contains only the cells at the indices specified by the bitarray and their corresponding KZG proofs. - Given an array of blob versioned hashes and a cell indices bitarray, if client software has every one of the requested blobs, it MUST return an array of
BlobCellsAndProofsV1objects whose order exactly matches the input array. The sameindices_bitarrayis applied to extract cells from each blob. For instance, if the request is[A_versioned_hash, B_versioned_hash, C_versioned_hash]with a specificindices_bitarray, and client software hasA,BandCavailable, the response MUST be[A_cells_and_proofs, B_cells_and_proofs, C_cells_and_proofs], where each object contains the cells at the indices specified by the bitarray. - If one or more of the requested blobs are unavailable, the client MUST return an array of the same length and order, inserting
nullonly at the positions of the missing blobs. For instance, if the request is[A_versioned_hash, B_versioned_hash, C_versioned_hash]and client software has data for blobsAandC, but doesn’t have data forB, the response MUST be[A_cells_and_proofs, null, C_cells_and_proofs]. If all blobs are missing, the client software must return an array of matching length, filled withnullat all positions. - Within a
BlobCellsAndProofsV1object, if specific cells are unavailable for an otherwise available blob, those cells MUST be set tonullin theblob_cellsarray, and the corresponding entries in theproofsarray MUST also benull. - Client software MUST support request sizes of at least 128 blob versioned hashes. The client MUST return
-38004: Too large requesterror if the number of requested blobs is too large. - Client software MUST return
nullif syncing or otherwise unable to generally serve blob pool data. - Callers MUST consider that execution layer clients may prune old blobs from their pool, and will respond with
nullat the corresponding position if a blob has been pruned.