Skip to content

Commit bc63246

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

File tree

2 files changed

+47
-22
lines changed

2 files changed

+47
-22
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: 46 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,11 @@ 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+
- [PayloadStatusV2](#payloadstatusv2)
16+
- [Routines](#routines)
17+
- [Payload building](#payload-building)
1318
- [Methods](#methods)
1419
- [engine_newPayloadV5](#engine_newpayloadv5)
1520
- [Request](#request)
@@ -19,11 +24,10 @@ This specification is based on and extends [Engine API - Osaka](./osaka.md) spec
1924
- [Request](#request-1)
2025
- [Response](#response-1)
2126
- [Specification](#specification-1)
22-
- [engine_updatePayloadWithInclusionListV1](#engine_updatepayloadwithinclusionlistv1)
27+
- [engine_forkchoiceUpdatedV4](#engine_forkchoiceupdatedv4)
2328
- [Request](#request-2)
2429
- [Response](#response-2)
2530
- [Specification](#specification-2)
26-
- [Update the methods of previous forks](#update-the-methods-of-previous-forks)
2731

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

@@ -33,6 +37,35 @@ This specification is based on and extends [Engine API - Osaka](./osaka.md) spec
3337
| - | - |
3438
| `MAX_BYTES_PER_INCLUSION_LIST` | `uint64(8192) = 2**13` |
3539

40+
## Structures
41+
42+
### PayloadAttributesV4
43+
44+
This structure has the syntax of [`PayloadAttributesV3`](./cancun.md#payloadattributesv3) and appends a single field: `inclusionList`.
45+
46+
- `timestamp`: `QUANTITY`, 64 Bits - value for the `timestamp` field of the new payload
47+
- `prevRandao`: `DATA`, 32 Bytes - value for the `prevRandao` field of the new payload
48+
- `suggestedFeeRecipient`: `DATA`, 20 Bytes - suggested value for the `feeRecipient` field of the new payload
49+
- `withdrawals`: `Array of WithdrawalV1` - Array of withdrawals, each object is an `OBJECT` containing the fields of a `WithdrawalV1` structure.
50+
- `parentBeaconBlockRoot`: `DATA`, 32 Bytes - Root of the parent beacon block.
51+
- `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).
52+
53+
### PayloadStatusV2
54+
55+
This structure has the syntax of [`PayloadStatusV1`](./paris.md#payloadstatusv1) and appends a single value to `status` field: `"INCLUSION_LIST_UNSATISFIED"`.
56+
57+
- `status`: `enum` - `"VALID" | "INVALID" | "SYNCING" | "ACCEPTED" | "INVALID_BLOCK_HASH" | "INCLUSION_LIST_UNSATISFIED" `
58+
- `latestValidHash`: `DATA|null`, 32 Bytes - the hash of the most recent *valid* block in the branch defined by payload and its ancestors
59+
- `validationError`: `String|null` - a message providing additional details on the validation error if the payload is classified as `INVALID` or `INVALID_BLOCK_HASH`.
60+
61+
## Routines
62+
63+
### Payload building
64+
65+
This routine follows the same specification as [Payload building](./paris.md#payload-building) with the following changes to the processing flow:
66+
67+
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).
68+
3669
## Methods
3770

3871
### engine_newPayloadV5
@@ -81,35 +114,26 @@ This method follows the same specification as [`engine_newPayloadV4`](./prague.m
81114

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

84-
### engine_updatePayloadWithInclusionListV1
117+
4. Client software **MUST** return `-38006: Unknown parent` error if a block with the given `parentHash` does not exist.
118+
119+
### engine_forkchoiceUpdatedV4
85120

86121
#### Request
87122

88-
* method: `engine_updatePayloadWithInclusionListV1`
123+
* method: `engine_forkchoiceUpdatedV4`
89124
* 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
125+
1. `forkchoiceState`: [`ForkchoiceStateV1`](./paris.md#forkchoicestatev1).
126+
2. `payloadAttributes`: `Object|null` - Instance of [`PayloadAttributesV4`](#payloadattributesv4) or `null`.
127+
* timeout: 8s
93128

94129
#### Response
95130

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.
131+
Refer to the response for [`engine_forkchoiceUpdatedV3`](./cancun.md#engine_forkchoiceupdatedv3).
98132

99133
#### Specification
100134

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)
135+
This method follows the same specification as [`engine_forkchoiceUpdatedV3`](./cancun.md#engine_forkchoiceupdatedv3) with the following changes to the processing flow:
112136

113-
a validation **MUST** be added:
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`:
114138

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.
139+
1. `payloadAttributes` matches the [`PayloadAttributesV4`](#payloadattributesv4) structure, return `-38003: Invalid payload attributes` on failure.

0 commit comments

Comments
 (0)