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/README.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,7 +3,7 @@
3
3
The Engine JSON-RPC API is a collection of methods that all execution clients implement.
4
4
This interface allows the communication between consensus and execution layers of the two-component post-Merge Ethereum Client.
5
5
6
-
This API is in *active development* and currently specified in markdown documents specified by fork scopes ([Paris](./paris.md), [Shanghai](./shanghai.md), [Cancun](./cancun.md)).
6
+
This API is in *active development* and currently specified in markdown documents specified by fork scopes ([Paris](./paris.md), [Shanghai](./shanghai.md), [Cancun](./cancun.md), [Prague](./prague.md)).
7
7
8
8
## References
9
9
*[Engine API: A Visual Guide](https://hackmd.io/@danielrachi/engine_api)
-[Update the methods of previous forks](#update-the-methods-of-previous-forks)
30
36
31
37
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
32
38
@@ -64,6 +70,13 @@ The fields are encoded as follows:
64
70
65
71
All of the above three arrays **MUST** be of same length.
66
72
73
+
### BlobAndProofV1
74
+
75
+
The fields are encoded as follows:
76
+
77
+
-`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).
78
+
-`proof`: `DATA` - `KZGProof` as defined in [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844), 48 bytes (`DATA`).
79
+
67
80
### PayloadAttributesV3
68
81
69
82
This structure has the syntax of [`PayloadAttributesV2`](./shanghai.md#payloadattributesv2) and appends a single field: `parentBeaconBlockRoot`.
@@ -170,6 +183,36 @@ Refer to the specification for [`engine_getPayloadV2`](./shanghai.md#engine_getp
170
183
171
184
5. Client software **MAY** use any heuristics to decide whether to set `shouldOverrideBuilder` flag or not. If client software does not implement any heuristic this flag **SHOULD** be set to `false`.
172
185
186
+
### engine_getBlobsV1
187
+
188
+
Consensus layer clients **MAY** use this method to fetch blobs from the execution layer blob pool.
189
+
190
+
*Note*: This is a new optional method introduced after Cancun. It is defined here because it is backwards-compatible with Cancun.
191
+
192
+
#### Request
193
+
194
+
* method: `engine_getBlobsV1`
195
+
* params:
196
+
1.`Array of DATA`, 32 Bytes - Array of blob versioned hashes.
197
+
* timeout: 1s
198
+
199
+
#### Response
200
+
201
+
* result: `Array of BlobAndProofV1` - Array of [`BlobAndProofV1`](#BlobAndProofV1), items of which may be `null`.
202
+
* error: code and message set in case an error occurs during processing of the request.
203
+
204
+
#### Specification
205
+
206
+
1. Given an array of blob versioned hashes client software **MUST** respond with an array of `BlobAndProofV1` objects with matching versioned hashes, respecting the order of versioned hashes in the input array.
207
+
208
+
1. Client software **MUST** place responses in the order given in the request, using `null` for any missing blobs. For instance, if the request is `[A_versioned_hash, B_versioned_hash, C_versioned_hash]` and client software has data for blobs `A` and `C`, but doesn't have data for `B`, the response **MUST** be `[A, null, C]`.
209
+
210
+
1. Client software **MUST** support request sizes of at least 128 blob versioned hashes. The client **MUST** return `-38004: Too large request` error if the number of requested blobs is too large.
211
+
212
+
1. Client software **MAY** return an array of all `null` entries if syncing or otherwise unable to serve blob pool data.
213
+
214
+
1. Callers **MUST** consider that execution layer clients may prune old blobs from their pool, and will respond with `null` if a blob has been pruned.
This document introduces deprecation of [`engine_exchangeTransitionConfigurationV1`](./paris.md#engine_exchangetransitionconfigurationv1). The deprecation is specified as follows:
@@ -192,4 +235,4 @@ For the following methods:
192
235
193
236
a validation **MUST** be added:
194
237
195
-
1. Client software **MUST** return `-38005: Unsupported fork` error if the `timestamp` of payload or payloadAttributes greater or equal to the Cancun activation timestamp.
238
+
1. Client software **MUST** return `-38005: Unsupported fork` error if the `timestamp` of payload or payloadAttributes greater or equal to the Cancun activation timestamp.
Copy file name to clipboardExpand all lines: src/engine/common.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -161,7 +161,7 @@ Execution layer clients **MUST** support `engine_exchangeCapabilities` method, w
161
161
162
162
#### Specification
163
163
164
-
1. Consensus and execution layer client software **MAY** exchange with a list of currently supported Engine API methods. Execution layer client software **MUST NOT** log any error messages if this method has either never been called or haven't been called for a significant amount of time.
164
+
1. Consensus and execution layer client software **MAY** exchange with a list of currently supported Engine API methods. Execution layer client software **MUST NOT** log any error messages if this method has either never been called or hasn't been called for a significant amount of time.
165
165
166
166
2. Request and response lists **MUST** contain Engine API methods that are currently supported by consensus and execution client software respectively. Name of each method in both lists **MUST** include suffixed version. Consider the following examples:
167
167
* Client software of both layers currently supports `V1` and `V2` versions of `engine_newPayload` method:
0 commit comments