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
| -32000 | Server error | Generic client error while processing request. |
118
133
| -38001 | Unknown payload | Payload does not exist / is not available. |
@@ -174,6 +189,38 @@ This structure maps on the [`ExecutionPayload`](https://github.com/ethereum/cons
174
189
-`blockHash`: `DATA`, 32 Bytes
175
190
-`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)
176
191
192
+
### WithdrawalV1
193
+
194
+
This structure maps onto the validator withdrawal object from the beacon chain spec.
195
+
The fields are encoded as follows:
196
+
197
+
-`index`: `QUANTITY`, 64 Bits
198
+
-`validatorIndex`: `QUANTITY`, 64 Bits
199
+
-`address`: `DATA`, 20 Bytes
200
+
-`amount`: `QUANTITY`, 256 Bits
201
+
202
+
*Note*: the `amount` value is represented on the beacon chain as a little-endian value in units of Gwei, whereas the `amount` in this structure *MUST* be converted to a big-endian value in units of Wei.
203
+
204
+
### ExecutionPayloadV2
205
+
206
+
This structure has the syntax of `ExecutionPayloadV1` and appends a single field: `withdrawals`.
207
+
208
+
-`parentHash`: `DATA`, 32 Bytes
209
+
-`feeRecipient`: `DATA`, 20 Bytes
210
+
-`stateRoot`: `DATA`, 32 Bytes
211
+
-`receiptsRoot`: `DATA`, 32 Bytes
212
+
-`logsBloom`: `DATA`, 256 Bytes
213
+
-`prevRandao`: `DATA`, 32 Bytes
214
+
-`blockNumber`: `QUANTITY`, 64 Bits
215
+
-`gasLimit`: `QUANTITY`, 64 Bits
216
+
-`gasUsed`: `QUANTITY`, 64 Bits
217
+
-`timestamp`: `QUANTITY`, 64 Bits
218
+
-`extraData`: `DATA`, 0 to 32 Bytes
219
+
-`baseFeePerGas`: `QUANTITY`, 256 Bits
220
+
-`blockHash`: `DATA`, 32 Bytes
221
+
-`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)
222
+
-`withdrawals`: `Array of WithdrawalV1` - Array of withdrawals, each object is an `OBJECT` containing the fields of a `WithdrawalV1` structure.
223
+
177
224
### ForkchoiceStateV1
178
225
179
226
This structure encapsulates the fork choice state. The fields are encoded as follows:
@@ -192,6 +239,15 @@ This structure contains the attributes required to initiate a payload build proc
192
239
-`prevRandao`: `DATA`, 32 Bytes - value for the `prevRandao` field of the new payload
193
240
-`suggestedFeeRecipient`: `DATA`, 20 Bytes - suggested value for the `feeRecipient` field of the new payload
194
241
242
+
### PayloadAttributesV2
243
+
244
+
This structure has the syntax of `PayloadAttributesV1` and appends a single field: `withdrawals`.
245
+
246
+
-`timestamp`: `QUANTITY`, 64 Bits - value for the `timestamp` field of the new payload
247
+
-`prevRandao`: `DATA`, 32 Bytes - value for the `prevRandao` field of the new payload
248
+
-`suggestedFeeRecipient`: `DATA`, 20 Bytes - suggested value for the `feeRecipient` field of the new payload
249
+
-`withdrawals`: `Array of WithdrawalV1` - Array of withdrawals, each object is an `OBJECT` containing the fields of a `WithdrawalV1` structure.
250
+
195
251
### PayloadStatusV1
196
252
197
253
This structure contains the result of processing a payload. The fields are encoded as follows:
@@ -260,7 +316,7 @@ The payload build process is specified as follows:
260
316
#### Request
261
317
262
318
* method: `engine_newPayloadV1`
263
-
* params:
319
+
* params:
264
320
1.[`ExecutionPayloadV1`](#ExecutionPayloadV1)
265
321
* timeout: 8s
266
322
@@ -292,12 +348,33 @@ The payload build process is specified as follows:
292
348
293
349
6. If any of the above fails due to errors unrelated to the normal processing flow of the method, client software **MUST** respond with an error object.
294
350
351
+
### engine_newPayloadV2
352
+
353
+
#### Request
354
+
355
+
* method: `engine_newPayloadV2`
356
+
* params:
357
+
1.[`ExecutionPayloadV2`](#ExecutionPayloadV2)
358
+
359
+
#### Response
360
+
361
+
Refer to the response for [`engine_newPayloadV1`](#engine_newpayloadv1).
362
+
363
+
#### Specification
364
+
365
+
This method follows the same specification as [`engine_newPayloadV1`](#engine_newpayloadv1) with the exception of the following:
366
+
367
+
1. If withdrawal functionality is activated, client software **MUST** return an `INVALID` status with the appropriate `latestValidHash` if `payload.withdrawals` is `null`.
368
+
Similarly, if the functionality is not activated, client software **MUST** return an `INVALID` status with the appropriate `latestValidHash` if `payloadAttributes.withdrawals` is not `null`.
369
+
Blocks without withdrawals **MUST** be expressed with an explicit empty list `[]` value.
370
+
Refer to the validity conditions for [`engine_newPayloadV1`](#engine_newpayloadv1) to specification of the appropriate `latestValidHash` value.
371
+
295
372
### engine_forkchoiceUpdatedV1
296
373
297
374
#### Request
298
375
299
376
* method: "engine_forkchoiceUpdatedV1"
300
-
* params:
377
+
* params:
301
378
1.`forkchoiceState`: `Object` - instance of [`ForkchoiceStateV1`](#ForkchoiceStateV1)
302
379
2.`payloadAttributes`: `Object|null` - instance of [`PayloadAttributesV1`](#PayloadAttributesV1) or `null`
303
380
* timeout: 8s
@@ -343,6 +420,27 @@ The payload build process is specified as follows:
343
420
344
421
10. If any of the above fails due to errors unrelated to the normal processing flow of the method, client software **MUST** respond with an error object.
345
422
423
+
### engine_forkchoiceUpdatedV2
424
+
425
+
#### Request
426
+
427
+
* method: "engine_forkchoiceUpdatedV2"
428
+
* params:
429
+
1.`forkchoiceState`: `Object` - instance of [`ForkchoiceStateV1`](#ForkchoiceStateV1)
430
+
2.`payloadAttributes`: `Object|null` - instance of [`PayloadAttributesV2`](#PayloadAttributesV2) or `null`
431
+
432
+
#### Response
433
+
434
+
Refer to the response for [`engine_forkchoiceUpdatedV1`](#engine_forkchoiceupdatedv1).
435
+
436
+
#### Specification
437
+
438
+
This method follows the same specification as [`engine_forkchoiceUpdatedV1`](#engine_forkchoiceupdatedv1) with the exception of the following:
439
+
440
+
1. If withdrawal functionality is activated, client software **MUST** return error `-38003: Invalid payload attributes` if `payloadAttributes.withdrawals` is `null`.
441
+
Similarly, if the functionality is not activated, client software **MUST** return error `-38003: Invalid payload attributes` if `payloadAttributes.withdrawals` is not `null`.
442
+
Blocks without withdrawals **MUST** be expressed with an explicit empty list `[]` value.
443
+
346
444
### engine_getPayloadV1
347
445
348
446
#### Request
@@ -365,6 +463,23 @@ The payload build process is specified as follows:
365
463
366
464
3. Client software **MAY** stop the corresponding build process after serving this call.
367
465
466
+
### engine_getPayloadV2
467
+
468
+
#### Request
469
+
470
+
* method: `engine_getPayloadV2`
471
+
* params:
472
+
1.`payloadId`: `DATA`, 8 Bytes - Identifier of the payload build process
* error: code and message set in case an exception happens while getting the payload.
478
+
479
+
#### Specification
480
+
481
+
Refer to the specification for [`engine_getPayloadV1`](#engine_getpayloadv1).
482
+
368
483
### engine_exchangeTransitionConfigurationV1
369
484
370
485
#### Request
@@ -393,6 +508,6 @@ The payload build process is specified as follows:
393
508
394
509
6. Considering the absence of the `TERMINAL_BLOCK_NUMBER` setting, Consensus Layer client software **MAY** use `0` value for the `terminalBlockNumber` field in the input parameters of this call.
395
510
396
-
7. Considering the absence of the `TERMINAL_TOTAL_DIFFICULTY` value (i.e. when a value has not been decided), Consensus Layer and Execution Layer client software **MUST** use `115792089237316195423570985008687907853269984665640564039457584007913129638912` value (equal to`2**256-2**10`) for the `terminalTotalDifficulty` input parameter of this call.
511
+
7. Considering the absence of the `TERMINAL_TOTAL_DIFFICULTY` value (i.e. when a value has not been decided), Consensus Layer and Execution Layer client software **MUST** use `115792089237316195423570985008687907853269984665640564039457584007913129638912` value (equal to`2**256-2**10`) for the `terminalTotalDifficulty` input parameter of this call.
0 commit comments