From 081efc7940f4eeac0d3dc9a1ec8f555db80b96e3 Mon Sep 17 00:00:00 2001 From: Eitan Seri- Levi Date: Mon, 9 Feb 2026 20:42:47 -0800 Subject: [PATCH] Fix sig domain --- validator_client/lighthouse_validator_store/src/lib.rs | 6 +++++- validator_client/signing_method/src/web3signer.rs | 1 + validator_client/validator_services/src/block_service.rs | 7 +++++-- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/validator_client/lighthouse_validator_store/src/lib.rs b/validator_client/lighthouse_validator_store/src/lib.rs index c3c61751d0..5820dd89e6 100644 --- a/validator_client/lighthouse_validator_store/src/lib.rs +++ b/validator_client/lighthouse_validator_store/src/lib.rs @@ -1250,7 +1250,11 @@ impl ValidatorStore for LighthouseValidatorS validator_pubkey: PublicKeyBytes, envelope: ExecutionPayloadEnvelope, ) -> Result, Error> { - let domain_hash = self.spec.get_builder_domain(); + let signing_context = self.signing_context( + Domain::BeaconBuilder, + envelope.slot.epoch(E::slots_per_epoch()), + ); + let domain_hash = signing_context.domain_hash(&self.spec); let signing_root = envelope.signing_root(domain_hash); // Execution payload envelope signing is not slashable, bypass doppelganger protection. diff --git a/validator_client/signing_method/src/web3signer.rs b/validator_client/signing_method/src/web3signer.rs index 7bf953aaeb..e6fc8f3ba2 100644 --- a/validator_client/signing_method/src/web3signer.rs +++ b/validator_client/signing_method/src/web3signer.rs @@ -19,6 +19,7 @@ pub enum MessageType { SyncCommitteeSelectionProof, SyncCommitteeContributionAndProof, ValidatorRegistration, + // TODO(gloas) verify w/ web3signer specs ExecutionPayloadEnvelope, } diff --git a/validator_client/validator_services/src/block_service.rs b/validator_client/validator_services/src/block_service.rs index 649f0e09cc..ec6391b7d4 100644 --- a/validator_client/validator_services/src/block_service.rs +++ b/validator_client/validator_services/src/block_service.rs @@ -5,7 +5,6 @@ use eth2::{BeaconNodeHttpClient, StatusCode}; use graffiti_file::{GraffitiFile, determine_graffiti}; use logging::crit; use slot_clock::SlotClock; -use types::consts::gloas::BUILDER_INDEX_SELF_BUILD; use std::fmt::Debug; use std::future::Future; use std::ops::Deref; @@ -14,6 +13,7 @@ use std::time::Duration; use task_executor::TaskExecutor; use tokio::sync::mpsc; use tracing::{Instrument, debug, error, info, info_span, instrument, trace, warn}; +use types::consts::gloas::BUILDER_INDEX_SELF_BUILD; use types::{BlockType, ChainSpec, EthSpec, Graffiti, Slot}; use validator_store::{Error as ValidatorStoreError, SignedBlock, UnsignedBlock, ValidatorStore}; @@ -650,7 +650,10 @@ impl BlockService { let envelope = proposer_fallback .request_proposers_last(|beacon_node| async move { beacon_node - .get_validator_execution_payload_envelope::(slot, BUILDER_INDEX_SELF_BUILD) + .get_validator_execution_payload_envelope::( + slot, + BUILDER_INDEX_SELF_BUILD, + ) .await .map(|response| response.data) .map_err(|e| {