From c6488cf917c7cd722063374063a1dc0f8949d227 Mon Sep 17 00:00:00 2001 From: Jacek Sieka Date: Wed, 20 Sep 2023 15:31:26 +0200 Subject: [PATCH 1/2] blocksv3: add consensus value In order to compare blocks coming from two sources, a validator client must consider both consensus and execution profit - without consensus reward information, the VC must fall back on unreliable heuristics that can be biased towards inefficient consensus packing, specially when execution payloads are the same which they are likely to be if the block producer is using the same mev relay for both beacon nodes. The consensus computation is currently not a necessary part of block construction but given that blocks are constructed over a state, the information necessary to compute the is already present at block construction time. This PR suggests a mandatory value to make validator client multiplexing easier at the expense of beacon node complexity - if instead it is optional, we are back to where we started where blocks cannot be compared across implementations. The value has to be trusted, ie the BN could be report an inaccurate value but this is not a new risk. --- apis/validator/block.v3.yaml | 5 +++++ beacon-node-oapi.yaml | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/apis/validator/block.v3.yaml b/apis/validator/block.v3.yaml index 52a786a8..7f211025 100644 --- a/apis/validator/block.v3.yaml +++ b/apis/validator/block.v3.yaml @@ -53,6 +53,8 @@ get: $ref: '../../beacon-node-oapi.yaml#/components/headers/Eth-Execution-Payload-Blinded' Eth-Execution-Payload-Value: $ref: '../../beacon-node-oapi.yaml#/components/headers/Eth-Execution-Payload-Value' + Eth-Consensus-Payload-Value: + $ref: '../../beacon-node-oapi.yaml#/components/headers/Eth-Consensus-Payload-Value' content: application/json: schema: @@ -69,6 +71,9 @@ get: execution_payload_value: type: string example: "12345" + consensus_payload_value: + type: string + example: "12345" data: oneOf: - $ref: '../../beacon-node-oapi.yaml#/components/schemas/BeaconBlock' diff --git a/beacon-node-oapi.yaml b/beacon-node-oapi.yaml index 03c36c00..1765eef9 100644 --- a/beacon-node-oapi.yaml +++ b/beacon-node-oapi.yaml @@ -434,3 +434,8 @@ components: required: true schema: $ref: './types/primitive.yaml#/Wei' + Eth-Consensus-Payload-Value: + description: Required in response so client can determine relative value of consensus payloads. + required: true + schema: + $ref: './types/primitive.yaml#/Wei' From bcaa08c0a1831ff2fb22e957c02efabf212f76ca Mon Sep 17 00:00:00 2001 From: Jacek Sieka Date: Thu, 28 Sep 2023 16:25:40 +0200 Subject: [PATCH 2/2] payload->block --- apis/validator/block.v3.yaml | 6 +++--- beacon-node-oapi.yaml | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/apis/validator/block.v3.yaml b/apis/validator/block.v3.yaml index 7f211025..c4cfc9c6 100644 --- a/apis/validator/block.v3.yaml +++ b/apis/validator/block.v3.yaml @@ -53,8 +53,8 @@ get: $ref: '../../beacon-node-oapi.yaml#/components/headers/Eth-Execution-Payload-Blinded' Eth-Execution-Payload-Value: $ref: '../../beacon-node-oapi.yaml#/components/headers/Eth-Execution-Payload-Value' - Eth-Consensus-Payload-Value: - $ref: '../../beacon-node-oapi.yaml#/components/headers/Eth-Consensus-Payload-Value' + Eth-Consensus-Block-Value: + $ref: '../../beacon-node-oapi.yaml#/components/headers/Eth-Consensus-Block-Value' content: application/json: schema: @@ -71,7 +71,7 @@ get: execution_payload_value: type: string example: "12345" - consensus_payload_value: + consensus_block_value: type: string example: "12345" data: diff --git a/beacon-node-oapi.yaml b/beacon-node-oapi.yaml index 1765eef9..5e12bfdc 100644 --- a/beacon-node-oapi.yaml +++ b/beacon-node-oapi.yaml @@ -434,8 +434,8 @@ components: required: true schema: $ref: './types/primitive.yaml#/Wei' - Eth-Consensus-Payload-Value: - description: Required in response so client can determine relative value of consensus payloads. + Eth-Consensus-Block-Value: + description: Required in response so client can determine relative value of consensus blocks. required: true schema: $ref: './types/primitive.yaml#/Wei'