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, 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"