From 74cd5d3276222d6bc664351955f55a2f9ceb086e Mon Sep 17 00:00:00 2001 From: NC <17676176+ensi321@users.noreply.github.com> Date: Mon, 13 Jan 2025 18:23:08 -0800 Subject: [PATCH 01/22] Add IL related endpoints --- apis/validator/duties/inclusion_list.yaml | 56 ++++++++++++++++++++ apis/validator/inclusion_lists.yaml | 64 +++++++++++++++++++++++ beacon-node-oapi.yaml | 11 +++- types/focil/inclusion_list.yaml | 30 +++++++++++ 4 files changed, 160 insertions(+), 1 deletion(-) create mode 100644 apis/validator/duties/inclusion_list.yaml create mode 100644 apis/validator/inclusion_lists.yaml create mode 100644 types/focil/inclusion_list.yaml diff --git a/apis/validator/duties/inclusion_list.yaml b/apis/validator/duties/inclusion_list.yaml new file mode 100644 index 00000000..8e963538 --- /dev/null +++ b/apis/validator/duties/inclusion_list.yaml @@ -0,0 +1,56 @@ +post: + tags: + - ValidatorRequiredApi + - Validator + summary: "Get inclusion list committee duties" + operationId: "getInclusionListCommitteeDuties" + description: "Requests the beacon node to provide a set of inclusion list committee duties for a particular epoch." + parameters: + - name: epoch + description: "Should only be allowed 1 epoch ahead" + in: path + required: true + schema: + $ref: "../../../beacon-node-oapi.yaml#/components/schemas/Uint64" + requestBody: + description: "An array of the validator indices for which to obtain the duties." + required: true + content: + application/json: + schema: + title: GetInclusionListCommitteeDutiesBody + type: array + minItems: 1 + items: + $ref: '../../../beacon-node-oapi.yaml#/components/schemas/Uint64' + responses: + "200": + description: Success response + content: + application/json: + schema: + title: GetInclusionListCommitteeDutiesResponse + type: object + required: [dependent_root, execution_optimistic, data] + properties: + dependent_root: + $ref: "../../../beacon-node-oapi.yaml#/components/schemas/DependentRoot" + execution_optimistic: + $ref: "../../../beacon-node-oapi.yaml#/components/schemas/ExecutionOptimistic" + data: + type: array + items: + $ref: '../../../beacon-node-oapi.yaml#/components/schemas/Focil.InclusionListDuty' + "400": + description: "Invalid epoch or index" + content: + application/json: + schema: + $ref: "../../../beacon-node-oapi.yaml#/components/schemas/ErrorMessage" + example: + code: 400 + message: "Invalid epoch: -2" + "500": + $ref: '../../../beacon-node-oapi.yaml#/components/responses/InternalError' + "503": + $ref: '../../../beacon-node-oapi.yaml#/components/responses/CurrentlySyncing' diff --git a/apis/validator/inclusion_lists.yaml b/apis/validator/inclusion_lists.yaml new file mode 100644 index 00000000..33d4a1cc --- /dev/null +++ b/apis/validator/inclusion_lists.yaml @@ -0,0 +1,64 @@ +get: + tags: + - ValidatorRequiredApi + - Validator + operationId: "produceInclusionLists" + summary: "Produce inclusion lists" + description: Requests that the beacon node produce multiple InclusionList. + parameters: + - name: slot + in: query + required: true + description: "The slot for which an inclusion list should be created." + schema: + $ref: ../../beacon-node-oapi.yaml#/components/schemas/Uint64 + - name: validator_indices + in: query + description: "Array of validator indices for which inclusion lists should be created." + required: true + schema: + type: array + uniqueItems: true + items: + $ref: '../../beacon-node-oapi.yaml#/components/schemas/Uint64' + responses: + "200": + description: Success response + content: + application/json: + schema: + title: ProduceInclusionListResponse + type: object + required: [data] + properties: + data: + $ref: '../../beacon-node-oapi.yaml#/components/schemas/Focil.InclusionLists' + "400": + $ref: '../../beacon-node-oapi.yaml#/components/responses/InvalidRequest' + "500": + $ref: '../../beacon-node-oapi.yaml#/components/responses/InternalError' + "503": + $ref: '../../beacon-node-oapi.yaml#/components/responses/CurrentlySyncing' + +post: + tags: + - ValidatorRequiredApi + - Validator + operationId: "publishInclusionLists" + summary: "Publish multiple inclusion lists" + description: "Verifies given inclusion lists and publishes them on appropriate gossipsub topic." + requestBody: + required: true + content: + application/json: + schema: + type: array + items: + $ref: '../../beacon-node-oapi.yaml#/components/schemas/SignedInclusionList' + responses: + "200": + description: "Successful response" + "400": + $ref: '../../beacon-node-oapi.yaml#/components/responses/InvalidRequest' + "500": + $ref: '../../beacon-node-oapi.yaml#/components/responses/InternalError' diff --git a/beacon-node-oapi.yaml b/beacon-node-oapi.yaml index 47ffec4a..c0b36b7c 100644 --- a/beacon-node-oapi.yaml +++ b/beacon-node-oapi.yaml @@ -190,6 +190,8 @@ paths: $ref: "./apis/validator/duties/sync.yaml" /eth/v1/validator/duties/ptc/{epoch}: $ref: "./apis/validator/duties/ptc.yaml" + /eth/v1/validator/duties/inclusion_list/{epoch}: + $ref: "./apis/validator/duties/inclusion_list.yaml" /eth/v3/validator/blocks/{slot}: $ref: "./apis/validator/block.v3.yaml" /eth/v1/validator/attestation_data: @@ -220,7 +222,8 @@ paths: $ref: "./apis/validator/liveness.yaml" /eth/v1/validator/execution_payload_bids/{slot}/{builder_index}: $ref: "./apis/validator/execution_payload_bid.yaml" - + /eth/v1/validator/inclusion_list: + $ref: "./apis/validator/inclusion_lists.yaml" /eth/v1/events: $ref: "./apis/eventstream/index.yaml" @@ -247,6 +250,8 @@ components: $ref: './types/duty.yaml#/PtcDuty' Altair.SyncDuty: $ref: './types/duty.yaml#/Altair/SyncDuty' + Focil.InclusionListDuty: + $ref: './types/validator.yaml#/Focil/InclusionListDuty' BeaconCommitteeSelection: $ref: './types/selection.yaml#/BeaconCommitteeSelection' SyncCommitteeSelection: @@ -469,6 +474,10 @@ components: $ref: "./types/fulu/data_column_sidecar.yaml#/Fulu/DataColumnSidecars" Gloas.DataColumnSidecars: $ref: "./types/gloas/data_column_sidecar.yaml#/Gloas/DataColumnSidecars" + Focil.InclusionLists: + $ref: './types/focil/inclusion_list.yaml#/Focil/InclusionLists' + Focil.SignedInclusionList: + $ref: './types/focil/inclusion_list.yaml#/Focil/SignedInclusionList' Node: $ref: './types/fork_choice.yaml#/Node' ExtraData: diff --git a/types/focil/inclusion_list.yaml b/types/focil/inclusion_list.yaml new file mode 100644 index 00000000..e7c90865 --- /dev/null +++ b/types/focil/inclusion_list.yaml @@ -0,0 +1,30 @@ +Focil: + InclusionLists: + type: array + items: + $ref: '#/Focil/InclusionList' + minItems: 1 + + SignedInclusionList: + type: object + description: "The [`SignedInclusionList`](https://github.com/ethereum/consensus-specs/blob/702b9e5c320d5e35bc49d45f07bfc0db7565ec88/specs/_features/eip7805/beacon-chain.md#signedinclusionlist) object from the CL spec." + required: [message, signature] + properties: + message: + $ref: "#/Focil/InclusionList" + signature: + $ref: '../primitive.yaml#/Signature' + + InclusionList: + type: object + description: "The [`InclusionList`](https://github.com/ethereum/consensus-specs/blob/702b9e5c320d5e35bc49d45f07bfc0db7565ec88/specs/_features/eip7805/beacon-chain.md#inclusionlist) object from the CL spec." + required: [slot, validator_index, inclusion_list_committee_root, transactions] + properties: + slot: + $ref: "../primitive.yaml#/Uint64" + validator_index: + $ref: "../primitive.yaml#/Uint64" + inclusion_list_committee_root: + $ref: '../primitive.yaml#/Root' + transactions: + $ref: '../bellatrix/transactions.yaml#/Bellatrix/Transactions' From f4c722fa7a3bd25409b9e62040142253a4070317 Mon Sep 17 00:00:00 2001 From: NC <17676176+ensi321@users.noreply.github.com> Date: Wed, 15 Jan 2025 21:28:19 -0800 Subject: [PATCH 02/22] Remove multiple ILs support on endpoints --- ...clusion_lists.yaml => inclusion_list.yaml} | 31 +++++++------------ beacon-node-oapi.yaml | 6 ++-- types/focil/inclusion_list.yaml | 6 ---- 3 files changed, 15 insertions(+), 28 deletions(-) rename apis/validator/{inclusion_lists.yaml => inclusion_list.yaml} (61%) diff --git a/apis/validator/inclusion_lists.yaml b/apis/validator/inclusion_list.yaml similarity index 61% rename from apis/validator/inclusion_lists.yaml rename to apis/validator/inclusion_list.yaml index 33d4a1cc..31315aad 100644 --- a/apis/validator/inclusion_lists.yaml +++ b/apis/validator/inclusion_list.yaml @@ -2,9 +2,9 @@ get: tags: - ValidatorRequiredApi - Validator - operationId: "produceInclusionLists" - summary: "Produce inclusion lists" - description: Requests that the beacon node produce multiple InclusionList. + operationId: "produceInclusionList" + summary: "Produce an inclusion list" + description: Requests that the beacon node produce an InclusionList. parameters: - name: slot in: query @@ -12,15 +12,6 @@ get: description: "The slot for which an inclusion list should be created." schema: $ref: ../../beacon-node-oapi.yaml#/components/schemas/Uint64 - - name: validator_indices - in: query - description: "Array of validator indices for which inclusion lists should be created." - required: true - schema: - type: array - uniqueItems: true - items: - $ref: '../../beacon-node-oapi.yaml#/components/schemas/Uint64' responses: "200": description: Success response @@ -32,7 +23,7 @@ get: required: [data] properties: data: - $ref: '../../beacon-node-oapi.yaml#/components/schemas/Focil.InclusionLists' + $ref: '../../beacon-node-oapi.yaml#/components/schemas/Focil.InclusionList' "400": $ref: '../../beacon-node-oapi.yaml#/components/responses/InvalidRequest' "500": @@ -44,17 +35,19 @@ post: tags: - ValidatorRequiredApi - Validator - operationId: "publishInclusionLists" - summary: "Publish multiple inclusion lists" - description: "Verifies given inclusion lists and publishes them on appropriate gossipsub topic." + operationId: "publishInclusionList" + summary: "Publish an inclusion list" + description: "Verifies given an inclusion list and publishes them on appropriate gossipsub topic." requestBody: required: true content: application/json: schema: - type: array - items: - $ref: '../../beacon-node-oapi.yaml#/components/schemas/SignedInclusionList' + type: object + required: [data] + properties: + data: + $ref: '../../beacon-node-oapi.yaml#/components/schemas/SignedInclusionList' responses: "200": description: "Successful response" diff --git a/beacon-node-oapi.yaml b/beacon-node-oapi.yaml index c0b36b7c..a06f3854 100644 --- a/beacon-node-oapi.yaml +++ b/beacon-node-oapi.yaml @@ -223,7 +223,7 @@ paths: /eth/v1/validator/execution_payload_bids/{slot}/{builder_index}: $ref: "./apis/validator/execution_payload_bid.yaml" /eth/v1/validator/inclusion_list: - $ref: "./apis/validator/inclusion_lists.yaml" + $ref: "./apis/validator/inclusion_list.yaml" /eth/v1/events: $ref: "./apis/eventstream/index.yaml" @@ -474,8 +474,8 @@ components: $ref: "./types/fulu/data_column_sidecar.yaml#/Fulu/DataColumnSidecars" Gloas.DataColumnSidecars: $ref: "./types/gloas/data_column_sidecar.yaml#/Gloas/DataColumnSidecars" - Focil.InclusionLists: - $ref: './types/focil/inclusion_list.yaml#/Focil/InclusionLists' + Focil.InclusionList: + $ref: './types/focil/inclusion_list.yaml#/Focil/InclusionList' Focil.SignedInclusionList: $ref: './types/focil/inclusion_list.yaml#/Focil/SignedInclusionList' Node: diff --git a/types/focil/inclusion_list.yaml b/types/focil/inclusion_list.yaml index e7c90865..c42f5c9b 100644 --- a/types/focil/inclusion_list.yaml +++ b/types/focil/inclusion_list.yaml @@ -1,10 +1,4 @@ Focil: - InclusionLists: - type: array - items: - $ref: '#/Focil/InclusionList' - minItems: 1 - SignedInclusionList: type: object description: "The [`SignedInclusionList`](https://github.com/ethereum/consensus-specs/blob/702b9e5c320d5e35bc49d45f07bfc0db7565ec88/specs/_features/eip7805/beacon-chain.md#signedinclusionlist) object from the CL spec." From a76f540b90758edd20d7a392bc5383f5fb3f7193 Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Mon, 27 Jan 2025 11:23:00 +0000 Subject: [PATCH 03/22] Add note about chain reorgs to duties endpoint --- apis/validator/duties/inclusion_list.yaml | 26 ++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/apis/validator/duties/inclusion_list.yaml b/apis/validator/duties/inclusion_list.yaml index 8e963538..ac4efaba 100644 --- a/apis/validator/duties/inclusion_list.yaml +++ b/apis/validator/duties/inclusion_list.yaml @@ -4,7 +4,23 @@ post: - Validator summary: "Get inclusion list committee duties" operationId: "getInclusionListCommitteeDuties" - description: "Requests the beacon node to provide a set of inclusion list committee duties for a particular epoch." + description: + "Requests the beacon node to provide a set of inclusion list committee duties for a particular epoch. + + Duties should only need to be checked once per epoch, + however a chain reorganization (of > MIN_SEED_LOOKAHEAD epochs) could occur, + resulting in a change of duties. For full safety, you should monitor head events and confirm the + dependent root in this response matches: + + - event.previous_duty_dependent_root when `compute_epoch_at_slot(event.slot) == epoch` + + - event.current_duty_dependent_root when `compute_epoch_at_slot(event.slot) + 1 == epoch` + + - event.block otherwise + + + The dependent_root value is `get_block_root_at_slot(state, compute_start_slot_at_epoch(epoch - 1) - 1)` + or the genesis block root in the case of underflow." parameters: - name: epoch description: "Should only be allowed 1 epoch ahead" @@ -22,7 +38,7 @@ post: type: array minItems: 1 items: - $ref: '../../../beacon-node-oapi.yaml#/components/schemas/Uint64' + $ref: "../../../beacon-node-oapi.yaml#/components/schemas/Uint64" responses: "200": description: Success response @@ -40,7 +56,7 @@ post: data: type: array items: - $ref: '../../../beacon-node-oapi.yaml#/components/schemas/Focil.InclusionListDuty' + $ref: "../../../beacon-node-oapi.yaml#/components/schemas/Focil.InclusionListDuty" "400": description: "Invalid epoch or index" content: @@ -51,6 +67,6 @@ post: code: 400 message: "Invalid epoch: -2" "500": - $ref: '../../../beacon-node-oapi.yaml#/components/responses/InternalError' + $ref: "../../../beacon-node-oapi.yaml#/components/responses/InternalError" "503": - $ref: '../../../beacon-node-oapi.yaml#/components/responses/CurrentlySyncing' + $ref: "../../../beacon-node-oapi.yaml#/components/responses/CurrentlySyncing" From bc0fd7e750d3ce878cc3b1a4053edefafaf638c0 Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Mon, 27 Jan 2025 11:31:27 +0000 Subject: [PATCH 04/22] Fix lint errors --- apis/validator/inclusion_list.yaml | 14 +++++++------- types/focil/inclusion_list.yaml | 24 ++++++++++++------------ 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/apis/validator/inclusion_list.yaml b/apis/validator/inclusion_list.yaml index 31315aad..a6bb1fab 100644 --- a/apis/validator/inclusion_list.yaml +++ b/apis/validator/inclusion_list.yaml @@ -23,13 +23,13 @@ get: required: [data] properties: data: - $ref: '../../beacon-node-oapi.yaml#/components/schemas/Focil.InclusionList' + $ref: "../../beacon-node-oapi.yaml#/components/schemas/Focil.InclusionList" "400": - $ref: '../../beacon-node-oapi.yaml#/components/responses/InvalidRequest' + $ref: "../../beacon-node-oapi.yaml#/components/responses/InvalidRequest" "500": - $ref: '../../beacon-node-oapi.yaml#/components/responses/InternalError' + $ref: "../../beacon-node-oapi.yaml#/components/responses/InternalError" "503": - $ref: '../../beacon-node-oapi.yaml#/components/responses/CurrentlySyncing' + $ref: "../../beacon-node-oapi.yaml#/components/responses/CurrentlySyncing" post: tags: @@ -47,11 +47,11 @@ post: required: [data] properties: data: - $ref: '../../beacon-node-oapi.yaml#/components/schemas/SignedInclusionList' + $ref: "../../beacon-node-oapi.yaml#/components/schemas/Focil.SignedInclusionList" responses: "200": description: "Successful response" "400": - $ref: '../../beacon-node-oapi.yaml#/components/responses/InvalidRequest' + $ref: "../../beacon-node-oapi.yaml#/components/responses/InvalidRequest" "500": - $ref: '../../beacon-node-oapi.yaml#/components/responses/InternalError' + $ref: "../../beacon-node-oapi.yaml#/components/responses/InternalError" diff --git a/types/focil/inclusion_list.yaml b/types/focil/inclusion_list.yaml index c42f5c9b..1bb6e85b 100644 --- a/types/focil/inclusion_list.yaml +++ b/types/focil/inclusion_list.yaml @@ -1,14 +1,4 @@ Focil: - SignedInclusionList: - type: object - description: "The [`SignedInclusionList`](https://github.com/ethereum/consensus-specs/blob/702b9e5c320d5e35bc49d45f07bfc0db7565ec88/specs/_features/eip7805/beacon-chain.md#signedinclusionlist) object from the CL spec." - required: [message, signature] - properties: - message: - $ref: "#/Focil/InclusionList" - signature: - $ref: '../primitive.yaml#/Signature' - InclusionList: type: object description: "The [`InclusionList`](https://github.com/ethereum/consensus-specs/blob/702b9e5c320d5e35bc49d45f07bfc0db7565ec88/specs/_features/eip7805/beacon-chain.md#inclusionlist) object from the CL spec." @@ -19,6 +9,16 @@ Focil: validator_index: $ref: "../primitive.yaml#/Uint64" inclusion_list_committee_root: - $ref: '../primitive.yaml#/Root' + $ref: "../primitive.yaml#/Root" transactions: - $ref: '../bellatrix/transactions.yaml#/Bellatrix/Transactions' + $ref: "../bellatrix/transactions.yaml#/Bellatrix/Transactions" + + SignedInclusionList: + type: object + description: "The [`SignedInclusionList`](https://github.com/ethereum/consensus-specs/blob/702b9e5c320d5e35bc49d45f07bfc0db7565ec88/specs/_features/eip7805/beacon-chain.md#signedinclusionlist) object from the CL spec." + required: [message, signature] + properties: + message: + $ref: "#/Focil/InclusionList" + signature: + $ref: "../primitive.yaml#/Signature" From 9a2a54557382ba89925f7df37b13e5b751323499 Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Mon, 27 Jan 2025 11:38:35 +0000 Subject: [PATCH 05/22] Update endpoint descriptions --- apis/validator/inclusion_list.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apis/validator/inclusion_list.yaml b/apis/validator/inclusion_list.yaml index a6bb1fab..dabc65d6 100644 --- a/apis/validator/inclusion_list.yaml +++ b/apis/validator/inclusion_list.yaml @@ -4,7 +4,7 @@ get: - Validator operationId: "produceInclusionList" summary: "Produce an inclusion list" - description: Requests that the beacon node produce an InclusionList. + description: Requests the beacon node to produce an inclusion list. parameters: - name: slot in: query @@ -37,7 +37,7 @@ post: - Validator operationId: "publishInclusionList" summary: "Publish an inclusion list" - description: "Verifies given an inclusion list and publishes them on appropriate gossipsub topic." + description: "Verifies given inclusion list and publishes it on appropriate gossipsub topic." requestBody: required: true content: From 6a5b07e037f34443eb4ff9eac1fb0c154da3e0be Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Mon, 27 Jan 2025 11:55:48 +0000 Subject: [PATCH 06/22] Make inclusion endpoints fork-aware to be forward compatible --- apis/validator/inclusion_list.yaml | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/apis/validator/inclusion_list.yaml b/apis/validator/inclusion_list.yaml index dabc65d6..cbb33c75 100644 --- a/apis/validator/inclusion_list.yaml +++ b/apis/validator/inclusion_list.yaml @@ -15,13 +15,20 @@ get: responses: "200": description: Success response + headers: + Eth-Consensus-Version: + $ref: "../../beacon-node-oapi.yaml#/components/headers/Eth-Consensus-Version" content: application/json: schema: title: ProduceInclusionListResponse type: object - required: [data] + required: [version, data] properties: + version: + type: string + enum: [phase0, altair, bellatrix, capella, deneb, electra, focil] + example: "focil" data: $ref: "../../beacon-node-oapi.yaml#/components/schemas/Focil.InclusionList" "400": @@ -38,6 +45,13 @@ post: operationId: "publishInclusionList" summary: "Publish an inclusion list" description: "Verifies given inclusion list and publishes it on appropriate gossipsub topic." + 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 inclusion list being submitted belongs." requestBody: required: true content: From 580958de8cc873b17a79b62ad74d8f3f42d99c95 Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Mon, 27 Jan 2025 12:04:40 +0000 Subject: [PATCH 07/22] Add inclusion_list event --- apis/eventstream/index.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/apis/eventstream/index.yaml b/apis/eventstream/index.yaml index 3b2fa0af..9c8fe422 100644 --- a/apis/eventstream/index.yaml +++ b/apis/eventstream/index.yaml @@ -45,6 +45,7 @@ get: - execution_payload_bid - payload_attestation_message - fast_confirmation + - inclusion_list responses: "200": description: Opened SSE stream. @@ -194,6 +195,11 @@ get: value: | event: fast_confirmation data: {"block": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", "slot": "1", "current_slot": "2"} + inclusion_list: + description: The node has received a SignedInclusionList (from P2P or API) that passes validation rules of the `inclusion_list` topic + value: | + event: inclusion_list + data: {"version": "focil", "data": {"message": {"slot": "0", "validator_index": "0", "inclusion_list_committee_root": "0x0000000000000000000000000000000000000000000000000000000000000000", "transactions": ["0x0000000000000000000000000000000000000000000000000000000000000000"]}, "signature": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}} "400": description: "The topics supplied could not be parsed" content: From 7bec89ab3fa5b6cad10884724b6c32c7f0fa26ee Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Mon, 27 Jan 2025 12:06:26 +0000 Subject: [PATCH 08/22] Add focil to word list --- wordlist.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/wordlist.txt b/wordlist.txt index b2ab8513..808525aa 100644 --- a/wordlist.txt +++ b/wordlist.txt @@ -46,3 +46,4 @@ PtcDuty produceBlockV stateful RLP +focil From 6d3ba47ddad44d707e854752f859ff62a67d2129 Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Mon, 27 Jan 2025 12:50:17 +0000 Subject: [PATCH 09/22] Tag new inclusion list endpoint / event as Experimental --- apis/eventstream/index.yaml | 2 +- apis/validator/duties/inclusion_list.yaml | 3 +-- apis/validator/inclusion_list.yaml | 6 ++---- beacon-node-oapi.yaml | 3 +++ 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/apis/eventstream/index.yaml b/apis/eventstream/index.yaml index 9c8fe422..06e60c48 100644 --- a/apis/eventstream/index.yaml +++ b/apis/eventstream/index.yaml @@ -196,7 +196,7 @@ get: event: fast_confirmation data: {"block": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", "slot": "1", "current_slot": "2"} inclusion_list: - description: The node has received a SignedInclusionList (from P2P or API) that passes validation rules of the `inclusion_list` topic + description: (Experimental) The node has received a SignedInclusionList (from P2P or API) that passes validation rules of the `inclusion_list` topic value: | event: inclusion_list data: {"version": "focil", "data": {"message": {"slot": "0", "validator_index": "0", "inclusion_list_committee_root": "0x0000000000000000000000000000000000000000000000000000000000000000", "transactions": ["0x0000000000000000000000000000000000000000000000000000000000000000"]}, "signature": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}} diff --git a/apis/validator/duties/inclusion_list.yaml b/apis/validator/duties/inclusion_list.yaml index ac4efaba..d5373aa2 100644 --- a/apis/validator/duties/inclusion_list.yaml +++ b/apis/validator/duties/inclusion_list.yaml @@ -1,7 +1,6 @@ post: tags: - - ValidatorRequiredApi - - Validator + - Experimental summary: "Get inclusion list committee duties" operationId: "getInclusionListCommitteeDuties" description: diff --git a/apis/validator/inclusion_list.yaml b/apis/validator/inclusion_list.yaml index cbb33c75..6e05258a 100644 --- a/apis/validator/inclusion_list.yaml +++ b/apis/validator/inclusion_list.yaml @@ -1,7 +1,6 @@ get: tags: - - ValidatorRequiredApi - - Validator + - Experimental operationId: "produceInclusionList" summary: "Produce an inclusion list" description: Requests the beacon node to produce an inclusion list. @@ -40,8 +39,7 @@ get: post: tags: - - ValidatorRequiredApi - - Validator + - Experimental operationId: "publishInclusionList" summary: "Publish an inclusion list" description: "Verifies given inclusion list and publishes it on appropriate gossipsub topic." diff --git a/beacon-node-oapi.yaml b/beacon-node-oapi.yaml index a06f3854..abffa4fb 100644 --- a/beacon-node-oapi.yaml +++ b/beacon-node-oapi.yaml @@ -62,6 +62,8 @@ tags: [Checkout validator flow](./validator-flow.md) to learn how to use this api. - name: Rewards description: Endpoints to query rewards and penalties for validators. + - name: Experimental + description: Endpoints associated with new EIPs that are not yet included in a hard fork. paths: @@ -224,6 +226,7 @@ paths: $ref: "./apis/validator/execution_payload_bid.yaml" /eth/v1/validator/inclusion_list: $ref: "./apis/validator/inclusion_list.yaml" + /eth/v1/events: $ref: "./apis/eventstream/index.yaml" From d0c0e88fd4a2599b9baaf1073bb0e0785e395f32 Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Mon, 27 Jan 2025 13:02:48 +0000 Subject: [PATCH 10/22] Add EIPs to word list --- wordlist.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/wordlist.txt b/wordlist.txt index 808525aa..3c33fcfa 100644 --- a/wordlist.txt +++ b/wordlist.txt @@ -46,4 +46,5 @@ PtcDuty produceBlockV stateful RLP +EIPs focil From 237d70978baeafa7888f9d951d14d357d7e3586f Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Mon, 27 Jan 2025 22:57:27 +0000 Subject: [PATCH 11/22] Rename tag from Experimental to Draft --- apis/eventstream/index.yaml | 2 +- apis/validator/duties/inclusion_list.yaml | 2 +- apis/validator/inclusion_list.yaml | 4 ++-- beacon-node-oapi.yaml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/apis/eventstream/index.yaml b/apis/eventstream/index.yaml index 06e60c48..135d1d42 100644 --- a/apis/eventstream/index.yaml +++ b/apis/eventstream/index.yaml @@ -196,7 +196,7 @@ get: event: fast_confirmation data: {"block": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", "slot": "1", "current_slot": "2"} inclusion_list: - description: (Experimental) The node has received a SignedInclusionList (from P2P or API) that passes validation rules of the `inclusion_list` topic + description: (Draft) The node has received a SignedInclusionList (from P2P or API) that passes validation rules of the `inclusion_list` topic value: | event: inclusion_list data: {"version": "focil", "data": {"message": {"slot": "0", "validator_index": "0", "inclusion_list_committee_root": "0x0000000000000000000000000000000000000000000000000000000000000000", "transactions": ["0x0000000000000000000000000000000000000000000000000000000000000000"]}, "signature": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}} diff --git a/apis/validator/duties/inclusion_list.yaml b/apis/validator/duties/inclusion_list.yaml index d5373aa2..fa5ada94 100644 --- a/apis/validator/duties/inclusion_list.yaml +++ b/apis/validator/duties/inclusion_list.yaml @@ -1,6 +1,6 @@ post: tags: - - Experimental + - Draft summary: "Get inclusion list committee duties" operationId: "getInclusionListCommitteeDuties" description: diff --git a/apis/validator/inclusion_list.yaml b/apis/validator/inclusion_list.yaml index 6e05258a..c83c0e9f 100644 --- a/apis/validator/inclusion_list.yaml +++ b/apis/validator/inclusion_list.yaml @@ -1,6 +1,6 @@ get: tags: - - Experimental + - Draft operationId: "produceInclusionList" summary: "Produce an inclusion list" description: Requests the beacon node to produce an inclusion list. @@ -39,7 +39,7 @@ get: post: tags: - - Experimental + - Draft operationId: "publishInclusionList" summary: "Publish an inclusion list" description: "Verifies given inclusion list and publishes it on appropriate gossipsub topic." diff --git a/beacon-node-oapi.yaml b/beacon-node-oapi.yaml index abffa4fb..11d7e881 100644 --- a/beacon-node-oapi.yaml +++ b/beacon-node-oapi.yaml @@ -62,7 +62,7 @@ tags: [Checkout validator flow](./validator-flow.md) to learn how to use this api. - name: Rewards description: Endpoints to query rewards and penalties for validators. - - name: Experimental + - name: Draft description: Endpoints associated with new EIPs that are not yet included in a hard fork. paths: From 385c1456255104615566dcccd1f7b9031d5f280d Mon Sep 17 00:00:00 2001 From: NC <17676176+ensi321@users.noreply.github.com> Date: Tue, 28 Jan 2025 06:41:38 -0800 Subject: [PATCH 12/22] Simplifies produceInclusionList. Move ILC root to ILC duty --- apis/validator/inclusion_list.yaml | 2 +- beacon-node-oapi.yaml | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/apis/validator/inclusion_list.yaml b/apis/validator/inclusion_list.yaml index c83c0e9f..4ce08b18 100644 --- a/apis/validator/inclusion_list.yaml +++ b/apis/validator/inclusion_list.yaml @@ -29,7 +29,7 @@ get: enum: [phase0, altair, bellatrix, capella, deneb, electra, focil] example: "focil" data: - $ref: "../../beacon-node-oapi.yaml#/components/schemas/Focil.InclusionList" + $ref: "../../beacon-node-oapi.yaml#/components/schemas/Bellatrix.Transactions" "400": $ref: "../../beacon-node-oapi.yaml#/components/responses/InvalidRequest" "500": diff --git a/beacon-node-oapi.yaml b/beacon-node-oapi.yaml index 11d7e881..8c89a9a4 100644 --- a/beacon-node-oapi.yaml +++ b/beacon-node-oapi.yaml @@ -357,6 +357,8 @@ components: $ref: './types/bellatrix/block.yaml#/Bellatrix/BlindedBeaconBlock' Bellatrix.SignedBlindedBeaconBlock: $ref: './types/bellatrix/block.yaml#/Bellatrix/SignedBlindedBeaconBlock' + Bellatrix.Transactions: + $ref: './types/bellatrix/transactions.yaml#/Bellatrix/Transactions' ConsensusVersion: type: string enum: [phase0, altair, bellatrix, capella, deneb, electra, fulu, gloas] From 4f8236b4b25dbbc7b862024aecc0a6c6dd5d7605 Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Tue, 28 Jan 2025 23:00:05 +0000 Subject: [PATCH 13/22] Remove version meta, shouldn't be required if it's jsut a list of txs --- apis/validator/inclusion_list.yaml | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/apis/validator/inclusion_list.yaml b/apis/validator/inclusion_list.yaml index 4ce08b18..7a9fded9 100644 --- a/apis/validator/inclusion_list.yaml +++ b/apis/validator/inclusion_list.yaml @@ -14,20 +14,13 @@ get: responses: "200": description: Success response - headers: - Eth-Consensus-Version: - $ref: "../../beacon-node-oapi.yaml#/components/headers/Eth-Consensus-Version" content: application/json: schema: title: ProduceInclusionListResponse type: object - required: [version, data] + required: [data] properties: - version: - type: string - enum: [phase0, altair, bellatrix, capella, deneb, electra, focil] - example: "focil" data: $ref: "../../beacon-node-oapi.yaml#/components/schemas/Bellatrix.Transactions" "400": From 032eb22ad89d0ef6c275c46b188fd26ccfdb2349 Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Tue, 4 Feb 2025 14:20:54 +0000 Subject: [PATCH 14/22] Use eip7805 instead of focil as fork name --- apis/eventstream/index.yaml | 2 +- apis/validator/duties/inclusion_list.yaml | 2 +- apis/validator/inclusion_list.yaml | 2 +- beacon-node-oapi.yaml | 12 ++++++------ types/{focil => eip7805}/inclusion_list.yaml | 4 ++-- wordlist.txt | 2 +- 6 files changed, 12 insertions(+), 12 deletions(-) rename types/{focil => eip7805}/inclusion_list.yaml (95%) diff --git a/apis/eventstream/index.yaml b/apis/eventstream/index.yaml index 135d1d42..47866293 100644 --- a/apis/eventstream/index.yaml +++ b/apis/eventstream/index.yaml @@ -199,7 +199,7 @@ get: description: (Draft) The node has received a SignedInclusionList (from P2P or API) that passes validation rules of the `inclusion_list` topic value: | event: inclusion_list - data: {"version": "focil", "data": {"message": {"slot": "0", "validator_index": "0", "inclusion_list_committee_root": "0x0000000000000000000000000000000000000000000000000000000000000000", "transactions": ["0x0000000000000000000000000000000000000000000000000000000000000000"]}, "signature": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}} + data: {"version": "eip7805", "data": {"message": {"slot": "0", "validator_index": "0", "inclusion_list_committee_root": "0x0000000000000000000000000000000000000000000000000000000000000000", "transactions": ["0x0000000000000000000000000000000000000000000000000000000000000000"]}, "signature": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}} "400": description: "The topics supplied could not be parsed" content: diff --git a/apis/validator/duties/inclusion_list.yaml b/apis/validator/duties/inclusion_list.yaml index fa5ada94..4ec6f954 100644 --- a/apis/validator/duties/inclusion_list.yaml +++ b/apis/validator/duties/inclusion_list.yaml @@ -55,7 +55,7 @@ post: data: type: array items: - $ref: "../../../beacon-node-oapi.yaml#/components/schemas/Focil.InclusionListDuty" + $ref: "../../../beacon-node-oapi.yaml#/components/schemas/EIP7805.InclusionListDuty" "400": description: "Invalid epoch or index" content: diff --git a/apis/validator/inclusion_list.yaml b/apis/validator/inclusion_list.yaml index 7a9fded9..33dba7ab 100644 --- a/apis/validator/inclusion_list.yaml +++ b/apis/validator/inclusion_list.yaml @@ -52,7 +52,7 @@ post: required: [data] properties: data: - $ref: "../../beacon-node-oapi.yaml#/components/schemas/Focil.SignedInclusionList" + $ref: "../../beacon-node-oapi.yaml#/components/schemas/EIP7805.SignedInclusionList" responses: "200": description: "Successful response" diff --git a/beacon-node-oapi.yaml b/beacon-node-oapi.yaml index 8c89a9a4..ba4265ee 100644 --- a/beacon-node-oapi.yaml +++ b/beacon-node-oapi.yaml @@ -253,8 +253,8 @@ components: $ref: './types/duty.yaml#/PtcDuty' Altair.SyncDuty: $ref: './types/duty.yaml#/Altair/SyncDuty' - Focil.InclusionListDuty: - $ref: './types/validator.yaml#/Focil/InclusionListDuty' + EIP7805.InclusionListDuty: + $ref: './types/validator.yaml#/EIP7805/InclusionListDuty' BeaconCommitteeSelection: $ref: './types/selection.yaml#/BeaconCommitteeSelection' SyncCommitteeSelection: @@ -479,10 +479,10 @@ components: $ref: "./types/fulu/data_column_sidecar.yaml#/Fulu/DataColumnSidecars" Gloas.DataColumnSidecars: $ref: "./types/gloas/data_column_sidecar.yaml#/Gloas/DataColumnSidecars" - Focil.InclusionList: - $ref: './types/focil/inclusion_list.yaml#/Focil/InclusionList' - Focil.SignedInclusionList: - $ref: './types/focil/inclusion_list.yaml#/Focil/SignedInclusionList' + EIP7805.InclusionList: + $ref: './types/eip7805/inclusion_list.yaml#/EIP7805/InclusionList' + EIP7805.SignedInclusionList: + $ref: './types/eip7805/inclusion_list.yaml#/EIP7805/SignedInclusionList' Node: $ref: './types/fork_choice.yaml#/Node' ExtraData: diff --git a/types/focil/inclusion_list.yaml b/types/eip7805/inclusion_list.yaml similarity index 95% rename from types/focil/inclusion_list.yaml rename to types/eip7805/inclusion_list.yaml index 1bb6e85b..f9e4d39b 100644 --- a/types/focil/inclusion_list.yaml +++ b/types/eip7805/inclusion_list.yaml @@ -1,4 +1,4 @@ -Focil: +EIP7805: InclusionList: type: object description: "The [`InclusionList`](https://github.com/ethereum/consensus-specs/blob/702b9e5c320d5e35bc49d45f07bfc0db7565ec88/specs/_features/eip7805/beacon-chain.md#inclusionlist) object from the CL spec." @@ -19,6 +19,6 @@ Focil: required: [message, signature] properties: message: - $ref: "#/Focil/InclusionList" + $ref: "#/EIP7805/InclusionList" signature: $ref: "../primitive.yaml#/Signature" diff --git a/wordlist.txt b/wordlist.txt index 3c33fcfa..f33a69c0 100644 --- a/wordlist.txt +++ b/wordlist.txt @@ -47,4 +47,4 @@ produceBlockV stateful RLP EIPs -focil +eip7805 From 8df7b4aa44a2b98cd4caa395c2f992af1f865dcd Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Tue, 4 Feb 2025 14:24:46 +0000 Subject: [PATCH 15/22] Use EIP-7805 as tag to separate new apis --- apis/eventstream/index.yaml | 2 +- apis/validator/duties/inclusion_list.yaml | 2 +- apis/validator/inclusion_list.yaml | 4 ++-- beacon-node-oapi.yaml | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/apis/eventstream/index.yaml b/apis/eventstream/index.yaml index 47866293..2ead9254 100644 --- a/apis/eventstream/index.yaml +++ b/apis/eventstream/index.yaml @@ -196,7 +196,7 @@ get: event: fast_confirmation data: {"block": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", "slot": "1", "current_slot": "2"} inclusion_list: - description: (Draft) The node has received a SignedInclusionList (from P2P or API) that passes validation rules of the `inclusion_list` topic + description: (EIP-7805) The node has received a SignedInclusionList (from P2P or API) that passes validation rules of the `inclusion_list` topic value: | event: inclusion_list data: {"version": "eip7805", "data": {"message": {"slot": "0", "validator_index": "0", "inclusion_list_committee_root": "0x0000000000000000000000000000000000000000000000000000000000000000", "transactions": ["0x0000000000000000000000000000000000000000000000000000000000000000"]}, "signature": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}} diff --git a/apis/validator/duties/inclusion_list.yaml b/apis/validator/duties/inclusion_list.yaml index 4ec6f954..86cb858b 100644 --- a/apis/validator/duties/inclusion_list.yaml +++ b/apis/validator/duties/inclusion_list.yaml @@ -1,6 +1,6 @@ post: tags: - - Draft + - EIP-7805 summary: "Get inclusion list committee duties" operationId: "getInclusionListCommitteeDuties" description: diff --git a/apis/validator/inclusion_list.yaml b/apis/validator/inclusion_list.yaml index 33dba7ab..26973b63 100644 --- a/apis/validator/inclusion_list.yaml +++ b/apis/validator/inclusion_list.yaml @@ -1,6 +1,6 @@ get: tags: - - Draft + - EIP-7805 operationId: "produceInclusionList" summary: "Produce an inclusion list" description: Requests the beacon node to produce an inclusion list. @@ -32,7 +32,7 @@ get: post: tags: - - Draft + - EIP-7805 operationId: "publishInclusionList" summary: "Publish an inclusion list" description: "Verifies given inclusion list and publishes it on appropriate gossipsub topic." diff --git a/beacon-node-oapi.yaml b/beacon-node-oapi.yaml index ba4265ee..99de2658 100644 --- a/beacon-node-oapi.yaml +++ b/beacon-node-oapi.yaml @@ -62,8 +62,8 @@ tags: [Checkout validator flow](./validator-flow.md) to learn how to use this api. - name: Rewards description: Endpoints to query rewards and penalties for validators. - - name: Draft - description: Endpoints associated with new EIPs that are not yet included in a hard fork. + - name: EIP-7805 + description: Endpoints required for EIP-7805 Fork-choice enforced Inclusion Lists (FOCIL) paths: From 8c419c1ab5850a577707fc7a13811c17d6593422 Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Tue, 4 Feb 2025 14:44:24 +0000 Subject: [PATCH 16/22] Update word list --- wordlist.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/wordlist.txt b/wordlist.txt index f33a69c0..3cb8fc6e 100644 --- a/wordlist.txt +++ b/wordlist.txt @@ -47,4 +47,5 @@ produceBlockV stateful RLP EIPs +FOCIL eip7805 From 7517789888befa3ac3ed73a0f85040fecfbf9f3a Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Tue, 4 Feb 2025 14:55:41 +0000 Subject: [PATCH 17/22] Update tag description --- beacon-node-oapi.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/beacon-node-oapi.yaml b/beacon-node-oapi.yaml index 99de2658..5b98eabf 100644 --- a/beacon-node-oapi.yaml +++ b/beacon-node-oapi.yaml @@ -63,7 +63,7 @@ tags: - name: Rewards description: Endpoints to query rewards and penalties for validators. - name: EIP-7805 - description: Endpoints required for EIP-7805 Fork-choice enforced Inclusion Lists (FOCIL) + description: "Endpoints required for EIP-7805: Fork-choice enforced Inclusion Lists (FOCIL)" paths: From c76030196048394bda08cb24d82f53023cf5ee0a Mon Sep 17 00:00:00 2001 From: NC <17676176+ensi321@users.noreply.github.com> Date: Mon, 25 Aug 2025 22:08:39 -0700 Subject: [PATCH 18/22] Rebase on fulu --- beacon-node-oapi.yaml | 2 +- types/duty.yaml | 17 +++++++++++++++++ types/eip7805/inclusion_list.yaml | 4 ++-- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/beacon-node-oapi.yaml b/beacon-node-oapi.yaml index 5b98eabf..ea5f7853 100644 --- a/beacon-node-oapi.yaml +++ b/beacon-node-oapi.yaml @@ -254,7 +254,7 @@ components: Altair.SyncDuty: $ref: './types/duty.yaml#/Altair/SyncDuty' EIP7805.InclusionListDuty: - $ref: './types/validator.yaml#/EIP7805/InclusionListDuty' + $ref: './types/duty.yaml#/EIP7805/InclusionListDuty' BeaconCommitteeSelection: $ref: './types/selection.yaml#/BeaconCommitteeSelection' SyncCommitteeSelection: diff --git a/types/duty.yaml b/types/duty.yaml index eae60438..0c04296f 100644 --- a/types/duty.yaml +++ b/types/duty.yaml @@ -65,3 +65,20 @@ PtcDuty: slot: $ref: "./primitive.yaml#/Uint64" description: "The slot at which the validator must perform PTC duties." + +EIP7805: + InclusionListDuty: + type: object + required: [pubkey, validator_index, slot, inclusion_list_committee_root] + properties: + pubkey: + $ref: "./primitive.yaml#/Pubkey" + validator_index: + $ref: "./primitive.yaml#/Uint64" + description: "Index of validator in validator registry." + slot: + $ref: "./primitive.yaml#/Uint64" + description: "The slot at which the validator must propose an inclusion list." + inclusion_list_committee_root: + $ref: "./primitive.yaml#/Root" + description: "The root of inclusion list committee that the validator is part of." diff --git a/types/eip7805/inclusion_list.yaml b/types/eip7805/inclusion_list.yaml index f9e4d39b..0d816df3 100644 --- a/types/eip7805/inclusion_list.yaml +++ b/types/eip7805/inclusion_list.yaml @@ -1,7 +1,7 @@ EIP7805: InclusionList: type: object - description: "The [`InclusionList`](https://github.com/ethereum/consensus-specs/blob/702b9e5c320d5e35bc49d45f07bfc0db7565ec88/specs/_features/eip7805/beacon-chain.md#inclusionlist) object from the CL spec." + description: "The [`InclusionList`](https://github.com/ethereum/consensus-specs/blob/v1.6.0-alpha.5/specs/_features/eip7805/beacon-chain.md#inclusionlist) object from the CL spec." required: [slot, validator_index, inclusion_list_committee_root, transactions] properties: slot: @@ -15,7 +15,7 @@ EIP7805: SignedInclusionList: type: object - description: "The [`SignedInclusionList`](https://github.com/ethereum/consensus-specs/blob/702b9e5c320d5e35bc49d45f07bfc0db7565ec88/specs/_features/eip7805/beacon-chain.md#signedinclusionlist) object from the CL spec." + description: "The [`SignedInclusionList`](https://github.com/ethereum/consensus-specs/blob/v1.6.0-alpha.5/specs/_features/eip7805/beacon-chain.md#signedinclusionlist) object from the CL spec." required: [message, signature] properties: message: From 49ad0b221c8cebc48791bd3027c11c34a5cd203c Mon Sep 17 00:00:00 2001 From: NC <17676176+ensi321@users.noreply.github.com> Date: Mon, 25 Aug 2025 22:15:58 -0700 Subject: [PATCH 19/22] Update payload_attributes example --- 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 2ead9254..b1645ece 100644 --- a/apis/eventstream/index.yaml +++ b/apis/eventstream/index.yaml @@ -159,7 +159,7 @@ get: ignored by block builders and most other API consumers. value: | event: payload_attributes - data: {"version": "electra", "data": {"proposer_index": "123", "proposal_slot": "10", "parent_block_number": "9", "parent_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", "parent_block_hash": "0x9a2fefd2fdb57f74993c7780ea5b9030d2897b615b89f808011ca5aebed54eaf", "payload_attributes": {"timestamp": "123456", "prev_randao": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", "suggested_fee_recipient": "0x0000000000000000000000000000000000000000", "withdrawals": [{"index": "5", "validator_index": "10", "address": "0x0000000000000000000000000000000000000000", "amount": "15640"}], "parent_beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2"}}} + data: {"version": "eip7805", "data": {"proposer_index": "123", "proposal_slot": "10", "parent_block_number": "9", "parent_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", "parent_block_hash": "0x9a2fefd2fdb57f74993c7780ea5b9030d2897b615b89f808011ca5aebed54eaf", "payload_attributes": {"timestamp": "123456", "prev_randao": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", "suggested_fee_recipient": "0x0000000000000000000000000000000000000000", "withdrawals": [{"index": "5", "validator_index": "10", "address": "0x0000000000000000000000000000000000000000", "amount": "15640"}], "parent_beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", "inclusion_list_transactions": ["0x03f88f0780843b9aca008506fc23ac00830186a09400000000000000000000000000000000000001008080c001e1a0010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c44401401a0840650aa8f74d2b07f40067dc33b715078d73422f01da17abdbd11e02bbdfda9a04b2260f6022bf53eadb337b3e59514936f7317d872defb891a708ee279bdca90"]}}} data_column_sidecar: description: The node has received a DataColumnSidecar (from P2P or API) that passes all gossip validations on the data_column_sidecar_{subnet_id} topic value: | From a89ffd8e593472d2cd7457029247c8b9b29198ee Mon Sep 17 00:00:00 2001 From: NC <17676176+ensi321@users.noreply.github.com> Date: Mon, 22 Jun 2026 15:02:33 -0700 Subject: [PATCH 20/22] Rename EIP7805/FOCIL to Heze MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit FOCIL (EIP-7805) is officially scheduled as part of Heze. Use Heze as the fork name to match the consensus-specs naming. - types/eip7805/ → types/heze/, namespace EIP7805 → Heze - Tag EIP-7805 → Heze (description still references EIP-7805 + FOCIL for discoverability) - Event version strings "eip7805" → "heze" - Bump spec links to v1.7.0-alpha.10 Co-Authored-By: Claude Opus 4.7 (1M context) --- apis/eventstream/index.yaml | 6 +++--- apis/validator/duties/inclusion_list.yaml | 4 ++-- apis/validator/inclusion_list.yaml | 6 +++--- beacon-node-oapi.yaml | 16 ++++++++-------- types/duty.yaml | 2 +- types/{eip7805 => heze}/inclusion_list.yaml | 8 ++++---- wordlist.txt | 2 +- 7 files changed, 22 insertions(+), 22 deletions(-) rename types/{eip7805 => heze}/inclusion_list.yaml (70%) diff --git a/apis/eventstream/index.yaml b/apis/eventstream/index.yaml index b1645ece..20808fc1 100644 --- a/apis/eventstream/index.yaml +++ b/apis/eventstream/index.yaml @@ -159,7 +159,7 @@ get: ignored by block builders and most other API consumers. value: | event: payload_attributes - data: {"version": "eip7805", "data": {"proposer_index": "123", "proposal_slot": "10", "parent_block_number": "9", "parent_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", "parent_block_hash": "0x9a2fefd2fdb57f74993c7780ea5b9030d2897b615b89f808011ca5aebed54eaf", "payload_attributes": {"timestamp": "123456", "prev_randao": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", "suggested_fee_recipient": "0x0000000000000000000000000000000000000000", "withdrawals": [{"index": "5", "validator_index": "10", "address": "0x0000000000000000000000000000000000000000", "amount": "15640"}], "parent_beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", "inclusion_list_transactions": ["0x03f88f0780843b9aca008506fc23ac00830186a09400000000000000000000000000000000000001008080c001e1a0010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c44401401a0840650aa8f74d2b07f40067dc33b715078d73422f01da17abdbd11e02bbdfda9a04b2260f6022bf53eadb337b3e59514936f7317d872defb891a708ee279bdca90"]}}} + data: {"version": "heze", "data": {"proposer_index": "123", "proposal_slot": "10", "parent_block_number": "9", "parent_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", "parent_block_hash": "0x9a2fefd2fdb57f74993c7780ea5b9030d2897b615b89f808011ca5aebed54eaf", "payload_attributes": {"timestamp": "123456", "prev_randao": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", "suggested_fee_recipient": "0x0000000000000000000000000000000000000000", "withdrawals": [{"index": "5", "validator_index": "10", "address": "0x0000000000000000000000000000000000000000", "amount": "15640"}], "parent_beacon_block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", "inclusion_list_transactions": ["0x03f88f0780843b9aca008506fc23ac00830186a09400000000000000000000000000000000000001008080c001e1a0010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c44401401a0840650aa8f74d2b07f40067dc33b715078d73422f01da17abdbd11e02bbdfda9a04b2260f6022bf53eadb337b3e59514936f7317d872defb891a708ee279bdca90"]}}} data_column_sidecar: description: The node has received a DataColumnSidecar (from P2P or API) that passes all gossip validations on the data_column_sidecar_{subnet_id} topic value: | @@ -196,10 +196,10 @@ get: event: fast_confirmation data: {"block": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", "slot": "1", "current_slot": "2"} inclusion_list: - description: (EIP-7805) The node has received a SignedInclusionList (from P2P or API) that passes validation rules of the `inclusion_list` topic + description: (Heze) The node has received a SignedInclusionList (from P2P or API) that passes validation rules of the `inclusion_list` topic value: | event: inclusion_list - data: {"version": "eip7805", "data": {"message": {"slot": "0", "validator_index": "0", "inclusion_list_committee_root": "0x0000000000000000000000000000000000000000000000000000000000000000", "transactions": ["0x0000000000000000000000000000000000000000000000000000000000000000"]}, "signature": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}} + data: {"version": "heze", "data": {"message": {"slot": "0", "validator_index": "0", "inclusion_list_committee_root": "0x0000000000000000000000000000000000000000000000000000000000000000", "transactions": ["0x0000000000000000000000000000000000000000000000000000000000000000"]}, "signature": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}} "400": description: "The topics supplied could not be parsed" content: diff --git a/apis/validator/duties/inclusion_list.yaml b/apis/validator/duties/inclusion_list.yaml index 86cb858b..2b6038d4 100644 --- a/apis/validator/duties/inclusion_list.yaml +++ b/apis/validator/duties/inclusion_list.yaml @@ -1,6 +1,6 @@ post: tags: - - EIP-7805 + - Heze summary: "Get inclusion list committee duties" operationId: "getInclusionListCommitteeDuties" description: @@ -55,7 +55,7 @@ post: data: type: array items: - $ref: "../../../beacon-node-oapi.yaml#/components/schemas/EIP7805.InclusionListDuty" + $ref: "../../../beacon-node-oapi.yaml#/components/schemas/Heze.InclusionListDuty" "400": description: "Invalid epoch or index" content: diff --git a/apis/validator/inclusion_list.yaml b/apis/validator/inclusion_list.yaml index 26973b63..da737c12 100644 --- a/apis/validator/inclusion_list.yaml +++ b/apis/validator/inclusion_list.yaml @@ -1,6 +1,6 @@ get: tags: - - EIP-7805 + - Heze operationId: "produceInclusionList" summary: "Produce an inclusion list" description: Requests the beacon node to produce an inclusion list. @@ -32,7 +32,7 @@ get: post: tags: - - EIP-7805 + - Heze operationId: "publishInclusionList" summary: "Publish an inclusion list" description: "Verifies given inclusion list and publishes it on appropriate gossipsub topic." @@ -52,7 +52,7 @@ post: required: [data] properties: data: - $ref: "../../beacon-node-oapi.yaml#/components/schemas/EIP7805.SignedInclusionList" + $ref: "../../beacon-node-oapi.yaml#/components/schemas/Heze.SignedInclusionList" responses: "200": description: "Successful response" diff --git a/beacon-node-oapi.yaml b/beacon-node-oapi.yaml index ea5f7853..b2690f00 100644 --- a/beacon-node-oapi.yaml +++ b/beacon-node-oapi.yaml @@ -62,8 +62,8 @@ tags: [Checkout validator flow](./validator-flow.md) to learn how to use this api. - name: Rewards description: Endpoints to query rewards and penalties for validators. - - name: EIP-7805 - description: "Endpoints required for EIP-7805: Fork-choice enforced Inclusion Lists (FOCIL)" + - name: Heze + description: "Endpoints required for Heze: Fork-choice enforced Inclusion Lists (FOCIL, EIP-7805)" paths: @@ -253,8 +253,8 @@ components: $ref: './types/duty.yaml#/PtcDuty' Altair.SyncDuty: $ref: './types/duty.yaml#/Altair/SyncDuty' - EIP7805.InclusionListDuty: - $ref: './types/duty.yaml#/EIP7805/InclusionListDuty' + Heze.InclusionListDuty: + $ref: './types/duty.yaml#/Heze/InclusionListDuty' BeaconCommitteeSelection: $ref: './types/selection.yaml#/BeaconCommitteeSelection' SyncCommitteeSelection: @@ -479,10 +479,10 @@ components: $ref: "./types/fulu/data_column_sidecar.yaml#/Fulu/DataColumnSidecars" Gloas.DataColumnSidecars: $ref: "./types/gloas/data_column_sidecar.yaml#/Gloas/DataColumnSidecars" - EIP7805.InclusionList: - $ref: './types/eip7805/inclusion_list.yaml#/EIP7805/InclusionList' - EIP7805.SignedInclusionList: - $ref: './types/eip7805/inclusion_list.yaml#/EIP7805/SignedInclusionList' + Heze.InclusionList: + $ref: './types/heze/inclusion_list.yaml#/Heze/InclusionList' + Heze.SignedInclusionList: + $ref: './types/heze/inclusion_list.yaml#/Heze/SignedInclusionList' Node: $ref: './types/fork_choice.yaml#/Node' ExtraData: diff --git a/types/duty.yaml b/types/duty.yaml index 0c04296f..5104157c 100644 --- a/types/duty.yaml +++ b/types/duty.yaml @@ -66,7 +66,7 @@ PtcDuty: $ref: "./primitive.yaml#/Uint64" description: "The slot at which the validator must perform PTC duties." -EIP7805: +Heze: InclusionListDuty: type: object required: [pubkey, validator_index, slot, inclusion_list_committee_root] diff --git a/types/eip7805/inclusion_list.yaml b/types/heze/inclusion_list.yaml similarity index 70% rename from types/eip7805/inclusion_list.yaml rename to types/heze/inclusion_list.yaml index 0d816df3..914cdd87 100644 --- a/types/eip7805/inclusion_list.yaml +++ b/types/heze/inclusion_list.yaml @@ -1,7 +1,7 @@ -EIP7805: +Heze: InclusionList: type: object - description: "The [`InclusionList`](https://github.com/ethereum/consensus-specs/blob/v1.6.0-alpha.5/specs/_features/eip7805/beacon-chain.md#inclusionlist) object from the CL spec." + description: "The [`InclusionList`](https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.11/specs/heze/beacon-chain.md#inclusionlist) object from the CL Heze spec." required: [slot, validator_index, inclusion_list_committee_root, transactions] properties: slot: @@ -15,10 +15,10 @@ EIP7805: SignedInclusionList: type: object - description: "The [`SignedInclusionList`](https://github.com/ethereum/consensus-specs/blob/v1.6.0-alpha.5/specs/_features/eip7805/beacon-chain.md#signedinclusionlist) object from the CL spec." + description: "The [`SignedInclusionList`](https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.11/specs/heze/beacon-chain.md#signedinclusionlist) object from the CL Heze spec." required: [message, signature] properties: message: - $ref: "#/EIP7805/InclusionList" + $ref: "#/Heze/InclusionList" signature: $ref: "../primitive.yaml#/Signature" diff --git a/wordlist.txt b/wordlist.txt index 3cb8fc6e..b9d020d5 100644 --- a/wordlist.txt +++ b/wordlist.txt @@ -48,4 +48,4 @@ stateful RLP EIPs FOCIL -eip7805 +heze From 24a7a6519c3c96fffd9889e1e3231baba0a008e4 Mon Sep 17 00:00:00 2001 From: NC <17676176+ensi321@users.noreply.github.com> Date: Mon, 22 Jun 2026 15:08:06 -0700 Subject: [PATCH 21/22] Add heze to ConsensusVersion enum publishInclusionList accepts Eth-Consensus-Version header and event stream examples use "heze" as version string. Co-Authored-By: Claude Opus 4.7 (1M context) --- beacon-node-oapi.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/beacon-node-oapi.yaml b/beacon-node-oapi.yaml index b2690f00..c3cfa98f 100644 --- a/beacon-node-oapi.yaml +++ b/beacon-node-oapi.yaml @@ -361,7 +361,7 @@ components: $ref: './types/bellatrix/transactions.yaml#/Bellatrix/Transactions' ConsensusVersion: type: string - enum: [phase0, altair, bellatrix, capella, deneb, electra, fulu, gloas] + enum: [phase0, altair, bellatrix, capella, deneb, electra, fulu, gloas, heze] example: "gloas" SignedValidatorRegistration: $ref: './types/registration.yaml#/SignedValidatorRegistration' From 274b87a12f65576967bfcadeb773f0e907f1d6bf Mon Sep 17 00:00:00 2001 From: NC <17676176+ensi321@users.noreply.github.com> Date: Mon, 22 Jun 2026 15:18:05 -0700 Subject: [PATCH 22/22] Drop (Heze) prefix from inclusion_list event description Other events don't tag fork in description; the version field in the payload already conveys this. Co-Authored-By: Claude Opus 4.7 (1M context) --- 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 20808fc1..521f6580 100644 --- a/apis/eventstream/index.yaml +++ b/apis/eventstream/index.yaml @@ -196,7 +196,7 @@ get: event: fast_confirmation data: {"block": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", "slot": "1", "current_slot": "2"} inclusion_list: - description: (Heze) The node has received a SignedInclusionList (from P2P or API) that passes validation rules of the `inclusion_list` topic + description: The node has received a SignedInclusionList (from P2P or API) that passes validation rules of the `inclusion_list` topic value: | event: inclusion_list data: {"version": "heze", "data": {"message": {"slot": "0", "validator_index": "0", "inclusion_list_committee_root": "0x0000000000000000000000000000000000000000000000000000000000000000", "transactions": ["0x0000000000000000000000000000000000000000000000000000000000000000"]}, "signature": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}}