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
This structure has the syntax of [`PayloadAttributesV3`](./cancun.md#payloadattributesv3) and appends a single field: `inclusionList`.
44
+
45
+
-`timestamp`: `QUANTITY`, 64 Bits - value for the `timestamp` field of the new payload
46
+
-`prevRandao`: `DATA`, 32 Bytes - value for the `prevRandao` field of the new payload
47
+
-`suggestedFeeRecipient`: `DATA`, 20 Bytes - suggested value for the `feeRecipient` field of the new payload
48
+
-`withdrawals`: `Array of WithdrawalV1` - Array of withdrawals, each object is an `OBJECT` containing the fields of a `WithdrawalV1` structure.
49
+
-`parentBeaconBlockRoot`: `DATA`, 32 Bytes - Root of the parent beacon block.
50
+
-`inclusionList`: `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
+
52
+
## Routines
53
+
54
+
### Payload building
55
+
56
+
This routine follows the same specification as [Payload building](./paris.md#payload-building) with the following changes to the processing flow:
57
+
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).
59
+
36
60
## Methods
37
61
38
62
### engine_newPayloadV5
@@ -51,13 +75,16 @@ Method parameter list is extended with `inclusionList`.
51
75
52
76
#### Response
53
77
54
-
Refer to the response for [`engine_newPayloadV4`](./prague.md#engine_newpayloadv4).
78
+
* result: [`PayloadStatusV1`](./paris.md#payloadstatusv1), values of the `status` field are modified in the following way:
79
+
-`INVALID_BLOCK_HASH` status value is supplanted by `INVALID`.
80
+
-`INCLUSION_LIST_UNSATISFIED` status value is appended.
81
+
* error: code and message set in case an exception happens while processing the payload.
55
82
56
83
#### Specification
57
84
58
85
This method follows the same specification as [`engine_newPayloadV4`](./prague.md#engine_newpayloadv4) with the following changes:
59
86
60
-
1. Client software **MUST** return `{status: INVALID_INCLUSION_LIST, latestValidHash: null, validationError: null}` if there are any transactions of `inclusionList` that are not part of the `executionPayload`, even if they can be appended at the end of the `executionPayload`.
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 `inclusionList` as defined in [EIP-7805](https://eips.ethereum.org/EIPS/eip-7805).
61
88
62
89
### engine_getInclusionListV1
63
90
@@ -81,35 +108,26 @@ This method follows the same specification as [`engine_newPayloadV4`](./prague.m
81
108
82
109
3. Client software **MUST NOT** include any [blob transaction](https://eips.ethereum.org/EIPS/eip-4844#blob-transaction) within the provided list.
83
110
84
-
### engine_updatePayloadWithInclusionListV1
111
+
4. Client software **MUST** return `-38006: Unknown parent` error if a block with the given `parentHash` does not exist.
1.`payloadId`: `DATA`, 8 Bytes - Identifier of the payload build process.
91
-
2.`inclusionList`: `inclusionList`: `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).
2.`payloadAttributes`: `Object|null` - Instance of [`PayloadAttributesV4`](#payloadattributesv4)or `null`.
121
+
* timeout: 8s
93
122
94
123
#### Response
95
124
96
-
* result: `payloadId`: `DATA|null`, 8 Bytes - identifier of the payload build process or `null`
97
-
* error: code and message set in case an exception happens while getting the inclusion list.
125
+
Refer to the response for [`engine_forkchoiceUpdatedV3`](./cancun.md#engine_forkchoiceupdatedv3).
98
126
99
127
#### Specification
100
128
101
-
1. Given the `payloadId` client software **MUST** update payload build process building with`inclusionList`. The transactions must be part of the execution payload unless it fails to be included at the end of it.
102
-
103
-
2. Client software **SHOULD** ignore any [blob transactions](https://eips.ethereum.org/EIPS/eip-4844#blob-transaction) present in the `inclusionList` when updating the execution payload.
104
-
105
-
### Update the methods of previous forks
106
-
107
-
This document defines how FOCIL payload should be handled by the [`Prague API`](./prague.md).
This method follows the same specification as [`engine_forkchoiceUpdatedV3`](./cancun.md#engine_forkchoiceupdatedv3) with the following changes to the processing flow:
112
130
113
-
a validation **MUST** be added:
131
+
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`:
114
132
115
-
1. Client software **MUST** return `-38005: Unsupported fork` error if the `timestamp` of payload or payloadAttributes greater or equal to the FOCIL activation timestamp.
133
+
1.`payloadAttributes` matches the [`PayloadAttributesV4`](#payloadattributesv4) structure, return `-38003: Invalid payload attributes` on failure.
0 commit comments