diff --git a/src/engine/openrpc/methods/payload.yaml b/src/engine/openrpc/methods/payload.yaml index 3c064bd8d..ad97f4119 100644 --- a/src/engine/openrpc/methods/payload.yaml +++ b/src/engine/openrpc/methods/payload.yaml @@ -252,6 +252,17 @@ amount: '0x1' blobGasUsed: '0x0' excessBlobGas: '0x0' + depositReceipts: + - pubkey: '0x96a96086cff07df17668f35f7418ef8798079167e3f4f9b72ecde17b28226137cf454ab1dd20ef5d924786ab3483c2f9' + withdrawalCredentials: '0x003f5102dabe0a27b1746098d1dc17a5d3fbd478759fea9287e4e419b3c3cef2' + amount: '0x1' + signature: '0xb1acdb2c4d3df3f1b8d3bfd33421660df358d84d78d16c4603551935f4b67643373e7eb63dcb16ec359be0ec41fee33b03a16e80745f2374ff1d3c352508ac5d857c6476d3c3bcf7e6ca37427c9209f17be3af5264c0e2132b3dd1156c28b4e9' + index: '0xf0' + - pubkey: '0xa5c85a60ba2905c215f6a12872e62b1ee037051364244043a5f639aa81b04a204c55e7cc851f29c7c183be253ea1510b' + withdrawalCredentials: '0x001db70c485b6264692f26b8aeaab5b0c384180df8e2184a21a808a3ec8e86ca' + amount: '0x1' + signature: '0x9561731785b48cf1886412234531e4940064584463e96ac63a1a154320227e333fb51addc4a89b7e0d3f862d7c1fd4ea03bd8eb3d8806f1e7daf591cbbbb92b0beb74d13c01617f22c5026b4f9f9f294a8a7c32db895de3b01bee0132c9209e1' + index: '0xf0' exits: - sourceAddress: '0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b' validatorPublicKey: '0x85103a5617937691dfeeb89b86a80d5dc9e3c9d3a1a0e7ce311e26e0bb732eabaa47ffa288f0d54de28209a62a7d29d0' @@ -529,6 +540,17 @@ amount: '0x1' blobGasUsed: '0x60000' excessBlobGas: '0x0' + depositReceipts: + - pubkey: '0x96a96086cff07df17668f35f7418ef8798079167e3f4f9b72ecde17b28226137cf454ab1dd20ef5d924786ab3483c2f9' + withdrawalCredentials: '0x003f5102dabe0a27b1746098d1dc17a5d3fbd478759fea9287e4e419b3c3cef2' + amount: '0x1' + signature: '0xb1acdb2c4d3df3f1b8d3bfd33421660df358d84d78d16c4603551935f4b67643373e7eb63dcb16ec359be0ec41fee33b03a16e80745f2374ff1d3c352508ac5d857c6476d3c3bcf7e6ca37427c9209f17be3af5264c0e2132b3dd1156c28b4e9' + index: '0xf0' + - pubkey: '0xa5c85a60ba2905c215f6a12872e62b1ee037051364244043a5f639aa81b04a204c55e7cc851f29c7c183be253ea1510b' + withdrawalCredentials: '0x001db70c485b6264692f26b8aeaab5b0c384180df8e2184a21a808a3ec8e86ca' + amount: '0x1' + signature: '0x9561731785b48cf1886412234531e4940064584463e96ac63a1a154320227e333fb51addc4a89b7e0d3f862d7c1fd4ea03bd8eb3d8806f1e7daf591cbbbb92b0beb74d13c01617f22c5026b4f9f9f294a8a7c32db895de3b01bee0132c9209e1' + index: '0xf0' exits: - sourceAddress: '0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b' validatorPublicKey: '0x85103a5617937691dfeeb89b86a80d5dc9e3c9d3a1a0e7ce311e26e0bb732eabaa47ffa288f0d54de28209a62a7d29d0' diff --git a/src/engine/openrpc/schemas/payload.yaml b/src/engine/openrpc/schemas/payload.yaml index 6eba24298..7e04ef7a4 100644 --- a/src/engine/openrpc/schemas/payload.yaml +++ b/src/engine/openrpc/schemas/payload.yaml @@ -264,6 +264,7 @@ ExecutionPayloadV4: - withdrawals - blobGasUsed - excessBlobGas + - depositReceipts - exits properties: parentHash: @@ -300,6 +301,11 @@ ExecutionPayloadV4: $ref: '#/components/schemas/ExecutionPayloadV3/properties/blobGasUsed' excessBlobGas: $ref: '#/components/schemas/ExecutionPayloadV3/properties/excessBlobGas' + depositReceipts: + title: Deposit receipts + type: array + items: + $ref: '#compoenents/schemas/DepositReceiptV1' exits: title: Exits type: array @@ -343,6 +349,31 @@ BlobsBundleV1: type: array items: $ref: '#/components/schemas/bytes' +DepositReceiptV1: + title: Deposit receipt object V1 + type: object + required: + - pubkey + - withdrawalCredentials + - amount + - signature + - index + properties: + pubkey: + title: Public key + $ref: '#/components/schema/bytes48' + withdrawalCredentials: + title: Withdrawal credentials + $ref: '#/components/schema/bytes32' + amount: + title: Deposit amount + $ref: '#/components/schema/uint64' + signature: + title: Deposit signature + $ref: '#/components/schema/bytes96' + index: + title: Deposit index + $ref: '#/components/schema/uint64' ExitV1: title: Exit object V1 type: object diff --git a/src/engine/prague.md b/src/engine/prague.md index 2ee9b1e6e..1bc21ef2e 100644 --- a/src/engine/prague.md +++ b/src/engine/prague.md @@ -10,33 +10,25 @@ This specification is based on and extends [Engine API - Cancun](./cancun.md) sp - [Engine API -- Prague](#engine-api----prague) - - [Table of contents](#table-of-contents) - - [Structures](#structures) - - [ExitV1](#exitv1) - - [DepositReceiptV1](#depositreceiptv1) - - [ExecutionPayloadV4](#executionpayloadv4) - - [Methods](#methods) - - [engine\_newPayloadV4](#engine_newpayloadv4) - - [Request](#request) - - [Response](#response) - - [Specification](#specification) - - [engine\_getPayloadV4](#engine_getpayloadv4) - - [Request](#request-1) - - [Response](#response-1) - - [Specification](#specification-1) + - [Table of contents](#table-of-contents) + - [Structures](#structures) + - [DepositReceiptV1](#depositreceiptv1) + - [ExitV1](#exitv1) + - [ExecutionPayloadV4](#executionpayloadv4) + - [Methods](#methods) + - [engine\_newPayloadV4](#engine_newpayloadv4) + - [Request](#request) + - [Response](#response) + - [Specification](#specification) + - [engine\_getPayloadV4](#engine_getpayloadv4) + - [Request](#request-1) + - [Response](#response-1) + - [Specification](#specification-1) ## Structures -### ExitV1 - -This structure represents an execution layer triggered exit operation. -The fields are encoded as follows: - -- `sourceAddress`: `DATA`, 20 Bytes -- `validatorPublicKey`: `DATA`, 48 Bytes - ### DepositReceiptV1 This structure maps onto the deposit object from [EIP-6110](https://eips.ethereum.org/EIPS/eip-6110). The fields are encoded as follows: @@ -49,9 +41,17 @@ The fields are encoded as follows: *Note:* The `amount` value is represented in Gwei. +### ExitV1 + +This structure represents an execution layer triggered exit operation. +The fields are encoded as follows: + +- `sourceAddress`: `DATA`, 20 Bytes +- `validatorPublicKey`: `DATA`, 48 Bytes + ### ExecutionPayloadV4 -This structure has the syntax of [`ExecutionPayloadV3`](./cancun.md#executionpayloadv3) and appends the new field: `exits` and `depositReceipts`. +This structure has the syntax of [`ExecutionPayloadV3`](./cancun.md#executionpayloadv3) and appends the new field: `depositReceipts` and `exits`. - `parentHash`: `DATA`, 32 Bytes - `feeRecipient`: `DATA`, 20 Bytes @@ -70,8 +70,8 @@ This structure has the syntax of [`ExecutionPayloadV3`](./cancun.md#executionpay - `withdrawals`: `Array of WithdrawalV1` - Array of withdrawals, each object is an `OBJECT` containing the fields of a `WithdrawalV1` structure. - `blobGasUsed`: `QUANTITY`, 64 Bits - `excessBlobGas`: `QUANTITY`, 64 Bits -- `exits`: `Array of ExitV1` - Array of exits, each object is an `OBJECT` containing the fields of a `ExitV1` structure. - `depositReceipts`: `Array of DepositReceiptV1` - Array of deposits, each object is an `OBJECT` containing the fields of a `DepositReceiptV1` structure. +- `exits`: `Array of ExitV1` - Array of exits, each object is an `OBJECT` containing the fields of a `ExitV1` structure. ## Methods diff --git a/src/schemas/base-types.yaml b/src/schemas/base-types.yaml index f301e2bfd..496317afd 100644 --- a/src/schemas/base-types.yaml +++ b/src/schemas/base-types.yaml @@ -31,6 +31,10 @@ bytes48: title: 48 hex encoded bytes type: string pattern: ^0x[0-9a-f]{96}$ +bytes96: + title: 48 hex encoded bytes + type: string + pattern: ^0x[0-9a-f]{192}$ bytes256: title: 256 hex encoded bytes type: string diff --git a/wordlist.txt b/wordlist.txt index 9ddc48968..033edc2d2 100644 --- a/wordlist.txt +++ b/wordlist.txt @@ -63,3 +63,4 @@ src https forkchoiceupdatedresponsev exitv +depositreceiptv \ No newline at end of file