From 2a505b204a87220fda6e33565840289456251c29 Mon Sep 17 00:00:00 2001 From: gajinder Date: Tue, 21 Mar 2023 20:51:21 +0530 Subject: [PATCH 1/2] Add corresponding proofs to BlobsBundleV1 --- src/engine/experimental/blob-extension.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/engine/experimental/blob-extension.md b/src/engine/experimental/blob-extension.md index 8a32586c..f7fec831 100644 --- a/src/engine/experimental/blob-extension.md +++ b/src/engine/experimental/blob-extension.md @@ -56,6 +56,7 @@ The fields are encoded as follows: - `blockHash`: `DATA`, 32 Bytes - `kzgs`: `Array of DATA` - Array of `KZGCommitment` as defined in [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844), 48 bytes each (`DATA`). +- `proofs`: `Array of DATA` - Array of `KZGProof` as defined in [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844), 48 bytes each (`DATA`). - `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) ## Methods From 060f93947977d5fbd907253bd0f2e3cc14330486 Mon Sep 17 00:00:00 2001 From: gajinder Date: Thu, 23 Mar 2023 14:41:56 +0530 Subject: [PATCH 2/2] Return proofs in engine_getBlobsBundleV1 for easy reference and verification in CL --- src/engine/experimental/blob-extension.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/engine/experimental/blob-extension.md b/src/engine/experimental/blob-extension.md index f7fec831..c63e1620 100644 --- a/src/engine/experimental/blob-extension.md +++ b/src/engine/experimental/blob-extension.md @@ -106,7 +106,7 @@ Refer to the specification for `engine_getPayloadV2`. ### engine_getBlobsBundleV1 -This method retrieves the blobs and their respective KZG commitments corresponding to the `versioned_hashes` +This method retrieves the blobs and their respective KZG commitments and proofs corresponding to the `versioned_hashes` included in the blob transactions of the referenced execution payload. This method may be combined with `engine_getPayloadV2`. @@ -134,6 +134,7 @@ The separation of concerns aims to minimize changes during the testing phase of 3. The call **MUST** return `kzgs` matching the versioned hashes of the transactions list of the execution payload, in the same order, i.e. `assert verify_kzgs_against_transactions(payload.transactions, bundle.kzgs)` (see EIP-4844 consensus-specs). -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))` +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)` + 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.