You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/engine/osaka.md
+9-38
Original file line number
Diff line number
Diff line change
@@ -9,7 +9,6 @@ This specification is based on and extends [Engine API - Prague](./prague.md) sp
9
9
**Table of Contents**
10
10
11
11
-[Structures](#structures)
12
-
-[ExecutionPayloadV4](#executionpayloadv4)
13
12
-[BlobsBundleV2](#blobsbundlev2)
14
13
-[BlobAndProofV2](#blobandproofv2)
15
14
-[Methods](#methods)
@@ -26,52 +25,24 @@ This specification is based on and extends [Engine API - Prague](./prague.md) sp
26
25
27
26
## Structures
28
27
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
-
57
28
### BlobsBundleV2
58
29
59
30
The fields are encoded as follows:
60
31
61
32
-`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)).
63
34
-`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)
64
35
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.
66
37
67
38
### BlobAndProofV2
68
39
69
40
The fields are encoded as follows:
70
41
71
42
-`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`).
-`blockValue` : `QUANTITY`, 256 Bits - The expected value to be received by the `feeRecipient` in wei
94
65
-`blobsBundle`: [`BlobsBundleV2`](#BlobsBundleV2) - Bundle with data corresponding to blob transactions included into `executionPayload`
95
66
-`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
100
71
101
72
This method follows the same specification as [`engine_getPayloadV4`](./prague.md#engine_getpayloadv4) with changes of the following:
102
73
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.
104
75
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.
106
77
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))
109
80
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)`
110
81
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)]`
111
82
3. All of the inputs to `verify_cell_kzg_proof_batch` have the same length, `CELLS_PER_EXT_BLOB * len(blobsBundle.blobs)`
Copy file name to clipboardExpand all lines: src/eth/submit.yaml
+4-6
Original file line number
Diff line number
Diff line change
@@ -33,12 +33,10 @@
33
33
For [EIP-7594](https://eips.ethereum.org/EIPS/eip-7594) transactions, the raw format
34
34
must be the network form. This means it includes the blobs, KZG commitments, and cell proofs.
35
35
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.
0 commit comments