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
-[Update the methods of previous forks](#update-the-methods-of-previous-forks)
31
+
-[Amsterdam API](#amsterdam-api)
30
32
31
33
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
32
34
@@ -38,15 +40,16 @@ This specification is based on and extends [Engine API - Osaka](./osaka.md) spec
38
40
39
41
## Structures
40
42
41
-
### PayloadAttributesV4
43
+
### PayloadAttributesV5
42
44
43
-
This structure has the syntax of [`PayloadAttributesV3`](./cancun.md#payloadattributesv3) and appends a single field: `inclusionListTransactions`.
45
+
This structure has the syntax of [`PayloadAttributesV4`](./amsterdam.md#payloadattributesv4) and appends a single field: `inclusionListTransactions`.
44
46
45
47
-`timestamp`: `QUANTITY`, 64 Bits - value for the `timestamp` field of the new payload
46
48
-`prevRandao`: `DATA`, 32 Bytes - value for the `prevRandao` field of the new payload
47
49
-`suggestedFeeRecipient`: `DATA`, 20 Bytes - suggested value for the `feeRecipient` field of the new payload
48
50
-`withdrawals`: `Array of WithdrawalV1` - Array of withdrawals, each object is an `OBJECT` containing the fields of a `WithdrawalV1` structure.
49
51
-`parentBeaconBlockRoot`: `DATA`, 32 Bytes - Root of the parent beacon block.
52
+
-`slotNumber`: `QUANTITY`, 64 Bits - value for the `slotNumber` field of the new payload
50
53
-`inclusionListTransactions`: `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).
51
54
52
55
## Routines
@@ -55,19 +58,19 @@ This structure has the syntax of [`PayloadAttributesV3`](./cancun.md#payloadattr
55
58
56
59
This routine follows the same specification as [Payload building](./paris.md#payload-building) with the following changes to the processing flow:
57
60
58
-
1. Client software **SHOULD** take `payloadAttributes.inclusionList` into account during the payload build process. The built `ExecutionPayload`**MUST** satisfy the inclusion list constraints with respect to `payloadAttributes.inclusionList` as defined in [EIP-7805](https://eips.ethereum.org/EIPS/eip-7805).
61
+
1. Client software **SHOULD** take `inclusionListTransactions` into account during the payload build process. The built `ExecutionPayload`**MUST** satisfy the inclusion list constraints with respect to `inclusionListTransactions` as defined in [EIP-7805](https://eips.ethereum.org/EIPS/eip-7805).
59
62
60
63
## Methods
61
64
62
-
### engine_newPayloadV5
65
+
### engine_newPayloadV6
63
66
64
67
Method parameter list is extended with `inclusionListTransactions`.
2.`expectedBlobVersionedHashes`: `Array of DATA`, 32 Bytes - Array of expected blob versioned hashes to validate.
72
75
3.`parentBeaconBlockRoot`: `DATA`, 32 Bytes - Root of the parent beacon block.
73
76
4.`executionRequests`: `Array of DATA` - List of execution layer triggered requests. Each list element is a `requests` byte array as defined by [EIP-7685](https://eips.ethereum.org/EIPS/eip-7685). The first byte of each element is the `request_type` and the remaining bytes are the `request_data`. Elements of the list **MUST** be ordered by `request_type` in ascending order. Elements with empty `request_data`**MUST** be excluded from the list.
@@ -82,52 +85,74 @@ Method parameter list is extended with `inclusionListTransactions`.
82
85
83
86
#### Specification
84
87
85
-
This method follows the same specification as [`engine_newPayloadV4`](./prague.md#engine_newpayloadv4) with the following changes:
88
+
This method follows the same specification as [`engine_newPayloadV5`](./amsterdam.md#engine_newpayloadv5) with the following changes:
86
89
87
-
1. Client software **MUST** return `{status: INCLUSION_LIST_UNSATISFIED, latestValidHash: null, validationError: null}` if `executionPayload` fails to satisfy the inclusion list constraints with respect to `inclusionListTransactions` as defined in [EIP-7805](https://eips.ethereum.org/EIPS/eip-7805).
90
+
1. Client software **MUST** return `-38005: Unsupported fork` error if the `timestamp` of the payload does not fall within the time frame of the Bogota fork.
91
+
92
+
2. Client software **MUST** return `{status: INCLUSION_LIST_UNSATISFIED, latestValidHash: null, validationError: null}` if `executionPayload` fails to satisfy the inclusion list constraints with respect to `inclusionListTransactions` as defined in [EIP-7805](https://eips.ethereum.org/EIPS/eip-7805).
88
93
89
94
### engine_getInclusionListV1
90
95
91
96
#### Request
92
97
93
98
* method: `engine_getInclusionListV1`
94
99
* params:
95
-
1.`parentHash`: `DATA`, 32 Bytes - parent hash which returned inclusion list should be built upon.
100
+
1.`parentHash`: `DATA`, 32 Bytes - block hash of the parent block upon which the inclusion list should be built.
101
+
96
102
* timeout: 1s
97
103
98
104
#### Response
99
105
100
-
* result: `inclusionListTransactions`: `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).
106
+
* result: `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).
101
107
* error: code and message set in case an exception happens while getting the inclusion list.
102
108
103
109
#### Specification
104
110
105
-
1. Client software **MUST** provide a list of transactions for the inclusion list based on local view of the mempool and according to the config specifications.
111
+
1. Client software **MUST** return `-38006: Unknown parent` error if a block with the given `parentHash` does not exist.
112
+
113
+
2. Client software **MUST** provide a list of transactions for the inclusion list based on the local view of the mempool. The strategy for selecting which transactions to include is implementation dependent.
106
114
107
-
2. Client software **MUST**provide a list of transactions within upperbound`MAX_BYTES_PER_INCLUSION_LIST`.
115
+
3. Client software **MUST**ensure the byte length of the RLP encoding of the returned transaction list does not exceed`MAX_BYTES_PER_INCLUSION_LIST`.
108
116
109
-
3. Client software **MUST NOT** include any [blob transaction](https://eips.ethereum.org/EIPS/eip-4844#blob-transaction)within the provided list.
117
+
4. Client software **MUST NOT** include any [blob transaction](https://eips.ethereum.org/EIPS/eip-4844#blob-transaction)in the returned transaction list.
110
118
111
-
4. Client software **MUST** return `-38006: Unknown parent` error if a block with the given `parentHash` does not exist.
2.`payloadAttributes`: `Object|null` - Instance of [`PayloadAttributesV4`](#payloadattributesv4) or `null`.
126
+
2.`payloadAttributes`: `Object|null` - Instance of [`PayloadAttributesV5`](#payloadattributesv5) or `null`.
121
127
* timeout: 8s
122
128
123
129
#### Response
124
130
125
-
Refer to the response for [`engine_forkchoiceUpdatedV3`](./cancun.md#engine_forkchoiceupdatedv3).
131
+
Refer to the response for [`engine_forkchoiceUpdatedV4`](./amsterdam.md#engine_forkchoiceupdatedv4).
126
132
127
133
#### Specification
128
134
129
-
This method follows the same specification as [`engine_forkchoiceUpdatedV3`](./cancun.md#engine_forkchoiceupdatedv3) with the following changes to the processing flow:
135
+
This method follows the same specification as [`engine_forkchoiceUpdatedV4`](./amsterdam.md#engine_forkchoiceupdatedv4) with the following changes to the processing flow:
130
136
131
137
1. Extend point (7) of the `engine_forkchoiceUpdatedV1`[specification](./paris.md#specification-1) by defining the following sequence of checks that **MUST** be run over `payloadAttributes`:
132
138
133
-
1.`payloadAttributes` matches the [`PayloadAttributesV4`](#payloadattributesv4) structure, return `-38003: Invalid payload attributes` on failure.
139
+
1.`payloadAttributes` matches the [`PayloadAttributesV5`](#payloadattributesv5) structure, return `-38003: Invalid payload attributes` on failure.
140
+
141
+
2.`payloadAttributes.timestamp` does not fall within the time frame of the Bogota fork, return `-38005: Unsupported fork` on failure.
142
+
143
+
3.`payloadAttributes.timestamp` is greater than `timestamp` of a block referenced by `forkchoiceState.headBlockHash`, return `-38003: Invalid payload attributes` on failure.
144
+
145
+
4. If any of the above checks fails, the `forkchoiceState` update **MUST NOT** be rolled back.
1. Client software **MUST** return `-38005: Unsupported fork` error if the `timestamp` of payload is greater than or equal to the Bogota activation timestamp.
0 commit comments