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
@@ -30,6 +30,7 @@ This specification is based on and extends [Engine API - Cancun](./cancun.md) sp
30
30
## Structures
31
31
32
32
### DepositRequestV1
33
+
33
34
This structure maps onto the deposit object from [EIP-6110](https://eips.ethereum.org/EIPS/eip-6110).
34
35
The fields are encoded as follows:
35
36
@@ -42,6 +43,7 @@ The fields are encoded as follows:
42
43
*Note:* The `amount` value is represented in Gwei.
43
44
44
45
### WithdrawalRequestV1
46
+
45
47
This structure maps onto the withdrawal request from [EIP-7002](https://eips.ethereum.org/EIPS/eip-7002).
46
48
The fields are encoded as follows:
47
49
@@ -52,6 +54,7 @@ The fields are encoded as follows:
52
54
*Note:* The `amount` value is represented in Gwei.
53
55
54
56
### ConsolidationRequestV1
57
+
55
58
This structure maps onto the consolidation request from [EIP-7251](https://eips.ethereum.org/EIPS/eip-7251).
56
59
The fields are encoded as follows:
57
60
@@ -60,45 +63,27 @@ The fields are encoded as follows:
60
63
-`targetPubkey`: `DATA`, 48 Bytes
61
64
62
65
### ExecutionRequestsV1
63
-
This container holds requests from the execution layer.
66
+
67
+
This container holds execution layer triggered requests.
64
68
65
69
-`deposits`: `Array of DepositRequestV1` - Array of deposits, each object is an `OBJECT` containing the fields of a `DepositRequestV1` structure.
66
70
-`withdrawals`: `Array of WithdrawalRequestV1` - Array of withdrawal requests, each object is an `OBJECT` containing the fields of a `WithdrawalRequestV1` structure.
67
71
-`consolidations`: `Array of ConsolidationRequestV1` - Array of consolidation requests, each object is an `OBJECT` containing the fields of a `ConsolidationRequestV1` structure.
68
72
69
-
### ExecutionPayloadV4
70
-
71
-
This structure has the syntax of [`ExecutionPayloadV3`](./cancun.md#executionpayloadv3).
72
-
73
-
-`parentHash`: `DATA`, 32 Bytes
74
-
-`feeRecipient`: `DATA`, 20 Bytes
75
-
-`stateRoot`: `DATA`, 32 Bytes
76
-
-`receiptsRoot`: `DATA`, 32 Bytes
77
-
-`logsBloom`: `DATA`, 256 Bytes
78
-
-`prevRandao`: `DATA`, 32 Bytes
79
-
-`blockNumber`: `QUANTITY`, 64 Bits
80
-
-`gasLimit`: `QUANTITY`, 64 Bits
81
-
-`gasUsed`: `QUANTITY`, 64 Bits
82
-
-`timestamp`: `QUANTITY`, 64 Bits
83
-
-`extraData`: `DATA`, 0 to 32 Bytes
84
-
-`baseFeePerGas`: `QUANTITY`, 256 Bits
85
-
-`blockHash`: `DATA`, 32 Bytes
86
-
-`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)
87
-
-`withdrawals`: `Array of WithdrawalV1` - Array of withdrawals, each object is an `OBJECT` containing the fields of a `WithdrawalV1` structure.
88
-
-`blobGasUsed`: `QUANTITY`, 64 Bits
89
-
-`excessBlobGas`: `QUANTITY`, 64 Bits
73
+
*Note*: The order of items within `deposits`, `withdrawals` and `consolidations` lists is defined by
74
+
[EIP-6110](https://eips.ethereum.org/EIPS/eip-6110), [EIP-7002](https://eips.ethereum.org/EIPS/eip-7002) and [EIP-7251](https://eips.ethereum.org/EIPS/eip-7251) respectively.
90
75
91
76
## Methods
92
77
93
78
### engine_newPayloadV4
94
79
95
-
The request of this method is updated with [`ExecutionPayloadV4`](#ExecutionPayloadV4) and new [`ExecutionRequestsV1`](#ExecutionRequestsV1).
80
+
Method parameter list is extended with `executionRequests`.
@@ -113,6 +98,10 @@ This method follows the same specification as [`engine_newPayloadV3`](./cancun.m
113
98
114
99
1. Client software **MUST** return `-38005: Unsupported fork` error if the `timestamp` of the payload does not fall within the time frame of the Prague fork.
115
100
101
+
2. Client software **MUST** incorporate `executionRequests` into the `blockHash` validation process.
102
+
That is, if `executionRequests` does not match the execution requests commitment in the execution layer block header
103
+
the call **MUST** be responded with `{status: INVALID, latestValidHash: null, validationError: errorMessage | null}`.
104
+
116
105
### engine_getPayloadV4
117
106
118
107
The response of this method is updated with [`ExecutionPayloadV4`](#ExecutionPayloadV4) and new [`ExecutionRequestsV1`](#ExecutionRequestsV1).
@@ -130,8 +119,8 @@ The response of this method is updated with [`ExecutionPayloadV4`](#ExecutionPay
-`blockValue` : `QUANTITY`, 256 Bits - The expected value to be received by the `feeRecipient` in wei
132
121
-`blobsBundle`: [`BlobsBundleV1`](#BlobsBundleV1) - Bundle with data corresponding to blob transactions included into `executionPayload`
133
-
-`requests`: [`ExecutionRequestsV1`](#ExecutionRequestsV1) - Container with requests from execution layer included in `executionPayload`
134
122
-`shouldOverrideBuilder` : `BOOLEAN` - Suggestion from the execution layer to use this `executionPayload` instead of an externally provided one
123
+
-`executionRequests`: [`ExecutionRequestsV1`](#ExecutionRequestsV1) - Execution layer trigerred requests obtained from the `executionPayload` transaction execution
135
124
* error: code and message set in case an exception happens while getting the payload.
136
125
137
126
#### Specification
@@ -140,6 +129,10 @@ This method follows the same specification as [`engine_getPayloadV3`](./cancun.m
140
129
141
130
1. Client software **MUST** return `-38005: Unsupported fork` error if the `timestamp` of the built payload does not fall within the time frame of the Prague fork.
142
131
132
+
2. The call **MUST** return `executionRequests` object containing deposit, withdrawal and consolidation requests obtained from transaction execution of the `executionPayload`.
133
+
The way the requests are obtained from the payload execution is defined by the [EIP-6110](https://eips.ethereum.org/EIPS/eip-6110),
134
+
[EIP-7002](https://eips.ethereum.org/EIPS/eip-7002) and [EIP-7251](https://eips.ethereum.org/EIPS/eip-7251) respectively.
135
+
143
136
### Update the methods of previous forks
144
137
145
138
This document defines how Prague payload should be handled by the [`Cancun API`](./cancun.md).
0 commit comments