From 12eddb561ce8c1b85c9f4e777687078b03e20f1b Mon Sep 17 00:00:00 2001 From: Eitan Seri- Levi Date: Tue, 24 Feb 2026 22:49:57 -0800 Subject: [PATCH] fix new payload notifier --- beacon_node/beacon_chain/src/execution_payload.rs | 6 +++--- .../payload_envelope_verification/payload_notifier.rs | 10 +++++++++- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/beacon_node/beacon_chain/src/execution_payload.rs b/beacon_node/beacon_chain/src/execution_payload.rs index cf6c5d83b4..db221712d4 100644 --- a/beacon_node/beacon_chain/src/execution_payload.rs +++ b/beacon_node/beacon_chain/src/execution_payload.rs @@ -119,6 +119,7 @@ impl PayloadNotifier { &self.chain, self.block.message().tree_hash_root(), self.block.message().slot(), + self.block.message().parent_root(), self.block.message().try_into()?, ) .await @@ -139,6 +140,7 @@ pub async fn notify_new_payload( chain: &Arc>, beacon_block_root: Hash256, slot: Slot, + parent_beacon_block_root: Hash256, new_payload_request: NewPayloadRequest<'_, T::EthSpec>, ) -> Result { let execution_layer = chain @@ -189,11 +191,9 @@ pub async fn notify_new_payload( { // This block has not yet been applied to fork choice, so the latest block that was // imported to fork choice was the parent. - let latest_root = new_payload_request.parent_beacon_block_root()?; - chain .process_invalid_execution_payload(&InvalidationOperation::InvalidateMany { - head_block_root: *latest_root, + head_block_root: parent_beacon_block_root, always_invalidate_head: false, latest_valid_ancestor: latest_valid_hash, }) diff --git a/beacon_node/beacon_chain/src/payload_envelope_verification/payload_notifier.rs b/beacon_node/beacon_chain/src/payload_envelope_verification/payload_notifier.rs index 592d46022a..f3e4f6990b 100644 --- a/beacon_node/beacon_chain/src/payload_envelope_verification/payload_notifier.rs +++ b/beacon_node/beacon_chain/src/payload_envelope_verification/payload_notifier.rs @@ -62,8 +62,16 @@ impl PayloadNotifier { Ok(precomputed_status) } else { let block_root = self.envelope.message.beacon_block_root; + let parent_root = self.block.message().parent_root(); let request = Self::build_new_payload_request(&self.envelope, &self.block)?; - notify_new_payload(&self.chain, block_root, self.envelope.slot(), request).await + notify_new_payload( + &self.chain, + block_root, + self.envelope.slot(), + parent_root, + request, + ) + .await } }