diff --git a/src/engine/amsterdam.md b/src/engine/amsterdam.md index 04fbfd1b5..e2cb9ddc8 100644 --- a/src/engine/amsterdam.md +++ b/src/engine/amsterdam.md @@ -12,6 +12,7 @@ This specification is based on and extends [Engine API - Osaka](./osaka.md) spec - [Structures](#structures) - [ExecutionPayloadV4](#executionpayloadv4) - [ExecutionPayloadBodyV2](#executionpayloadbodyv2) + - [PayloadAttributesV4](#payloadattributesv4) - [Methods](#methods) - [engine_newPayloadV5](#engine_newpayloadv5) - [Request](#request) @@ -33,7 +34,6 @@ This specification is based on and extends [Engine API - Osaka](./osaka.md) spec - [Request](#request-4) - [Response](#response-4) - [Specification](#specification-4) - - [PayloadAttributesV4](#payloadattributesv4) - [Update the methods of previous forks](#update-the-methods-of-previous-forks) - [Osaka API](#osaka-api) @@ -73,6 +73,17 @@ This structure has the syntax of [`ExecutionPayloadBodyV1`](./shanghai.md#execut - `withdrawals`: `Array of WithdrawalV1` - Array of withdrawals, each object is an `OBJECT` containing the fields of a `WithdrawalV1` structure. Value is `null` for blocks produced before Shanghai. - `blockAccessList`: `DATA|null` - RLP-encoded block access list as defined in [EIP-7928](https://eips.ethereum.org/EIPS/eip-7928). Value is `null` for blocks produced before Amsterdam or if the data has been pruned. +### PayloadAttributesV4 + +This structure has the syntax of [`PayloadAttributesV3`](./cancun.md#payloadattributesv3) and appends a single field: `slotNumber`. + +- `timestamp`: `QUANTITY`, 64 Bits - value for the `timestamp` field of the new payload +- `prevRandao`: `DATA`, 32 Bytes - value for the `prevRandao` field of the new payload +- `suggestedFeeRecipient`: `DATA`, 20 Bytes - suggested value for the `feeRecipient` field of the new payload +- `withdrawals`: `Array of WithdrawalV1` - Array of withdrawals, each object is an `OBJECT` containing the fields of a `WithdrawalV1` structure. +- `parentBeaconBlockRoot`: `DATA`, 32 Bytes - Root of the parent beacon block. +- `slotNumber`: `QUANTITY`, 64 Bits - value for the `slotNumber` field of the new payload + ## Methods ### engine_newPayloadV5 @@ -201,7 +212,7 @@ This method follows the same specification as [`engine_forkchoiceUpdatedV3`](./c 1. Client software **MUST** verify that `forkchoiceState` matches the [`ForkchoiceStateV1`](./paris.md#ForkchoiceStateV1) structure and return `-32602: Invalid params` on failure. -2. 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`: +2. Replace `payloadAttributes` validation steps defined by [`engine_forkchoiceUpdatedV3`](./cancun.md#specification-1) with the following: 1. `payloadAttributes` matches the [`PayloadAttributesV4`](#payloadattributesv4) structure, return `-38003: Invalid payload attributes` on failure. @@ -211,17 +222,6 @@ This method follows the same specification as [`engine_forkchoiceUpdatedV3`](./c 4. If any of the above checks fails, the `forkchoiceState` update **MUST NOT** be rolled back. -### PayloadAttributesV4 - -This structure has the syntax of [`PayloadAttributesV3`](./cancun.md#payloadattributesv3) and appends a single field: `slotNumber`. - -- `timestamp`: `QUANTITY`, 64 Bits - value for the `timestamp` field of the new payload -- `prevRandao`: `DATA`, 32 Bytes - value for the `prevRandao` field of the new payload -- `suggestedFeeRecipient`: `DATA`, 20 Bytes - suggested value for the `feeRecipient` field of the new payload -- `withdrawals`: `Array of WithdrawalV1` - Array of withdrawals, each object is an `OBJECT` containing the fields of a `WithdrawalV1` structure. -- `parentBeaconBlockRoot`: `DATA`, 32 Bytes - Root of the parent beacon block. -- `slotNumber`: `QUANTITY`, 64 Bits - value for the `slotNumber` field of the new payload - ### Update the methods of previous forks #### Osaka API