From f7e2e1aa2608fe71741064b726142fe181d26d48 Mon Sep 17 00:00:00 2001 From: NC <17676176+ensi321@users.noreply.github.com> Date: Tue, 19 May 2026 00:05:36 +0100 Subject: [PATCH 1/2] Sync Gloas schemas with consensus-specs v1.7.0-alpha.9 - Add `execution_requests_root` to `Gloas.ExecutionPayloadBid`. - Add `parent_execution_requests` to `Gloas.BeaconBlockBody`. - Add `Gloas.BlockAccessList` (EIP-7928) and `Gloas.ExecutionPayload` extending Deneb with `block_access_list` and `slot_number` (EIP-7843). - Point `ExecutionPayloadEnvelope.payload` to `Gloas.ExecutionPayload`. - Return `Gloas.SignedExecutionPayloadBid` from the validator bid endpoint to match the beacon endpoint and the consensus wire type. - Register `Gloas.ExecutionPayload` and `Gloas.BlockAccessList` in `beacon-node-oapi.yaml`. - Fix `ExecutionPayloadBid` field widths: `parent_block_hash` and `block_hash` to `Hash32`, `prev_randao` to `Bytes32`. Add `Hash32` to `types/primitive.yaml`. Co-Authored-By: Claude Opus 4.7 (1M context) --- apis/validator/execution_payload_bid.yaml | 4 ++-- beacon-node-oapi.yaml | 4 ++++ types/gloas/block.yaml | 6 ++++-- types/gloas/block_access_list.yaml | 6 ++++++ types/gloas/execution_payload.yaml | 12 ++++++++++++ types/gloas/execution_payload_bid.yaml | 14 ++++++++------ types/gloas/execution_payload_envelope.yaml | 6 +++--- types/primitive.yaml | 6 ++++++ 8 files changed, 45 insertions(+), 13 deletions(-) create mode 100644 types/gloas/block_access_list.yaml create mode 100644 types/gloas/execution_payload.yaml diff --git a/apis/validator/execution_payload_bid.yaml b/apis/validator/execution_payload_bid.yaml index 3dee04da..620c5298 100644 --- a/apis/validator/execution_payload_bid.yaml +++ b/apis/validator/execution_payload_bid.yaml @@ -36,10 +36,10 @@ get: enum: [gloas] example: "gloas" data: - $ref: "../../beacon-node-oapi.yaml#/components/schemas/Gloas.ExecutionPayloadBid" + $ref: "../../beacon-node-oapi.yaml#/components/schemas/Gloas.SignedExecutionPayloadBid" application/octet-stream: schema: - description: "SSZ serialized `ExecutionPayloadBid` bytes. Use Accept header to choose this response type" + description: "SSZ serialized `SignedExecutionPayloadBid` bytes. Use Accept header to choose this response type" "400": description: "Invalid request - the slot or builder_index is invalid" content: diff --git a/beacon-node-oapi.yaml b/beacon-node-oapi.yaml index b30df420..0a22e17b 100644 --- a/beacon-node-oapi.yaml +++ b/beacon-node-oapi.yaml @@ -449,6 +449,10 @@ components: $ref: "./types/gloas/execution_payload_bid.yaml#/Gloas/ExecutionPayloadBid" Gloas.SignedExecutionPayloadBid: $ref: "./types/gloas/execution_payload_bid.yaml#/Gloas/SignedExecutionPayloadBid" + Gloas.ExecutionPayload: + $ref: "./types/gloas/execution_payload.yaml#/Gloas/ExecutionPayload" + Gloas.BlockAccessList: + $ref: "./types/gloas/block_access_list.yaml#/Gloas/BlockAccessList" Gloas.ExecutionPayloadEnvelope: $ref: "./types/gloas/execution_payload_envelope.yaml#/Gloas/ExecutionPayloadEnvelope" Gloas.SignedExecutionPayloadEnvelope: diff --git a/types/gloas/block.yaml b/types/gloas/block.yaml index f869bc7e..f9bb144f 100644 --- a/types/gloas/block.yaml +++ b/types/gloas/block.yaml @@ -1,8 +1,8 @@ Gloas: BeaconBlockBody: type: object - description: "The [`BeaconBlockBody`](https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.2/specs/gloas/beacon-chain.md#beaconblockbody) object from the CL Gloas spec." - required: [randao_reveal, eth1_data, graffiti, proposer_slashings, attester_slashings, attestations, deposits, voluntary_exits, sync_aggregate, bls_to_execution_changes, signed_execution_payload_bid, payload_attestations] + description: "The [`BeaconBlockBody`](https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.9/specs/gloas/beacon-chain.md#beaconblockbody) object from the CL Gloas spec." + required: [randao_reveal, eth1_data, graffiti, proposer_slashings, attester_slashings, attestations, deposits, voluntary_exits, sync_aggregate, bls_to_execution_changes, signed_execution_payload_bid, payload_attestations, parent_execution_requests] properties: randao_reveal: $ref: "../primitive.yaml#/Signature" @@ -46,6 +46,8 @@ Gloas: $ref: "./payload_attestation.yaml#/Gloas/PayloadAttestation" minItems: 0 maxItems: 4 + parent_execution_requests: + $ref: "../electra/execution_requests.yaml#/Electra/ExecutionRequests" BeaconBlock: description: "The [`BeaconBlock`](https://github.com/ethereum/consensus-specs/blob/v1.5.0/specs/phase0/beacon-chain.md#beaconblock) object from the CL Gloas spec." diff --git a/types/gloas/block_access_list.yaml b/types/gloas/block_access_list.yaml new file mode 100644 index 00000000..5d911046 --- /dev/null +++ b/types/gloas/block_access_list.yaml @@ -0,0 +1,6 @@ +Gloas: + BlockAccessList: + type: string + format: hex + description: "The [`BlockAccessList`](https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.9/specs/gloas/beacon-chain.md#custom-types) custom type from the CL Gloas spec. RLP encoded block access list as defined in [EIP-7928](https://eips.ethereum.org/EIPS/eip-7928)." + pattern: "^0x[a-fA-F0-9]{0,2147483648}$" diff --git a/types/gloas/execution_payload.yaml b/types/gloas/execution_payload.yaml new file mode 100644 index 00000000..cd169d84 --- /dev/null +++ b/types/gloas/execution_payload.yaml @@ -0,0 +1,12 @@ +Gloas: + ExecutionPayload: + description: "The [`ExecutionPayload`](https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.9/specs/gloas/beacon-chain.md#executionpayload) object from the CL Gloas spec." + allOf: + - $ref: "../deneb/execution_payload.yaml#/Deneb/ExecutionPayload" + - type: object + required: [block_access_list, slot_number] + properties: + block_access_list: + $ref: "./block_access_list.yaml#/Gloas/BlockAccessList" + slot_number: + $ref: "../primitive.yaml#/Uint64" diff --git a/types/gloas/execution_payload_bid.yaml b/types/gloas/execution_payload_bid.yaml index e8818060..c79abdea 100644 --- a/types/gloas/execution_payload_bid.yaml +++ b/types/gloas/execution_payload_bid.yaml @@ -1,17 +1,17 @@ Gloas: ExecutionPayloadBid: type: object - description: "The [`ExecutionPayloadBid`](https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.2/specs/gloas/beacon-chain.md#executionpayloadbid) object from the CL Gloas spec." - required: [parent_block_hash, parent_block_root, block_hash, prev_randao, fee_recipient, gas_limit, builder_index, slot, value, execution_payment, blob_kzg_commitments] + description: "The [`ExecutionPayloadBid`](https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.9/specs/gloas/beacon-chain.md#executionpayloadbid) object from the CL Gloas spec." + required: [parent_block_hash, parent_block_root, block_hash, prev_randao, fee_recipient, gas_limit, builder_index, slot, value, execution_payment, blob_kzg_commitments, execution_requests_root] properties: parent_block_hash: - $ref: "../primitive.yaml#/Root" + $ref: "../primitive.yaml#/Hash32" parent_block_root: $ref: "../primitive.yaml#/Root" block_hash: - $ref: "../primitive.yaml#/Root" + $ref: "../primitive.yaml#/Hash32" prev_randao: - $ref: "../primitive.yaml#/Root" + $ref: "../primitive.yaml#/Bytes32" fee_recipient: $ref: "../primitive.yaml#/ExecutionAddress" gas_limit: @@ -28,10 +28,12 @@ Gloas: type: array items: $ref: '../primitive.yaml#/KZGCommitment' + execution_requests_root: + $ref: "../primitive.yaml#/Root" SignedExecutionPayloadBid: type: object - description: "The [`SignedExecutionPayloadBid`](https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.2/specs/gloas/beacon-chain.md#signedexecutionpayloadbid) object from the CL Gloas spec." + description: "The [`SignedExecutionPayloadBid`](https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.9/specs/gloas/beacon-chain.md#signedexecutionpayloadbid) object from the CL Gloas spec." required: [message, signature] properties: message: diff --git a/types/gloas/execution_payload_envelope.yaml b/types/gloas/execution_payload_envelope.yaml index 9e5f6d8e..5093330e 100644 --- a/types/gloas/execution_payload_envelope.yaml +++ b/types/gloas/execution_payload_envelope.yaml @@ -1,11 +1,11 @@ Gloas: ExecutionPayloadEnvelope: type: object - description: "The [`ExecutionPayloadEnvelope`](https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.7/specs/gloas/beacon-chain.md#executionpayloadenvelope) object from the CL Gloas spec." + description: "The [`ExecutionPayloadEnvelope`](https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.9/specs/gloas/beacon-chain.md#executionpayloadenvelope) object from the CL Gloas spec." required: [payload, execution_requests, builder_index, beacon_block_root, parent_beacon_block_root] properties: payload: - $ref: "../deneb/execution_payload.yaml#/Deneb/ExecutionPayload" + $ref: "./execution_payload.yaml#/Gloas/ExecutionPayload" execution_requests: $ref: "../electra/execution_requests.yaml#/Electra/ExecutionRequests" builder_index: @@ -20,7 +20,7 @@ Gloas: SignedExecutionPayloadEnvelope: type: object - description: "The [`SignedExecutionPayloadEnvelope`](https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.7/specs/gloas/beacon-chain.md#signedexecutionpayloadenvelope) object from the CL Gloas spec." + description: "The [`SignedExecutionPayloadEnvelope`](https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.9/specs/gloas/beacon-chain.md#signedexecutionpayloadenvelope) object from the CL Gloas spec." required: [message, signature] properties: message: diff --git a/types/primitive.yaml b/types/primitive.yaml index 66bf0faa..988beeef 100644 --- a/types/primitive.yaml +++ b/types/primitive.yaml @@ -66,6 +66,12 @@ Root: example: "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2" pattern: "^0x[a-fA-F0-9]{64}$" +Hash32: + type: string + format: hex + example: "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2" + pattern: "^0x[a-fA-F0-9]{64}$" + Bytes32: type: string format: hex From 90c549bce8bcd7204dd33af4a3faa5941d4df9eb Mon Sep 17 00:00:00 2001 From: NC <17676176+ensi321@users.noreply.github.com> Date: Tue, 26 May 2026 19:15:51 -0700 Subject: [PATCH 2/2] Address review feedback - Revert validator bid endpoint to return unsigned `ExecutionPayloadBid` (builder signs) - Inline `block_access_list` into `Gloas.ExecutionPayload` instead of separate type - Drop `Gloas.BlockAccessList` schema entry from oapi root - Correct spec ref `v1.7.0-alpha.9` -> `v1.7.0-alpha.8` - Add `RLP` to spellcheck wordlist --- apis/validator/execution_payload_bid.yaml | 4 ++-- beacon-node-oapi.yaml | 2 -- types/gloas/block.yaml | 2 +- types/gloas/block_access_list.yaml | 6 ------ types/gloas/execution_payload.yaml | 7 +++++-- types/gloas/execution_payload_bid.yaml | 4 ++-- types/gloas/execution_payload_envelope.yaml | 4 ++-- wordlist.txt | 1 + 8 files changed, 13 insertions(+), 17 deletions(-) delete mode 100644 types/gloas/block_access_list.yaml diff --git a/apis/validator/execution_payload_bid.yaml b/apis/validator/execution_payload_bid.yaml index 620c5298..3dee04da 100644 --- a/apis/validator/execution_payload_bid.yaml +++ b/apis/validator/execution_payload_bid.yaml @@ -36,10 +36,10 @@ get: enum: [gloas] example: "gloas" data: - $ref: "../../beacon-node-oapi.yaml#/components/schemas/Gloas.SignedExecutionPayloadBid" + $ref: "../../beacon-node-oapi.yaml#/components/schemas/Gloas.ExecutionPayloadBid" application/octet-stream: schema: - description: "SSZ serialized `SignedExecutionPayloadBid` bytes. Use Accept header to choose this response type" + description: "SSZ serialized `ExecutionPayloadBid` bytes. Use Accept header to choose this response type" "400": description: "Invalid request - the slot or builder_index is invalid" content: diff --git a/beacon-node-oapi.yaml b/beacon-node-oapi.yaml index 0a22e17b..c1b0f3a1 100644 --- a/beacon-node-oapi.yaml +++ b/beacon-node-oapi.yaml @@ -451,8 +451,6 @@ components: $ref: "./types/gloas/execution_payload_bid.yaml#/Gloas/SignedExecutionPayloadBid" Gloas.ExecutionPayload: $ref: "./types/gloas/execution_payload.yaml#/Gloas/ExecutionPayload" - Gloas.BlockAccessList: - $ref: "./types/gloas/block_access_list.yaml#/Gloas/BlockAccessList" Gloas.ExecutionPayloadEnvelope: $ref: "./types/gloas/execution_payload_envelope.yaml#/Gloas/ExecutionPayloadEnvelope" Gloas.SignedExecutionPayloadEnvelope: diff --git a/types/gloas/block.yaml b/types/gloas/block.yaml index f9bb144f..d9456e99 100644 --- a/types/gloas/block.yaml +++ b/types/gloas/block.yaml @@ -1,7 +1,7 @@ Gloas: BeaconBlockBody: type: object - description: "The [`BeaconBlockBody`](https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.9/specs/gloas/beacon-chain.md#beaconblockbody) object from the CL Gloas spec." + description: "The [`BeaconBlockBody`](https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.8/specs/gloas/beacon-chain.md#beaconblockbody) object from the CL Gloas spec." required: [randao_reveal, eth1_data, graffiti, proposer_slashings, attester_slashings, attestations, deposits, voluntary_exits, sync_aggregate, bls_to_execution_changes, signed_execution_payload_bid, payload_attestations, parent_execution_requests] properties: randao_reveal: diff --git a/types/gloas/block_access_list.yaml b/types/gloas/block_access_list.yaml deleted file mode 100644 index 5d911046..00000000 --- a/types/gloas/block_access_list.yaml +++ /dev/null @@ -1,6 +0,0 @@ -Gloas: - BlockAccessList: - type: string - format: hex - description: "The [`BlockAccessList`](https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.9/specs/gloas/beacon-chain.md#custom-types) custom type from the CL Gloas spec. RLP encoded block access list as defined in [EIP-7928](https://eips.ethereum.org/EIPS/eip-7928)." - pattern: "^0x[a-fA-F0-9]{0,2147483648}$" diff --git a/types/gloas/execution_payload.yaml b/types/gloas/execution_payload.yaml index cd169d84..fef40dc5 100644 --- a/types/gloas/execution_payload.yaml +++ b/types/gloas/execution_payload.yaml @@ -1,12 +1,15 @@ Gloas: ExecutionPayload: - description: "The [`ExecutionPayload`](https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.9/specs/gloas/beacon-chain.md#executionpayload) object from the CL Gloas spec." + description: "The [`ExecutionPayload`](https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.8/specs/gloas/beacon-chain.md#executionpayload) object from the CL Gloas spec." allOf: - $ref: "../deneb/execution_payload.yaml#/Deneb/ExecutionPayload" - type: object required: [block_access_list, slot_number] properties: block_access_list: - $ref: "./block_access_list.yaml#/Gloas/BlockAccessList" + type: string + format: hex + description: "RLP encoded `BlockAccessList` as defined in [EIP-7928]" + pattern: "^0x[a-fA-F0-9]{0,2147483648}$" slot_number: $ref: "../primitive.yaml#/Uint64" diff --git a/types/gloas/execution_payload_bid.yaml b/types/gloas/execution_payload_bid.yaml index c79abdea..6f73e6a0 100644 --- a/types/gloas/execution_payload_bid.yaml +++ b/types/gloas/execution_payload_bid.yaml @@ -1,7 +1,7 @@ Gloas: ExecutionPayloadBid: type: object - description: "The [`ExecutionPayloadBid`](https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.9/specs/gloas/beacon-chain.md#executionpayloadbid) object from the CL Gloas spec." + description: "The [`ExecutionPayloadBid`](https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.8/specs/gloas/beacon-chain.md#executionpayloadbid) object from the CL Gloas spec." required: [parent_block_hash, parent_block_root, block_hash, prev_randao, fee_recipient, gas_limit, builder_index, slot, value, execution_payment, blob_kzg_commitments, execution_requests_root] properties: parent_block_hash: @@ -33,7 +33,7 @@ Gloas: SignedExecutionPayloadBid: type: object - description: "The [`SignedExecutionPayloadBid`](https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.9/specs/gloas/beacon-chain.md#signedexecutionpayloadbid) object from the CL Gloas spec." + description: "The [`SignedExecutionPayloadBid`](https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.8/specs/gloas/beacon-chain.md#signedexecutionpayloadbid) object from the CL Gloas spec." required: [message, signature] properties: message: diff --git a/types/gloas/execution_payload_envelope.yaml b/types/gloas/execution_payload_envelope.yaml index 5093330e..9a16f6a3 100644 --- a/types/gloas/execution_payload_envelope.yaml +++ b/types/gloas/execution_payload_envelope.yaml @@ -1,7 +1,7 @@ Gloas: ExecutionPayloadEnvelope: type: object - description: "The [`ExecutionPayloadEnvelope`](https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.9/specs/gloas/beacon-chain.md#executionpayloadenvelope) object from the CL Gloas spec." + description: "The [`ExecutionPayloadEnvelope`](https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.8/specs/gloas/beacon-chain.md#executionpayloadenvelope) object from the CL Gloas spec." required: [payload, execution_requests, builder_index, beacon_block_root, parent_beacon_block_root] properties: payload: @@ -20,7 +20,7 @@ Gloas: SignedExecutionPayloadEnvelope: type: object - description: "The [`SignedExecutionPayloadEnvelope`](https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.9/specs/gloas/beacon-chain.md#signedexecutionpayloadenvelope) object from the CL Gloas spec." + description: "The [`SignedExecutionPayloadEnvelope`](https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.8/specs/gloas/beacon-chain.md#signedexecutionpayloadenvelope) object from the CL Gloas spec." required: [message, signature] properties: message: diff --git a/wordlist.txt b/wordlist.txt index 6d758d1e..b2ab8513 100644 --- a/wordlist.txt +++ b/wordlist.txt @@ -45,3 +45,4 @@ ptc PtcDuty produceBlockV stateful +RLP