From 16e1fcb1198ed3878719c20fc47d79a512de8473 Mon Sep 17 00:00:00 2001 From: james-prysm Date: Tue, 19 May 2026 16:01:06 -0500 Subject: [PATCH 01/26] adding new endpoints and deprecating old ones related to proposer preferences --- CHANGES.md | 6 ++ apis/beacon/pool/proposer_preferences.yaml | 47 ++++++++++++++++ apis/eventstream/index.yaml | 6 ++ .../beacon_committee_subscriptions.yaml | 7 +++ apis/validator/prepare_beacon_proposer.yaml | 6 ++ apis/validator/proposer_preferences.yaml | 56 +++++++++++++++++++ apis/validator/register_validator.yaml | 7 +++ beacon-node-oapi.yaml | 8 +++ types/gloas/proposer_preferences.yaml | 27 +++++++++ 9 files changed, 170 insertions(+) create mode 100644 apis/beacon/pool/proposer_preferences.yaml create mode 100644 apis/validator/proposer_preferences.yaml create mode 100644 types/gloas/proposer_preferences.yaml diff --git a/CHANGES.md b/CHANGES.md index 3d3d946e..6af296cc 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -27,6 +27,12 @@ There are likely to be descriptions etc outside of the list below, but new query | [#588](https://github.com/ethereum/beacon-APIs/pull/588) `execution_payload EVENT` added | | | | | | | [#588](https://github.com/ethereum/beacon-APIs/pull/588) `execution_payload_gossip EVENT` added | | | | | | | [#598](https://github.com/ethereum/beacon-APIs/pull/598) `fast_confirmation EVENT` added | | | | | | +| [#593](https://github.com/ethereum/beacon-APIs/pull/593) `GET /eth/v1/beacon/pool/proposer_preferences` added | | | | | | +| [#593](https://github.com/ethereum/beacon-APIs/pull/593) `POST /eth/v1/validator/proposer_preferences` added | | | | | | +| [#593](https://github.com/ethereum/beacon-APIs/pull/593) `proposer_preferences EVENT` added | | | | | | +| [#593](https://github.com/ethereum/beacon-APIs/pull/593) `POST /eth/v1/validator/prepare_beacon_proposer` deprecated | | | | | | +| [#593](https://github.com/ethereum/beacon-APIs/pull/593) `POST /eth/v1/validator/register_validator` deprecated | | | | | | +| [#593](https://github.com/ethereum/beacon-APIs/pull/593) `POST /eth/v1/validator/beacon_committee_subscriptions` updated | | | | | | The Following are no longer in the Standard API, removed since the latest version. diff --git a/apis/beacon/pool/proposer_preferences.yaml b/apis/beacon/pool/proposer_preferences.yaml new file mode 100644 index 00000000..b4bf2843 --- /dev/null +++ b/apis/beacon/pool/proposer_preferences.yaml @@ -0,0 +1,47 @@ +get: + operationId: getPoolProposerPreferences + summary: Get proposer preferences from operations pool + description: Retrieves proposer preferences known by the node. + parameters: + - name: slot + in: query + required: false + schema: + $ref: "../../../beacon-node-oapi.yaml#/components/schemas/Uint64" + tags: + - Beacon + responses: + "200": + description: Successful response + headers: + Eth-Consensus-Version: + $ref: '../../../beacon-node-oapi.yaml#/components/headers/Eth-Consensus-Version' + content: + application/json: + schema: + title: GetPoolProposerPreferencesResponse + type: object + required: [version, data] + properties: + version: + type: string + enum: [gloas] + example: "gloas" + data: + type: array + items: + $ref: "../../../beacon-node-oapi.yaml#/components/schemas/Gloas.SignedProposerPreferences" + application/octet-stream: + schema: + description: "SSZ serialized `List[SignedProposerPreferences]` bytes. Use Accept header to choose this response type" + "400": + description: "The slot could not be parsed" + content: + application/json: + schema: + $ref: "../../../beacon-node-oapi.yaml#/components/schemas/ErrorMessage" + example: + code: 400 + message: "Invalid slot parameter" + "500": + $ref: "../../../beacon-node-oapi.yaml#/components/responses/InternalError" diff --git a/apis/eventstream/index.yaml b/apis/eventstream/index.yaml index 419de663..0402a313 100644 --- a/apis/eventstream/index.yaml +++ b/apis/eventstream/index.yaml @@ -44,6 +44,7 @@ get: - execution_payload_bid - payload_attestation_message - fast_confirmation + - proposer_preferences responses: "200": description: Opened SSE stream. @@ -188,6 +189,11 @@ get: value: | event: fast_confirmation data: {"block": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", "slot": "1"} + proposer_preferences: + description: The node has received a `SignedProposerPreferences` (from P2P or API) that passes gossip validation on the `proposer_preferences` topic + value: | + event: proposer_preferences + data: {"version":"gloas", "data":{"message": {"dependent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", "proposal_slot": "32", "validator_index": "123", "fee_recipient": "0x0000000000000000000000000000000000000000", "gas_limit": "30000000"}, "signature": "0x1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505cc411d61252fb6cb3fa0017b679f8bb2305b26a285fa2737f175668d0dff91cc1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505"}} "400": description: "The topics supplied could not be parsed" content: diff --git a/apis/validator/beacon_committee_subscriptions.yaml b/apis/validator/beacon_committee_subscriptions.yaml index 1e3a0e0f..0fbafc1a 100644 --- a/apis/validator/beacon_committee_subscriptions.yaml +++ b/apis/validator/beacon_committee_subscriptions.yaml @@ -8,6 +8,13 @@ post: If validator `is_aggregator`, beacon node must: - announce subnet topic subscription on gossipsub - aggregate attestations received on that subnet + + From the Gloas fork onwards, beacon nodes use the set of validators that have submitted + subscriptions via this endpoint to identify which validators are using the node for duties, + and adjust the node's custody group count (CGC) accordingly. Validator clients SHOULD + submit one entry per attached active validator per attestation duty, including when + multiple validators share the same `(slot, committee_index)`, so the beacon node tracks + every attached validator rather than only one per subnet. tags: - ValidatorRequiredApi - Validator diff --git a/apis/validator/prepare_beacon_proposer.yaml b/apis/validator/prepare_beacon_proposer.yaml index 59c2ca19..8218377f 100644 --- a/apis/validator/prepare_beacon_proposer.yaml +++ b/apis/validator/prepare_beacon_proposer.yaml @@ -1,7 +1,13 @@ post: operationId: "prepareBeaconProposer" summary: Provide beacon node with proposals for the given validators. + deprecated: true description: | + Deprecated from Gloas onwards in favor of + `POST /eth/v1/validator/proposer_preferences`, which supersedes both fee recipient and + gas limit preferences. Beacon node support for this endpoint pre-Gloas is REQUIRED; + post-Gloas support is OPTIONAL and the endpoint MAY be removed. + Prepares the beacon node for potential proposers by supplying information required when proposing blocks for the given validators. The information supplied for each validator index will persist through the epoch in which diff --git a/apis/validator/proposer_preferences.yaml b/apis/validator/proposer_preferences.yaml new file mode 100644 index 00000000..fced98c0 --- /dev/null +++ b/apis/validator/proposer_preferences.yaml @@ -0,0 +1,56 @@ +post: + operationId: submitSignedProposerPreferences + summary: Submit signed proposer preferences + description: | + Verifies given signed proposer preferences and publishes them on the `proposer_preferences` + gossipsub topic. + + Notes: + - Validator clients SHOULD begin submitting signed proposer preferences at least one epoch + before the Gloas fork activates, so the gossip caches are warm at the fork boundary. + - Until the Gloas fork activates, beacon nodes MUST continue to honor fee recipient and gas + limit information supplied via `POST /eth/v1/validator/prepare_beacon_proposer` and + `POST /eth/v1/validator/register_validator`. From the Gloas fork onwards, signed proposer + preferences supersede both endpoints as the source of proposer fee recipient and gas + limit preferences. + - For validators served by the beacon node, if no signed proposer preferences are available + for a given proposal slot, the beacon node MAY fall back to its configured default fee + recipient and target gas limit when constructing or accepting bids for that validator. + Bids whose fee recipient or gas limit do not match a validator's preferences will be + rejected at gossip validation, so applying sensible local defaults reduces missed + proposals during the transition. + parameters: + - in: header + schema: + $ref: "../../beacon-node-oapi.yaml#/components/schemas/ConsensusVersion" + required: true + name: Eth-Consensus-Version + description: "The active consensus version to which the signed proposer preferences being submitted belongs." + tags: + - Validator + - ValidatorRequiredApi + requestBody: + description: "Array of `SignedProposerPreferences` objects to be submitted." + required: true + content: + application/json: + schema: + type: array + items: + $ref: "../../beacon-node-oapi.yaml#/components/schemas/Gloas.SignedProposerPreferences" + application/octet-stream: + schema: + description: "SSZ serialized `List[SignedProposerPreferences]` bytes. Use Content-Type header to indicate that SSZ data is contained in the request body." + responses: + "200": + description: "Signed proposer preferences are stored in pool and broadcasted to the network" + "400": + description: "Errors with one or more signed proposer preferences" + content: + application/json: + schema: + $ref: "../../beacon-node-oapi.yaml#/components/schemas/IndexedErrorMessage" + "415": + $ref: "../../beacon-node-oapi.yaml#/components/responses/UnsupportedMediaType" + "500": + $ref: "../../beacon-node-oapi.yaml#/components/responses/InternalError" diff --git a/apis/validator/register_validator.yaml b/apis/validator/register_validator.yaml index e7682dc2..5c3c7a12 100644 --- a/apis/validator/register_validator.yaml +++ b/apis/validator/register_validator.yaml @@ -1,7 +1,14 @@ post: operationId: "registerValidator" summary: Provide beacon node with registrations for the given validators to the external builder network. + deprecated: true description: | + Deprecated from Gloas onwards. Under Gloas, the external builder relay flow is replaced + by the in-protocol builder market; proposer fee recipient and gas limit preferences are + expressed via `POST /eth/v1/validator/proposer_preferences` instead. Beacon node support + for this endpoint pre-Gloas is REQUIRED; post-Gloas support is OPTIONAL and the endpoint + MAY be removed. + Prepares the beacon node for engaging with external builders. The information must be sent by the beacon node to the builder network. It is expected that the validator client will send this information periodically diff --git a/beacon-node-oapi.yaml b/beacon-node-oapi.yaml index b30df420..7609156b 100644 --- a/beacon-node-oapi.yaml +++ b/beacon-node-oapi.yaml @@ -138,6 +138,8 @@ paths: $ref: "./apis/beacon/pool/attestations.v2.yaml" /eth/v1/beacon/pool/payload_attestations: $ref: "./apis/beacon/pool/payload_attestations.yaml" + /eth/v1/beacon/pool/proposer_preferences: + $ref: "./apis/beacon/pool/proposer_preferences.yaml" /eth/v2/beacon/pool/attester_slashings: $ref: "./apis/beacon/pool/attester_slashings.v2.yaml" /eth/v1/beacon/pool/proposer_slashings: @@ -216,6 +218,8 @@ paths: $ref: "./apis/validator/prepare_beacon_proposer.yaml" /eth/v1/validator/register_validator: $ref: "./apis/validator/register_validator.yaml" + /eth/v1/validator/proposer_preferences: + $ref: "./apis/validator/proposer_preferences.yaml" /eth/v1/validator/liveness/{epoch}: $ref: "./apis/validator/liveness.yaml" /eth/v1/validator/execution_payload_bid/{slot}/{builder_index}: @@ -459,6 +463,10 @@ components: $ref: "./types/gloas/payload_attestation.yaml#/Gloas/PayloadAttestation" Gloas.PayloadAttestationMessage: $ref: "./types/gloas/payload_attestation.yaml#/Gloas/PayloadAttestationMessage" + Gloas.ProposerPreferences: + $ref: "./types/gloas/proposer_preferences.yaml#/Gloas/ProposerPreferences" + Gloas.SignedProposerPreferences: + $ref: "./types/gloas/proposer_preferences.yaml#/Gloas/SignedProposerPreferences" Fulu.BlockContents: $ref: "./types/fulu/block_contents.yaml#/Fulu/BlockContents" Fulu.SignedBlockContents: diff --git a/types/gloas/proposer_preferences.yaml b/types/gloas/proposer_preferences.yaml new file mode 100644 index 00000000..986bcae8 --- /dev/null +++ b/types/gloas/proposer_preferences.yaml @@ -0,0 +1,27 @@ +Gloas: + ProposerPreferences: + type: object + description: "The [`ProposerPreferences`](https://github.com/ethereum/consensus-specs/blob/master/specs/gloas/p2p-interface.md#proposerpreferences) object from the CL Gloas spec." + required: [dependent_root, proposal_slot, validator_index, fee_recipient, gas_limit] + properties: + dependent_root: + description: "Block root the message is anchored to. Used by gossip validation to dedup and to anchor signature verification to the checkpoint state at `epoch(proposal_slot) - 1`." + $ref: "../primitive.yaml#/Root" + proposal_slot: + $ref: "../primitive.yaml#/Uint64" + validator_index: + $ref: "../primitive.yaml#/Uint64" + fee_recipient: + $ref: "../primitive.yaml#/ExecutionAddress" + gas_limit: + $ref: "../primitive.yaml#/Uint64" + + SignedProposerPreferences: + type: object + description: "The [`SignedProposerPreferences`](https://github.com/ethereum/consensus-specs/blob/master/specs/gloas/p2p-interface.md#signedproposerpreferences) object from the CL Gloas spec." + required: [message, signature] + properties: + message: + $ref: "#/Gloas/ProposerPreferences" + signature: + $ref: "../primitive.yaml#/Signature" From 73f359b17f0e25c7ec38c0f83809b1da7e22eb46 Mon Sep 17 00:00:00 2001 From: james-prysm Date: Tue, 19 May 2026 16:15:14 -0500 Subject: [PATCH 02/26] adding to word list for spell checker --- wordlist.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/wordlist.txt b/wordlist.txt index 6d758d1e..fe14e937 100644 --- a/wordlist.txt +++ b/wordlist.txt @@ -45,3 +45,5 @@ ptc PtcDuty produceBlockV stateful +CGC +dedup From 1e03e0b4afe07061191b1e5983ab8e3bf01a539d Mon Sep 17 00:00:00 2001 From: james-prysm Date: Wed, 20 May 2026 13:18:08 -0500 Subject: [PATCH 03/26] changing gas limit field name due to https://github.com/ethereum/consensus-specs/pull/5236 --- apis/eventstream/index.yaml | 2 +- types/gloas/proposer_preferences.yaml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apis/eventstream/index.yaml b/apis/eventstream/index.yaml index 0402a313..8b06658f 100644 --- a/apis/eventstream/index.yaml +++ b/apis/eventstream/index.yaml @@ -193,7 +193,7 @@ get: description: The node has received a `SignedProposerPreferences` (from P2P or API) that passes gossip validation on the `proposer_preferences` topic value: | event: proposer_preferences - data: {"version":"gloas", "data":{"message": {"dependent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", "proposal_slot": "32", "validator_index": "123", "fee_recipient": "0x0000000000000000000000000000000000000000", "gas_limit": "30000000"}, "signature": "0x1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505cc411d61252fb6cb3fa0017b679f8bb2305b26a285fa2737f175668d0dff91cc1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505"}} + data: {"version":"gloas", "data":{"message": {"dependent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", "proposal_slot": "32", "validator_index": "123", "fee_recipient": "0x0000000000000000000000000000000000000000", "target_gas_limit": "30000000"}, "signature": "0x1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505cc411d61252fb6cb3fa0017b679f8bb2305b26a285fa2737f175668d0dff91cc1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505"}} "400": description: "The topics supplied could not be parsed" content: diff --git a/types/gloas/proposer_preferences.yaml b/types/gloas/proposer_preferences.yaml index 986bcae8..cc03dba3 100644 --- a/types/gloas/proposer_preferences.yaml +++ b/types/gloas/proposer_preferences.yaml @@ -2,7 +2,7 @@ Gloas: ProposerPreferences: type: object description: "The [`ProposerPreferences`](https://github.com/ethereum/consensus-specs/blob/master/specs/gloas/p2p-interface.md#proposerpreferences) object from the CL Gloas spec." - required: [dependent_root, proposal_slot, validator_index, fee_recipient, gas_limit] + required: [dependent_root, proposal_slot, validator_index, fee_recipient, target_gas_limit] properties: dependent_root: description: "Block root the message is anchored to. Used by gossip validation to dedup and to anchor signature verification to the checkpoint state at `epoch(proposal_slot) - 1`." @@ -13,7 +13,7 @@ Gloas: $ref: "../primitive.yaml#/Uint64" fee_recipient: $ref: "../primitive.yaml#/ExecutionAddress" - gas_limit: + target_gas_limit: $ref: "../primitive.yaml#/Uint64" SignedProposerPreferences: From d14f893038f60c1e3d4c852f1844ba28dbc1414e Mon Sep 17 00:00:00 2001 From: james-prysm Date: Tue, 26 May 2026 13:29:30 -0500 Subject: [PATCH 04/26] paul's suggestions --- apis/validator/beacon_committee_subscriptions.yaml | 4 ++-- apis/validator/proposer_preferences.yaml | 2 +- types/gloas/proposer_preferences.yaml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apis/validator/beacon_committee_subscriptions.yaml b/apis/validator/beacon_committee_subscriptions.yaml index 0fbafc1a..961eba31 100644 --- a/apis/validator/beacon_committee_subscriptions.yaml +++ b/apis/validator/beacon_committee_subscriptions.yaml @@ -10,8 +10,8 @@ post: - aggregate attestations received on that subnet From the Gloas fork onwards, beacon nodes use the set of validators that have submitted - subscriptions via this endpoint to identify which validators are using the node for duties, - and adjust the node's custody group count (CGC) accordingly. Validator clients SHOULD + subscriptions via this endpoint to determine which validators are using the node for duties + and to calculate the node's required custody group count (CGC). Validator clients SHOULD submit one entry per attached active validator per attestation duty, including when multiple validators share the same `(slot, committee_index)`, so the beacon node tracks every attached validator rather than only one per subnet. diff --git a/apis/validator/proposer_preferences.yaml b/apis/validator/proposer_preferences.yaml index fced98c0..8f844f56 100644 --- a/apis/validator/proposer_preferences.yaml +++ b/apis/validator/proposer_preferences.yaml @@ -14,7 +14,7 @@ post: preferences supersede both endpoints as the source of proposer fee recipient and gas limit preferences. - For validators served by the beacon node, if no signed proposer preferences are available - for a given proposal slot, the beacon node MAY fall back to its configured default fee + for a given proposal slot, the beacon node should fall back to its configured default fee recipient and target gas limit when constructing or accepting bids for that validator. Bids whose fee recipient or gas limit do not match a validator's preferences will be rejected at gossip validation, so applying sensible local defaults reduces missed diff --git a/types/gloas/proposer_preferences.yaml b/types/gloas/proposer_preferences.yaml index cc03dba3..df7c07b7 100644 --- a/types/gloas/proposer_preferences.yaml +++ b/types/gloas/proposer_preferences.yaml @@ -5,7 +5,7 @@ Gloas: required: [dependent_root, proposal_slot, validator_index, fee_recipient, target_gas_limit] properties: dependent_root: - description: "Block root the message is anchored to. Used by gossip validation to dedup and to anchor signature verification to the checkpoint state at `epoch(proposal_slot) - 1`." + description: "Block root the message is anchored to. Used by gossip validation to de-duplicate and to anchor signature verification to the checkpoint state at `epoch(proposal_slot) - 1`." $ref: "../primitive.yaml#/Root" proposal_slot: $ref: "../primitive.yaml#/Uint64" From 53f7a71faced58f7c7d713bc3759e4b4d1189a10 Mon Sep 17 00:00:00 2001 From: james-prysm Date: Wed, 27 May 2026 11:30:27 -0500 Subject: [PATCH 05/26] removed signed naming --- apis/validator/proposer_preferences.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apis/validator/proposer_preferences.yaml b/apis/validator/proposer_preferences.yaml index 8f844f56..4665b15b 100644 --- a/apis/validator/proposer_preferences.yaml +++ b/apis/validator/proposer_preferences.yaml @@ -1,5 +1,5 @@ post: - operationId: submitSignedProposerPreferences + operationId: submitProposerPreferences summary: Submit signed proposer preferences description: | Verifies given signed proposer preferences and publishes them on the `proposer_preferences` From 1a70969bbda2d09b2c54e64b3607f92751159238 Mon Sep 17 00:00:00 2001 From: james-prysm Date: Wed, 27 May 2026 12:04:33 -0500 Subject: [PATCH 06/26] removing proposer preferences from pool namespace --- apis/beacon/pool/proposer_preferences.yaml | 2 +- beacon-node-oapi.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apis/beacon/pool/proposer_preferences.yaml b/apis/beacon/pool/proposer_preferences.yaml index b4bf2843..a52f2554 100644 --- a/apis/beacon/pool/proposer_preferences.yaml +++ b/apis/beacon/pool/proposer_preferences.yaml @@ -1,5 +1,5 @@ get: - operationId: getPoolProposerPreferences + operationId: getProposerPreferences summary: Get proposer preferences from operations pool description: Retrieves proposer preferences known by the node. parameters: diff --git a/beacon-node-oapi.yaml b/beacon-node-oapi.yaml index 7609156b..23be1a9d 100644 --- a/beacon-node-oapi.yaml +++ b/beacon-node-oapi.yaml @@ -138,7 +138,7 @@ paths: $ref: "./apis/beacon/pool/attestations.v2.yaml" /eth/v1/beacon/pool/payload_attestations: $ref: "./apis/beacon/pool/payload_attestations.yaml" - /eth/v1/beacon/pool/proposer_preferences: + /eth/v1/beacon/proposer_preferences: $ref: "./apis/beacon/pool/proposer_preferences.yaml" /eth/v2/beacon/pool/attester_slashings: $ref: "./apis/beacon/pool/attester_slashings.v2.yaml" From d21bb6c30283bb7ef59324f1537ca9448fceee14 Mon Sep 17 00:00:00 2001 From: james-prysm Date: Thu, 28 May 2026 11:50:53 -0500 Subject: [PATCH 07/26] fall back to parent gas limit instead of local default --- apis/validator/proposer_preferences.yaml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/apis/validator/proposer_preferences.yaml b/apis/validator/proposer_preferences.yaml index 4665b15b..fccdc141 100644 --- a/apis/validator/proposer_preferences.yaml +++ b/apis/validator/proposer_preferences.yaml @@ -14,11 +14,10 @@ post: preferences supersede both endpoints as the source of proposer fee recipient and gas limit preferences. - For validators served by the beacon node, if no signed proposer preferences are available - for a given proposal slot, the beacon node should fall back to its configured default fee - recipient and target gas limit when constructing or accepting bids for that validator. - Bids whose fee recipient or gas limit do not match a validator's preferences will be - rejected at gossip validation, so applying sensible local defaults reduces missed - proposals during the transition. + for a given proposal slot, the beacon node should fall back to the parent block's gas limit + when constructing or accepting bids for that validator. Bids whose fee recipient or gas + limit do not match a validator's preferences will be rejected at gossip validation, so + applying sensible defaults reduces missed proposals during the transition. parameters: - in: header schema: From 2660727e9f3b61850ca3aacf78bf4fa58ea6618b Mon Sep 17 00:00:00 2001 From: james-prysm Date: Mon, 8 Jun 2026 08:58:52 -0500 Subject: [PATCH 08/26] removing get proposer preferences endpoint for now as it's a point of contention --- CHANGES.md | 1 - apis/beacon/pool/proposer_preferences.yaml | 47 ---------------------- beacon-node-oapi.yaml | 2 - 3 files changed, 50 deletions(-) delete mode 100644 apis/beacon/pool/proposer_preferences.yaml diff --git a/CHANGES.md b/CHANGES.md index 5504ea1e..dd953504 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -29,7 +29,6 @@ There are likely to be descriptions etc outside of the list below, but new query | [#590](https://github.com/ethereum/beacon-APIs/pull/590) `head_v2 EVENT` added | | | | | | | [#590](https://github.com/ethereum/beacon-APIs/pull/590) `head EVENT` deprecated | | | | | | | [#598](https://github.com/ethereum/beacon-APIs/pull/598) `fast_confirmation EVENT` added | | | | | | -| [#593](https://github.com/ethereum/beacon-APIs/pull/593) `GET /eth/v1/beacon/pool/proposer_preferences` added | | | | | | | [#593](https://github.com/ethereum/beacon-APIs/pull/593) `POST /eth/v1/validator/proposer_preferences` added | | | | | | | [#593](https://github.com/ethereum/beacon-APIs/pull/593) `proposer_preferences EVENT` added | | | | | | | [#593](https://github.com/ethereum/beacon-APIs/pull/593) `POST /eth/v1/validator/prepare_beacon_proposer` deprecated | | | | | | diff --git a/apis/beacon/pool/proposer_preferences.yaml b/apis/beacon/pool/proposer_preferences.yaml deleted file mode 100644 index a52f2554..00000000 --- a/apis/beacon/pool/proposer_preferences.yaml +++ /dev/null @@ -1,47 +0,0 @@ -get: - operationId: getProposerPreferences - summary: Get proposer preferences from operations pool - description: Retrieves proposer preferences known by the node. - parameters: - - name: slot - in: query - required: false - schema: - $ref: "../../../beacon-node-oapi.yaml#/components/schemas/Uint64" - tags: - - Beacon - responses: - "200": - description: Successful response - headers: - Eth-Consensus-Version: - $ref: '../../../beacon-node-oapi.yaml#/components/headers/Eth-Consensus-Version' - content: - application/json: - schema: - title: GetPoolProposerPreferencesResponse - type: object - required: [version, data] - properties: - version: - type: string - enum: [gloas] - example: "gloas" - data: - type: array - items: - $ref: "../../../beacon-node-oapi.yaml#/components/schemas/Gloas.SignedProposerPreferences" - application/octet-stream: - schema: - description: "SSZ serialized `List[SignedProposerPreferences]` bytes. Use Accept header to choose this response type" - "400": - description: "The slot could not be parsed" - content: - application/json: - schema: - $ref: "../../../beacon-node-oapi.yaml#/components/schemas/ErrorMessage" - example: - code: 400 - message: "Invalid slot parameter" - "500": - $ref: "../../../beacon-node-oapi.yaml#/components/responses/InternalError" diff --git a/beacon-node-oapi.yaml b/beacon-node-oapi.yaml index 576c5f85..499fab5f 100644 --- a/beacon-node-oapi.yaml +++ b/beacon-node-oapi.yaml @@ -138,8 +138,6 @@ paths: $ref: "./apis/beacon/pool/attestations.v2.yaml" /eth/v1/beacon/pool/payload_attestations: $ref: "./apis/beacon/pool/payload_attestations.yaml" - /eth/v1/beacon/proposer_preferences: - $ref: "./apis/beacon/pool/proposer_preferences.yaml" /eth/v2/beacon/pool/attester_slashings: $ref: "./apis/beacon/pool/attester_slashings.v2.yaml" /eth/v1/beacon/pool/proposer_slashings: From 20108408495ceb1efd829a3af148a9227e34e8c3 Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Sat, 27 Jun 2026 18:52:37 +0100 Subject: [PATCH 09/26] add limit to ssz list --- apis/validator/proposer_preferences.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apis/validator/proposer_preferences.yaml b/apis/validator/proposer_preferences.yaml index fccdc141..82a3bfe3 100644 --- a/apis/validator/proposer_preferences.yaml +++ b/apis/validator/proposer_preferences.yaml @@ -39,7 +39,7 @@ post: $ref: "../../beacon-node-oapi.yaml#/components/schemas/Gloas.SignedProposerPreferences" application/octet-stream: schema: - description: "SSZ serialized `List[SignedProposerPreferences]` bytes. Use Content-Type header to indicate that SSZ data is contained in the request body." + description: "SSZ serialized `List[SignedProposerPreferences, (MIN_SEED_LOOKAHEAD + 1) * SLOTS_PER_EPOCH]` bytes. Use Content-Type header to indicate that SSZ data is contained in the request body." responses: "200": description: "Signed proposer preferences are stored in pool and broadcasted to the network" From 217c65c52cff4e736a22cd37c017b9c25971486d Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Sat, 27 Jun 2026 18:53:26 +0100 Subject: [PATCH 10/26] fix references to CL spec objects --- types/gloas/proposer_preferences.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/types/gloas/proposer_preferences.yaml b/types/gloas/proposer_preferences.yaml index df7c07b7..8ff398d6 100644 --- a/types/gloas/proposer_preferences.yaml +++ b/types/gloas/proposer_preferences.yaml @@ -1,7 +1,7 @@ Gloas: ProposerPreferences: type: object - description: "The [`ProposerPreferences`](https://github.com/ethereum/consensus-specs/blob/master/specs/gloas/p2p-interface.md#proposerpreferences) object from the CL Gloas spec." + description: "The [`ProposerPreferences`](https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.11/specs/gloas/p2p-interface.md#new-proposerpreferences) object from the CL Gloas spec." required: [dependent_root, proposal_slot, validator_index, fee_recipient, target_gas_limit] properties: dependent_root: @@ -18,7 +18,7 @@ Gloas: SignedProposerPreferences: type: object - description: "The [`SignedProposerPreferences`](https://github.com/ethereum/consensus-specs/blob/master/specs/gloas/p2p-interface.md#signedproposerpreferences) object from the CL Gloas spec." + description: "The [`SignedProposerPreferences`](https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.11/specs/gloas/p2p-interface.md#new-signedproposerpreferences) object from the CL Gloas spec." required: [message, signature] properties: message: From cb6d57fc0efb9d6260c23022ec81c44d21b7c652 Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Sat, 27 Jun 2026 19:00:39 +0100 Subject: [PATCH 11/26] update pr number in changelog --- CHANGES.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index d40407f9..fd58b987 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -29,11 +29,11 @@ There are likely to be descriptions etc outside of the list below, but new query | [#590](https://github.com/ethereum/beacon-APIs/pull/590) `head_v2 EVENT` added | | | | | | | [#590](https://github.com/ethereum/beacon-APIs/pull/590) `head EVENT` deprecated | | | | | | | [#598](https://github.com/ethereum/beacon-APIs/pull/598) `fast_confirmation EVENT` added | | | | | | -| [#593](https://github.com/ethereum/beacon-APIs/pull/593) `POST /eth/v1/validator/proposer_preferences` added | | | | | | -| [#593](https://github.com/ethereum/beacon-APIs/pull/593) `proposer_preferences EVENT` added | | | | | | -| [#593](https://github.com/ethereum/beacon-APIs/pull/593) `POST /eth/v1/validator/prepare_beacon_proposer` deprecated | | | | | | -| [#593](https://github.com/ethereum/beacon-APIs/pull/593) `POST /eth/v1/validator/register_validator` deprecated | | | | | | -| [#593](https://github.com/ethereum/beacon-APIs/pull/593) `POST /eth/v1/validator/beacon_committee_subscriptions` updated | | | | | | +| [#608](https://github.com/ethereum/beacon-APIs/pull/608) `POST /eth/v1/validator/proposer_preferences` added | | | | | | +| [#608](https://github.com/ethereum/beacon-APIs/pull/608) `proposer_preferences EVENT` added | | | | | | +| [#608](https://github.com/ethereum/beacon-APIs/pull/608) `POST /eth/v1/validator/prepare_beacon_proposer` deprecated | | | | | | +| [#608](https://github.com/ethereum/beacon-APIs/pull/608) `POST /eth/v1/validator/register_validator` deprecated | | | | | | +| [#608](https://github.com/ethereum/beacon-APIs/pull/593) `POST /eth/v1/validator/beacon_committee_subscriptions` updated | | | | | | The Following are no longer in the Standard API, removed since the latest version. From 841bf4225bd272f75031325ad9f604bcd14be5c4 Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Sat, 27 Jun 2026 19:04:17 +0100 Subject: [PATCH 12/26] one more pr number fixed --- CHANGES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index fd58b987..02eae567 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -33,7 +33,7 @@ There are likely to be descriptions etc outside of the list below, but new query | [#608](https://github.com/ethereum/beacon-APIs/pull/608) `proposer_preferences EVENT` added | | | | | | | [#608](https://github.com/ethereum/beacon-APIs/pull/608) `POST /eth/v1/validator/prepare_beacon_proposer` deprecated | | | | | | | [#608](https://github.com/ethereum/beacon-APIs/pull/608) `POST /eth/v1/validator/register_validator` deprecated | | | | | | -| [#608](https://github.com/ethereum/beacon-APIs/pull/593) `POST /eth/v1/validator/beacon_committee_subscriptions` updated | | | | | | +| [#608](https://github.com/ethereum/beacon-APIs/pull/608) `POST /eth/v1/validator/beacon_committee_subscriptions` updated | | | | | | The Following are no longer in the Standard API, removed since the latest version. From 8000110ae1c8a7ff5a442bd47c12ddfdb6c1d339 Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Sun, 28 Jun 2026 06:36:24 +0100 Subject: [PATCH 13/26] update descriptions of type --- types/gloas/proposer_preferences.yaml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/types/gloas/proposer_preferences.yaml b/types/gloas/proposer_preferences.yaml index 8ff398d6..d3ea5ca5 100644 --- a/types/gloas/proposer_preferences.yaml +++ b/types/gloas/proposer_preferences.yaml @@ -5,15 +5,19 @@ Gloas: required: [dependent_root, proposal_slot, validator_index, fee_recipient, target_gas_limit] properties: dependent_root: - description: "Block root the message is anchored to. Used by gossip validation to de-duplicate and to anchor signature verification to the checkpoint state at `epoch(proposal_slot) - 1`." + description: "Shuffling dependent root for the epoch of `proposal_slot`, based on the validator's head." $ref: "../primitive.yaml#/Root" proposal_slot: + description: "Slot for which the validator is the proposer." $ref: "../primitive.yaml#/Uint64" validator_index: + description: "Index of the proposing validator." $ref: "../primitive.yaml#/Uint64" fee_recipient: + description: "Address to receive the builder payment." $ref: "../primitive.yaml#/ExecutionAddress" target_gas_limit: + description: "Preferred gas limit for the execution payload." $ref: "../primitive.yaml#/Uint64" SignedProposerPreferences: From add85aeb577fbd9427228c3078e3c67c8d7f2bce Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Sun, 28 Jun 2026 06:36:54 +0100 Subject: [PATCH 14/26] update prepare beacon committee subnet note --- apis/validator/beacon_committee_subscriptions.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/apis/validator/beacon_committee_subscriptions.yaml b/apis/validator/beacon_committee_subscriptions.yaml index 961eba31..2f313d25 100644 --- a/apis/validator/beacon_committee_subscriptions.yaml +++ b/apis/validator/beacon_committee_subscriptions.yaml @@ -9,12 +9,12 @@ post: - announce subnet topic subscription on gossipsub - aggregate attestations received on that subnet - From the Gloas fork onwards, beacon nodes use the set of validators that have submitted - subscriptions via this endpoint to determine which validators are using the node for duties - and to calculate the node's required custody group count (CGC). Validator clients SHOULD - submit one entry per attached active validator per attestation duty, including when - multiple validators share the same `(slot, committee_index)`, so the beacon node tracks - every attached validator rather than only one per subnet. + Beacon nodes SHOULD use the set of validators that have submitted subscriptions via this + endpoint to determine which validators are using the node for duties and to calculate the + node's required custody group count (CGC). Validator clients SHOULD submit one entry per + attached active validator per attestation duty, including when multiple validators share + the same `(slot, committee_index)`, so the beacon node tracks every attached validator + rather than only one per subnet. tags: - ValidatorRequiredApi - Validator From a30e2462582d60e448b4f740e96f89bd82fcc3fc Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Sun, 28 Jun 2026 06:38:49 +0100 Subject: [PATCH 15/26] should --> SHOULD --- apis/validator/proposer_preferences.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apis/validator/proposer_preferences.yaml b/apis/validator/proposer_preferences.yaml index 82a3bfe3..c51b17cc 100644 --- a/apis/validator/proposer_preferences.yaml +++ b/apis/validator/proposer_preferences.yaml @@ -14,7 +14,7 @@ post: preferences supersede both endpoints as the source of proposer fee recipient and gas limit preferences. - For validators served by the beacon node, if no signed proposer preferences are available - for a given proposal slot, the beacon node should fall back to the parent block's gas limit + for a given proposal slot, the beacon node SHOULD fall back to the parent block's gas limit when constructing or accepting bids for that validator. Bids whose fee recipient or gas limit do not match a validator's preferences will be rejected at gossip validation, so applying sensible defaults reduces missed proposals during the transition. From f267c92a0c5a981157d5b55a787edf439cf0193c Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Sun, 28 Jun 2026 06:40:21 +0100 Subject: [PATCH 16/26] remove changelog entry --- CHANGES.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index 02eae567..e88ae3db 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -33,7 +33,6 @@ There are likely to be descriptions etc outside of the list below, but new query | [#608](https://github.com/ethereum/beacon-APIs/pull/608) `proposer_preferences EVENT` added | | | | | | | [#608](https://github.com/ethereum/beacon-APIs/pull/608) `POST /eth/v1/validator/prepare_beacon_proposer` deprecated | | | | | | | [#608](https://github.com/ethereum/beacon-APIs/pull/608) `POST /eth/v1/validator/register_validator` deprecated | | | | | | -| [#608](https://github.com/ethereum/beacon-APIs/pull/608) `POST /eth/v1/validator/beacon_committee_subscriptions` updated | | | | | | The Following are no longer in the Standard API, removed since the latest version. From eeaad7725f4b415c5250e84964946c78c419d459 Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Sun, 28 Jun 2026 06:59:27 +0100 Subject: [PATCH 17/26] target_gas_limit example nit --- apis/eventstream/index.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apis/eventstream/index.yaml b/apis/eventstream/index.yaml index e35ccc81..1373747d 100644 --- a/apis/eventstream/index.yaml +++ b/apis/eventstream/index.yaml @@ -199,7 +199,7 @@ get: description: The node has received a `SignedProposerPreferences` (from P2P or API) that passes gossip validation on the `proposer_preferences` topic value: | event: proposer_preferences - data: {"version":"gloas", "data":{"message": {"dependent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", "proposal_slot": "32", "validator_index": "123", "fee_recipient": "0x0000000000000000000000000000000000000000", "target_gas_limit": "30000000"}, "signature": "0x1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505cc411d61252fb6cb3fa0017b679f8bb2305b26a285fa2737f175668d0dff91cc1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505"}} + data: {"version":"gloas", "data":{"message": {"dependent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", "proposal_slot": "32", "validator_index": "123", "fee_recipient": "0x0000000000000000000000000000000000000000", "target_gas_limit": "60000000"}, "signature": "0x1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505cc411d61252fb6cb3fa0017b679f8bb2305b26a285fa2737f175668d0dff91cc1b66ac1fb663c9bc59509846d6ec05345bd908eda73e670af888da41af171505"}} "400": description: "The topics supplied could not be parsed" content: From ed61b2b5ec7db1b73df5f59bcf60434615a94bed Mon Sep 17 00:00:00 2001 From: james-prysm Date: Sun, 28 Jun 2026 20:27:47 -0500 Subject: [PATCH 18/26] small nit for wording --- apis/validator/proposer_preferences.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apis/validator/proposer_preferences.yaml b/apis/validator/proposer_preferences.yaml index c51b17cc..fddab8d7 100644 --- a/apis/validator/proposer_preferences.yaml +++ b/apis/validator/proposer_preferences.yaml @@ -7,7 +7,7 @@ post: Notes: - Validator clients SHOULD begin submitting signed proposer preferences at least one epoch - before the Gloas fork activates, so the gossip caches are warm at the fork boundary. + before the Gloas fork activates, so the proposer preference caches are warm at the fork boundary. - Until the Gloas fork activates, beacon nodes MUST continue to honor fee recipient and gas limit information supplied via `POST /eth/v1/validator/prepare_beacon_proposer` and `POST /eth/v1/validator/register_validator`. From the Gloas fork onwards, signed proposer From 6cb794bdbb3aca2ff72cfb55eab14916542ac153 Mon Sep 17 00:00:00 2001 From: james-prysm Date: Sun, 28 Jun 2026 20:52:05 -0500 Subject: [PATCH 19/26] fixing minor wording issues --- apis/validator/proposer_preferences.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apis/validator/proposer_preferences.yaml b/apis/validator/proposer_preferences.yaml index fddab8d7..876891c2 100644 --- a/apis/validator/proposer_preferences.yaml +++ b/apis/validator/proposer_preferences.yaml @@ -6,7 +6,7 @@ post: gossipsub topic. Notes: - - Validator clients SHOULD begin submitting signed proposer preferences at least one epoch + - Validator clients SHOULD begin submitting signed proposer preferences one epoch before the Gloas fork activates, so the proposer preference caches are warm at the fork boundary. - Until the Gloas fork activates, beacon nodes MUST continue to honor fee recipient and gas limit information supplied via `POST /eth/v1/validator/prepare_beacon_proposer` and @@ -15,7 +15,7 @@ post: limit preferences. - For validators served by the beacon node, if no signed proposer preferences are available for a given proposal slot, the beacon node SHOULD fall back to the parent block's gas limit - when constructing or accepting bids for that validator. Bids whose fee recipient or gas + when preparing the local payload or accepting bids for that validator. Bids whose fee recipient or gas limit do not match a validator's preferences will be rejected at gossip validation, so applying sensible defaults reduces missed proposals during the transition. parameters: From 8b3235eb06ac00f0f1633e589571808b972a99e6 Mon Sep 17 00:00:00 2001 From: james-prysm Date: Sun, 28 Jun 2026 21:16:44 -0500 Subject: [PATCH 20/26] clarifying p2p fallback notes --- apis/validator/proposer_preferences.yaml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/apis/validator/proposer_preferences.yaml b/apis/validator/proposer_preferences.yaml index 876891c2..f5a65ecb 100644 --- a/apis/validator/proposer_preferences.yaml +++ b/apis/validator/proposer_preferences.yaml @@ -15,9 +15,10 @@ post: limit preferences. - For validators served by the beacon node, if no signed proposer preferences are available for a given proposal slot, the beacon node SHOULD fall back to the parent block's gas limit - when preparing the local payload or accepting bids for that validator. Bids whose fee recipient or gas - limit do not match a validator's preferences will be rejected at gossip validation, so - applying sensible defaults reduces missed proposals during the transition. + when preparing the local payload or accepting bids for that validator. On the p2p network, + bids whose fee recipient or gas limit do not match a validator's preferences are rejected at + gossip validation, while bids for a slot with no available preferences are ignored; applying + sensible defaults reduces missed proposals during the transition. parameters: - in: header schema: From 1061e7b1be3a1015ae02af714d5d8e7233b27fcf Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Mon, 29 Jun 2026 14:48:29 +0100 Subject: [PATCH 21/26] formatting --- apis/validator/proposer_preferences.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apis/validator/proposer_preferences.yaml b/apis/validator/proposer_preferences.yaml index f5a65ecb..3b950ff1 100644 --- a/apis/validator/proposer_preferences.yaml +++ b/apis/validator/proposer_preferences.yaml @@ -6,8 +6,8 @@ post: gossipsub topic. Notes: - - Validator clients SHOULD begin submitting signed proposer preferences one epoch - before the Gloas fork activates, so the proposer preference caches are warm at the fork boundary. + - Validator clients SHOULD begin submitting signed proposer preferences one epoch before the + Gloas fork activates, so the proposer preference caches are warm at the fork boundary. - Until the Gloas fork activates, beacon nodes MUST continue to honor fee recipient and gas limit information supplied via `POST /eth/v1/validator/prepare_beacon_proposer` and `POST /eth/v1/validator/register_validator`. From the Gloas fork onwards, signed proposer From b762015a215cb35c8927d2eb4000d13199a99e5a Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Mon, 29 Jun 2026 14:49:42 +0100 Subject: [PATCH 22/26] move description below --- types/gloas/proposer_preferences.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/types/gloas/proposer_preferences.yaml b/types/gloas/proposer_preferences.yaml index d3ea5ca5..2fd0881d 100644 --- a/types/gloas/proposer_preferences.yaml +++ b/types/gloas/proposer_preferences.yaml @@ -5,20 +5,20 @@ Gloas: required: [dependent_root, proposal_slot, validator_index, fee_recipient, target_gas_limit] properties: dependent_root: - description: "Shuffling dependent root for the epoch of `proposal_slot`, based on the validator's head." $ref: "../primitive.yaml#/Root" + description: "Shuffling dependent root for the epoch of `proposal_slot`, based on the validator's head." proposal_slot: - description: "Slot for which the validator is the proposer." $ref: "../primitive.yaml#/Uint64" + description: "Slot for which the validator is the proposer." validator_index: - description: "Index of the proposing validator." $ref: "../primitive.yaml#/Uint64" + description: "Index of the proposing validator." fee_recipient: - description: "Address to receive the builder payment." $ref: "../primitive.yaml#/ExecutionAddress" + description: "Address to receive the builder payment." target_gas_limit: - description: "Preferred gas limit for the execution payload." $ref: "../primitive.yaml#/Uint64" + description: "Preferred gas limit for the execution payload." SignedProposerPreferences: type: object From 300692f3642d039404b60827732aa6a783e539d9 Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Mon, 29 Jun 2026 15:05:14 +0100 Subject: [PATCH 23/26] update register validator deprecation note --- apis/validator/register_validator.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/apis/validator/register_validator.yaml b/apis/validator/register_validator.yaml index 5c3c7a12..32754854 100644 --- a/apis/validator/register_validator.yaml +++ b/apis/validator/register_validator.yaml @@ -3,9 +3,8 @@ post: summary: Provide beacon node with registrations for the given validators to the external builder network. deprecated: true description: | - Deprecated from Gloas onwards. Under Gloas, the external builder relay flow is replaced - by the in-protocol builder market; proposer fee recipient and gas limit preferences are - expressed via `POST /eth/v1/validator/proposer_preferences` instead. Beacon node support + Deprecated from Gloas onwards. Under Gloas, proposer fee recipient and gas limit preferences + are expressed via `POST /eth/v1/validator/proposer_preferences` instead. Beacon node support for this endpoint pre-Gloas is REQUIRED; post-Gloas support is OPTIONAL and the endpoint MAY be removed. From a1bf8d215a33b1656f0e71f3aaf27b8071632d83 Mon Sep 17 00:00:00 2001 From: james-prysm Date: Mon, 29 Jun 2026 09:38:47 -0500 Subject: [PATCH 24/26] adding further clarification --- apis/validator/proposer_preferences.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apis/validator/proposer_preferences.yaml b/apis/validator/proposer_preferences.yaml index 3b950ff1..399f3a46 100644 --- a/apis/validator/proposer_preferences.yaml +++ b/apis/validator/proposer_preferences.yaml @@ -7,7 +7,8 @@ post: Notes: - Validator clients SHOULD begin submitting signed proposer preferences one epoch before the - Gloas fork activates, so the proposer preference caches are warm at the fork boundary. + Gloas fork activates, so the proposer preference caches kept by both beacon nodes and builders + are warm at the fork boundary, letting builders prepare valid bids for the first Gloas slots. - Until the Gloas fork activates, beacon nodes MUST continue to honor fee recipient and gas limit information supplied via `POST /eth/v1/validator/prepare_beacon_proposer` and `POST /eth/v1/validator/register_validator`. From the Gloas fork onwards, signed proposer From 2924c4d625367ddee34d146ce61d1b8a6eb70a02 Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Mon, 29 Jun 2026 15:59:39 +0100 Subject: [PATCH 25/26] formatting --- apis/validator/proposer_preferences.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/apis/validator/proposer_preferences.yaml b/apis/validator/proposer_preferences.yaml index 399f3a46..565d8633 100644 --- a/apis/validator/proposer_preferences.yaml +++ b/apis/validator/proposer_preferences.yaml @@ -7,8 +7,9 @@ post: Notes: - Validator clients SHOULD begin submitting signed proposer preferences one epoch before the - Gloas fork activates, so the proposer preference caches kept by both beacon nodes and builders - are warm at the fork boundary, letting builders prepare valid bids for the first Gloas slots. + Gloas fork activates, so the proposer preference caches kept by both beacon nodes and + builders are warm at the fork boundary, letting builders prepare valid bids for the first + Gloas slots. - Until the Gloas fork activates, beacon nodes MUST continue to honor fee recipient and gas limit information supplied via `POST /eth/v1/validator/prepare_beacon_proposer` and `POST /eth/v1/validator/register_validator`. From the Gloas fork onwards, signed proposer From 524923ef809b7c675ade858db6383f662e3c769d Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Mon, 29 Jun 2026 17:23:35 +0100 Subject: [PATCH 26/26] re-add beacon_committee_subscriptions updated changelog --- CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.md b/CHANGES.md index 7efc84e0..5ece0aaf 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -37,6 +37,7 @@ There are likely to be descriptions etc outside of the list below, but new query | [#608](https://github.com/ethereum/beacon-APIs/pull/608) `proposer_preferences EVENT` added | | | | | | | [#608](https://github.com/ethereum/beacon-APIs/pull/608) `POST /eth/v1/validator/prepare_beacon_proposer` deprecated | | | | | | | [#608](https://github.com/ethereum/beacon-APIs/pull/608) `POST /eth/v1/validator/register_validator` deprecated | | | | | | +| [#608](https://github.com/ethereum/beacon-APIs/pull/608) `POST /eth/v1/validator/beacon_committee_subscriptions` updated | | | | | | The Following are no longer in the Standard API, removed since the latest version.