Skip to content

Commit 59e3a71

Browse files
authored
Add corresponding proofs to BlobsBundleV1 (#392)
* Add corresponding proofs to BlobsBundleV1 * Return proofs in engine_getBlobsBundleV1 for easy reference and verification in CL
1 parent 9846b93 commit 59e3a71

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

src/engine/experimental/blob-extension.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ The fields are encoded as follows:
5656

5757
- `blockHash`: `DATA`, 32 Bytes
5858
- `kzgs`: `Array of DATA` - Array of `KZGCommitment` as defined in [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844), 48 bytes each (`DATA`).
59+
- `proofs`: `Array of DATA` - Array of `KZGProof` as defined in [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844), 48 bytes each (`DATA`).
5960
- `blobs`: `Array of DATA` - Array of blobs, each blob is `FIELD_ELEMENTS_PER_BLOB * BYTES_PER_FIELD_ELEMENT = 4096 * 32 = 131072` bytes (`DATA`) representing a SSZ-encoded `Blob` as defined in [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844)
6061

6162
## Methods
@@ -105,7 +106,7 @@ Refer to the specification for `engine_getPayloadV2`.
105106

106107
### engine_getBlobsBundleV1
107108

108-
This method retrieves the blobs and their respective KZG commitments corresponding to the `versioned_hashes`
109+
This method retrieves the blobs and their respective KZG commitments and proofs corresponding to the `versioned_hashes`
109110
included in the blob transactions of the referenced execution payload.
110111

111112
This method may be combined with `engine_getPayloadV2`.
@@ -133,6 +134,7 @@ The separation of concerns aims to minimize changes during the testing phase of
133134
3. The call **MUST** return `kzgs` matching the versioned hashes of the transactions list of the execution payload, in the same order,
134135
i.e. `assert verify_kzgs_against_transactions(payload.transactions, bundle.kzgs)` (see EIP-4844 consensus-specs).
135136

136-
4. The call **MUST** return `blobs` that match the `kzgs` list, i.e. `assert len(kzgs) == len(blobs) and all(blob_to_kzg(blob) == kzg for kzg, blob in zip(bundle.kzgs, bundle.blobs))`
137+
4. The call **MUST** return `blobs` and `proofs` that match the `kzgs` list, i.e. `assert len(kzgs) == len(blobs) == len(proofs)` and `assert verify_blob_kzg_proof_batch(bundle.blobs, bundle.kzgs, bundle.proofs)`
138+
137139

138140
5. The call **MUST** return `blockHash` to reference the `blockHash` of the corresponding execution payload, intended for the caller to sanity-check the consistency with the `engine_getPayload` call.

0 commit comments

Comments
 (0)