Skip to content

Commit 74ea0b3

Browse files
committed
Reflect changes in the queue
1 parent 1c22e31 commit 74ea0b3

File tree

2 files changed

+43
-24
lines changed

2 files changed

+43
-24
lines changed

src/engine/common.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ The list of error codes introduced by this specification can be found below.
9999
| -38003 | Invalid payload attributes | Payload attributes are invalid / inconsistent. |
100100
| -38004 | Too large request | Number of requested entities is too large. |
101101
| -38005 | Unsupported fork | Payload belongs to a fork that is not supported. |
102+
| -38006 | Unknown parent | Parent does not exist / is not available. |
102103

103104
Each error returns a `null` `data` value, except `-32000` which returns the `data` object with a `err` member that explains the error encountered.
104105

src/engine/experimental/eip7805.md

Lines changed: 42 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ This specification is based on and extends [Engine API - Osaka](./osaka.md) spec
1010
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
1111

1212
- [Constants](#constants)
13+
- [Structures](#structures)
14+
- [PayloadAttributesV4](#payloadattributesv4)
15+
- [Routines](#routines)
16+
- [Payload building](#payload-building)
1317
- [Methods](#methods)
1418
- [engine_newPayloadV5](#engine_newpayloadv5)
1519
- [Request](#request)
@@ -19,11 +23,10 @@ This specification is based on and extends [Engine API - Osaka](./osaka.md) spec
1923
- [Request](#request-1)
2024
- [Response](#response-1)
2125
- [Specification](#specification-1)
22-
- [engine_updatePayloadWithInclusionListV1](#engine_updatepayloadwithinclusionlistv1)
26+
- [engine_forkchoiceUpdatedV4](#engine_forkchoiceupdatedv4)
2327
- [Request](#request-2)
2428
- [Response](#response-2)
2529
- [Specification](#specification-2)
26-
- [Update the methods of previous forks](#update-the-methods-of-previous-forks)
2730

2831
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
2932

@@ -33,6 +36,27 @@ This specification is based on and extends [Engine API - Osaka](./osaka.md) spec
3336
| - | - |
3437
| `MAX_BYTES_PER_INCLUSION_LIST` | `uint64(8192) = 2**13` |
3538

39+
## Structures
40+
41+
### PayloadAttributesV4
42+
43+
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+
3660
## Methods
3761

3862
### engine_newPayloadV5
@@ -51,13 +75,16 @@ Method parameter list is extended with `inclusionList`.
5175

5276
#### Response
5377

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.
5582

5683
#### Specification
5784

5885
This method follows the same specification as [`engine_newPayloadV4`](./prague.md#engine_newpayloadv4) with the following changes:
5986

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).
6188

6289
### engine_getInclusionListV1
6390

@@ -81,35 +108,26 @@ This method follows the same specification as [`engine_newPayloadV4`](./prague.m
81108

82109
3. Client software **MUST NOT** include any [blob transaction](https://eips.ethereum.org/EIPS/eip-4844#blob-transaction) within the provided list.
83110

84-
### engine_updatePayloadWithInclusionListV1
111+
4. Client software **MUST** return `-38006: Unknown parent` error if a block with the given `parentHash` does not exist.
112+
113+
### engine_forkchoiceUpdatedV4
85114

86115
#### Request
87116

88-
* method: `engine_updatePayloadWithInclusionListV1`
117+
* method: `engine_forkchoiceUpdatedV4`
89118
* params:
90-
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).
92-
* timeout: 1s
119+
1. `forkchoiceState`: [`ForkchoiceStateV1`](./paris.md#forkchoicestatev1).
120+
2. `payloadAttributes`: `Object|null` - Instance of [`PayloadAttributesV4`](#payloadattributesv4) or `null`.
121+
* timeout: 8s
93122

94123
#### Response
95124

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).
98126

99127
#### Specification
100128

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).
108-
109-
For the following methods:
110-
111-
- [`engine_newPayloadV4`](./prague.md#engine_newpayloadV4)
129+
This method follows the same specification as [`engine_forkchoiceUpdatedV3`](./cancun.md#engine_forkchoiceupdatedv3) with the following changes to the processing flow:
112130

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`:
114132

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

Comments
 (0)