From 928495817f7122b1c97703ed8fce0881381efe4d Mon Sep 17 00:00:00 2001 From: Michael Sproul Date: Mon, 18 May 2026 16:14:13 +1000 Subject: [PATCH 1/5] Add instrumentation to get_expected_withdrawals --- beacon_node/beacon_chain/src/beacon_chain.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/beacon_node/beacon_chain/src/beacon_chain.rs b/beacon_node/beacon_chain/src/beacon_chain.rs index af8cd477d6c..04cf6c2ee9e 100644 --- a/beacon_node/beacon_chain/src/beacon_chain.rs +++ b/beacon_node/beacon_chain/src/beacon_chain.rs @@ -5112,6 +5112,11 @@ impl BeaconChain { ) } + #[instrument( + level = "debug", + skip_all, + fields(%proposal_slot, ?forkchoice_update_params.head_root) + )] pub fn get_expected_withdrawals( &self, forkchoice_update_params: &ForkchoiceUpdateParameters, From ae2c5bfa4d4ecea96557e13731aad8a0aa32cbf7 Mon Sep 17 00:00:00 2001 From: Michael Sproul Date: Mon, 18 May 2026 16:54:04 +1000 Subject: [PATCH 2/5] Remove proposer prep from register_validator handler --- beacon_node/http_api/src/validator/mod.rs | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/beacon_node/http_api/src/validator/mod.rs b/beacon_node/http_api/src/validator/mod.rs index 77df94bc363..1f624e4c3c6 100644 --- a/beacon_node/http_api/src/validator/mod.rs +++ b/beacon_node/http_api/src/validator/mod.rs @@ -666,6 +666,8 @@ pub fn post_validator_register_validator( .unzip(); // Update the prepare beacon proposer cache based on this request. + // This data will get picked up by the next scheduled run of + // `prepare_beacon_proposer`. execution_layer .update_proposer_preparation( current_epoch, @@ -673,19 +675,6 @@ pub fn post_validator_register_validator( ) .await; - // Call prepare beacon proposer blocking with the latest update in order to make - // sure we have a local payload to fall back to in the event of the blinded block - // flow failing. - chain - .prepare_beacon_proposer(current_slot) - .await - .map_err(|e| { - warp_utils::reject::custom_bad_request(format!( - "error updating proposer preparations: {:?}", - e - )) - })?; - info!( count = filtered_registration_data.len(), "Forwarding register validator request to connected builder" From 4947710b87c88a09a62c14a27d36945a59663751 Mon Sep 17 00:00:00 2001 From: Michael Sproul Date: Mon, 18 May 2026 17:02:57 +1000 Subject: [PATCH 3/5] Instrument prepare_beacon_proposer --- beacon_node/beacon_chain/src/beacon_chain.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/beacon_node/beacon_chain/src/beacon_chain.rs b/beacon_node/beacon_chain/src/beacon_chain.rs index 04cf6c2ee9e..2cc8f8fde27 100644 --- a/beacon_node/beacon_chain/src/beacon_chain.rs +++ b/beacon_node/beacon_chain/src/beacon_chain.rs @@ -6356,6 +6356,7 @@ impl BeaconChain { /// /// Return `Ok(Some(head_block_root))` if this node prepared to propose at the next slot on /// top of `head_block_root`. + #[instrument(level = "debug", skip_all, fields(%current_slot))] pub async fn prepare_beacon_proposer( self: &Arc, current_slot: Slot, From e2cad974ff7efbd9ff87e6b7bc59ede4363f57b9 Mon Sep 17 00:00:00 2001 From: Michael Sproul Date: Mon, 18 May 2026 17:08:18 +1000 Subject: [PATCH 4/5] Add comment about fee recipient in ProposerKey --- beacon_node/execution_layer/src/lib.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/beacon_node/execution_layer/src/lib.rs b/beacon_node/execution_layer/src/lib.rs index b2dabb7c018..897c4fd36e9 100644 --- a/beacon_node/execution_layer/src/lib.rs +++ b/beacon_node/execution_layer/src/lib.rs @@ -401,6 +401,10 @@ impl ProposerPreparationDataEntry { } } +// NOTE: This key should arguably include the `suggested_fee_recipient`, as it is part of the +// `Proposer::payload_attributes` value that is cached based on it. However, in some cases where +// this key is constructed the fee recipient is not straight-forward to determine. Therefore we +// accept the risk of loading a stale fee recipient within the timespan of a single slot. #[derive(Hash, PartialEq, Eq)] pub struct ProposerKey { slot: Slot, From b170e237740a26d6b1e50f6106cedb2b59d8d9eb Mon Sep 17 00:00:00 2001 From: Tan Chee Keong Date: Tue, 19 May 2026 16:40:40 +0800 Subject: [PATCH 5/5] remove tracing instrument --- beacon_node/beacon_chain/src/beacon_chain.rs | 6 ------ 1 file changed, 6 deletions(-) diff --git a/beacon_node/beacon_chain/src/beacon_chain.rs b/beacon_node/beacon_chain/src/beacon_chain.rs index 2cc8f8fde27..af8cd477d6c 100644 --- a/beacon_node/beacon_chain/src/beacon_chain.rs +++ b/beacon_node/beacon_chain/src/beacon_chain.rs @@ -5112,11 +5112,6 @@ impl BeaconChain { ) } - #[instrument( - level = "debug", - skip_all, - fields(%proposal_slot, ?forkchoice_update_params.head_root) - )] pub fn get_expected_withdrawals( &self, forkchoice_update_params: &ForkchoiceUpdateParameters, @@ -6356,7 +6351,6 @@ impl BeaconChain { /// /// Return `Ok(Some(head_block_root))` if this node prepared to propose at the next slot on /// top of `head_block_root`. - #[instrument(level = "debug", skip_all, fields(%current_slot))] pub async fn prepare_beacon_proposer( self: &Arc, current_slot: Slot,