Skip to content

Commit 6116381

Browse files
committed
Update description, remove proof_version
1 parent eceae40 commit 6116381

File tree

3 files changed

+19
-50
lines changed

3 files changed

+19
-50
lines changed

src/engine/openrpc/schemas/blob.yaml

+6-6
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,23 @@ BlobAndProofV1:
77
properties:
88
blob:
99
title: Blob
10-
$ref: '#/components/schemas/bytes'
10+
$ref: "#/components/schemas/bytes"
1111
proof:
1212
title: proof
13-
$ref: '#/components/schemas/bytes48'
13+
$ref: "#/components/schemas/bytes48"
1414

1515
BlobAndProofV2:
1616
title: Blob and proof object V2
1717
type: object
1818
required:
1919
- blob
20-
- cell_proofs
20+
- proofs
2121
properties:
2222
blob:
2323
title: Blob
24-
$ref: '#/components/schemas/bytes'
25-
cell_proofs:
24+
$ref: "#/components/schemas/bytes"
25+
proofs:
2626
title: Cell Proofs
2727
type: array
2828
items:
29-
$ref: '#/components/schemas/bytes48'
29+
$ref: "#/components/schemas/bytes48"

src/engine/osaka.md

+9-38
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ This specification is based on and extends [Engine API - Prague](./prague.md) sp
99
**Table of Contents**
1010

1111
- [Structures](#structures)
12-
- [ExecutionPayloadV4](#executionpayloadv4)
1312
- [BlobsBundleV2](#blobsbundlev2)
1413
- [BlobAndProofV2](#blobandproofv2)
1514
- [Methods](#methods)
@@ -26,52 +25,24 @@ This specification is based on and extends [Engine API - Prague](./prague.md) sp
2625

2726
## Structures
2827

29-
### ExecutionPayloadV4
30-
31-
This structure has the syntax of [`ExecutionPayloadV3`](./cancun.md#executionpayloadv3) and appends the new field `proofVersion`.
32-
33-
- `parentHash`: `DATA`, 32 Bytes
34-
- `feeRecipient`: `DATA`, 20 Bytes
35-
- `stateRoot`: `DATA`, 32 Bytes
36-
- `receiptsRoot`: `DATA`, 32 Bytes
37-
- `logsBloom`: `DATA`, 256 Bytes
38-
- `prevRandao`: `DATA`, 32 Bytes
39-
- `blockNumber`: `QUANTITY`, 64 Bits
40-
- `gasLimit`: `QUANTITY`, 64 Bits
41-
- `gasUsed`: `QUANTITY`, 64 Bits
42-
- `timestamp`: `QUANTITY`, 64 Bits
43-
- `extraData`: `DATA`, 0 to 32 Bytes
44-
- `baseFeePerGas`: `QUANTITY`, 256 Bits
45-
- `blockHash`: `DATA`, 32 Bytes
46-
- `transactions`: `Array of DATA` - Array of transaction objects, each object is a byte list (`DATA`) representing `TransactionType || TransactionPayload` or `LegacyTransaction` as defined in [EIP-2718](https://eips.ethereum.org/EIPS/eip-2718)
47-
- `withdrawals`: `Array of WithdrawalV1` - Array of withdrawals, each object is an `OBJECT` containing the fields of a `WithdrawalV1` structure.
48-
- `blobGasUsed`: `QUANTITY`, 64 Bits
49-
- `excessBlobGas`: `QUANTITY`, 64 Bits
50-
- `proofVersion`: `QUANTITY`, 8 Bits
51-
52-
Currently `proofVersion` supports two types:
53-
54-
- `0`: original type, blob proofs
55-
- `1`: new type after EIP-7594, cell proofs
56-
5728
### BlobsBundleV2
5829

5930
The fields are encoded as follows:
6031

6132
- `commitments`: `Array of DATA` - Array of `KZGCommitment` as defined in [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844), 48 bytes each (`DATA`).
62-
- `cellProofs`: `Array of DATA` - Array of `KZGProof` (48 bytes each, type defined in [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844), semantics defined in [EIP-7594](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-7594.md)).
33+
- `proofs`: `Array of DATA` - Array of `KZGProof` (48 bytes each, type defined in [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844), semantics defined in [EIP-7594](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-7594.md)).
6334
- `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)
6435

65-
`blobs` and `commitments` arrays **MUST** be of same length, `cellProofs` contains exactly `CELLS_PER_EXT_BLOB` * `len(blobs)` cell proofs.
36+
`blobs` and `commitments` arrays **MUST** be of same length, `proofs` contains exactly `CELLS_PER_EXT_BLOB` * `len(blobs)` cell proofs.
6637

6738
### BlobAndProofV2
6839

6940
The fields are encoded as follows:
7041

7142
- `blob`: `DATA` - `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).
72-
- `cellProofs`: `Array of DATA` - Array of `KZGProof` as defined in [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844), 48 bytes each (`DATA`).
43+
- `proofs`: `Array of DATA` - Array of `KZGProof` as defined in [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844), 48 bytes each (`DATA`).
7344

74-
`cellProofs` contains exactly `CELLS_PER_EXT_BLOB` cell proofs.
45+
`proofs` contains exactly `CELLS_PER_EXT_BLOB` cell proofs.
7546

7647
## Methods
7748

@@ -89,7 +60,7 @@ This method is updated in a backward incompatible way. Instead of returning `Blo
8960
#### Response
9061

9162
* result: `object`
92-
- `executionPayload`: [`ExecutionPayloadV4`](#ExecutionPayloadV4)
63+
- `executionPayload`: [`ExecutionPayloadV3`](./cancun.md#executionpayloadv3)
9364
- `blockValue` : `QUANTITY`, 256 Bits - The expected value to be received by the `feeRecipient` in wei
9465
- `blobsBundle`: [`BlobsBundleV2`](#BlobsBundleV2) - Bundle with data corresponding to blob transactions included into `executionPayload`
9566
- `shouldOverrideBuilder` : `BOOLEAN` - Suggestion from the execution layer to use this `executionPayload` instead of an externally provided one
@@ -100,12 +71,12 @@ This method is updated in a backward incompatible way. Instead of returning `Blo
10071

10172
This method follows the same specification as [`engine_getPayloadV4`](./prague.md#engine_getpayloadv4) with changes of the following:
10273

103-
1. The call **MUST** return `BlobsBundleV2` with empty `blobs`, `commitments` and `cellProofs` if the payload doesn't contain any blob transactions.
74+
1. The call **MUST** return `BlobsBundleV2` with empty `blobs`, `commitments` and `proofs` if the payload doesn't contain any blob transactions.
10475

105-
2. The call **MUST** return `blobs` and `cellProofs` that match the `commitments` list, i.e.
76+
2. The call **MUST** return `blobs` and `proofs` that match the `commitments` list, i.e.
10677
1. `assert len(blobsBundle.commitments) == len(blobsBundle.blobs)` and
107-
2. `assert len(blobsBundle.cellProofs) == len(blobsBundle.blobs) * CELLS_PER_EXT_BLOB` and
108-
3. `assert verify_cell_kzg_proof_batch(commitments, cell_indices, cells, blobsBundle.cellProofs)` (see [EIP-7594 consensus-specs](https://github.com/ethereum/consensus-specs/blob/36d80adb44c21c66379c6207a9578f9b1dcc8a2d/specs/fulu/polynomial-commitments-sampling.md#verify_cell_kzg_proof_batch))
78+
2. `assert len(blobsBundle.proofs) == len(blobsBundle.blobs) * CELLS_PER_EXT_BLOB` and
79+
3. `assert verify_cell_kzg_proof_batch(commitments, cell_indices, cells, blobsBundle.proofs)` (see [EIP-7594 consensus-specs](https://github.com/ethereum/consensus-specs/blob/36d80adb44c21c66379c6207a9578f9b1dcc8a2d/specs/fulu/polynomial-commitments-sampling.md#verify_cell_kzg_proof_batch))
10980
1. `cell_indices` should be `[0, ..., CELLS_PER_EXT_BLOB, 0, ..., CELLS_PER_EXT_BLOB, ...]`. In python, `list(range(CELLS_PER_EXT_BLOB)) * len(blobsBundle.blobs)`
11081
2. `commitments` should list each commitment `CELLS_PER_EXT_BLOB` times, repeating it for every cell. In python, `[blobsBundle.commitments[i] for i in range(len(blobsBundle.blobs)) for _ in range(CELLS_PER_EXT_BLOB)]`
11182
3. All of the inputs to `verify_cell_kzg_proof_batch` have the same length, `CELLS_PER_EXT_BLOB * len(blobsBundle.blobs)`

src/eth/submit.yaml

+4-6
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,10 @@
3333
For [EIP-7594](https://eips.ethereum.org/EIPS/eip-7594) transactions, the raw format
3434
must be the network form. This means it includes the blobs, KZG commitments, and cell proofs.
3535
The logic for handling the new transaction during fork boundaries are
36-
1. When receiving an encoded transaction with proof type 1 (cell proofs) before the PeerDAS fork activates, we reject it. Only type 0 (blob proofs) are accepted into the pool.
37-
2. At the time of fork activation, the implementer has two options
38-
- Drop all blob transactions from mempool.
39-
- Convert all proofs to type two in the background.
40-
3. After the fork has activated, only type 1 (cell proofs) are accepted via p2p relay.
41-
4. On RPC (eth_sendRawTransaction), type 0 (blob proofs) may still be accepted and will be auto-converted by the node. At implementer discretion, this facility can be deprecated later when users have switched to new client libraries that can create type two proofs.
36+
1. When receiving an encoded transaction with cell proofs before the PeerDAS fork activates, we reject it. Only blob proofs are accepted into the pool.
37+
2. At the time of fork activation, the implementer drop all blob transactions from mempool.
38+
3. After the fork has activated, only txs with cell proofs are accepted via p2p relay.
39+
4. On RPC (eth_sendRawTransaction), txs with blob proofs may still be accepted and will be auto-converted by the node. At implementer discretion, this facility can be deprecated later when users have switched to new client libraries that can create cell proofs.
4240
params:
4341
- name: Transaction
4442
required: true

0 commit comments

Comments
 (0)