From 06ee85a0c58d3d4b725ad5984d7ae8dc8fd23fed Mon Sep 17 00:00:00 2001 From: Eitan Seri- Levi Date: Wed, 25 Feb 2026 00:01:24 -0800 Subject: [PATCH] small fix --- consensus/fork_choice/src/fork_choice.rs | 12 +++++++++++- consensus/proto_array/src/proto_array.rs | 7 +++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/consensus/fork_choice/src/fork_choice.rs b/consensus/fork_choice/src/fork_choice.rs index 10659b9b3a..8bd92a5eb2 100644 --- a/consensus/fork_choice/src/fork_choice.rs +++ b/consensus/fork_choice/src/fork_choice.rs @@ -894,8 +894,18 @@ where } } } + } else if let Ok(bid) = block.body().signed_execution_payload_bid() { + // Gloas (ePBS): the block carries a bid instead of an inline payload. + // The execution payload will arrive later via an envelope, so mark as + // optimistic using the committed block hash from the bid. + let block_hash = bid.message.block_hash; + if block_hash == ExecutionBlockHash::zero() { + ExecutionStatus::irrelevant() + } else { + ExecutionStatus::Optimistic(block_hash) + } } else { - // There is no payload to verify. + // There is no payload to verify (pre-merge). ExecutionStatus::irrelevant() }; diff --git a/consensus/proto_array/src/proto_array.rs b/consensus/proto_array/src/proto_array.rs index 6527d5647c..74a5d7856c 100644 --- a/consensus/proto_array/src/proto_array.rs +++ b/consensus/proto_array/src/proto_array.rs @@ -398,6 +398,13 @@ impl ProtoArray { node.payload_status = PAYLOAD_STATUS_FULL; } + // Mark the execution status as valid now that the payload has been verified. + // This is critical for Gloas blocks which start as Optimistic(block_hash). + if let ExecutionStatus::Optimistic(block_hash) = node.execution_status { + node.execution_status = ExecutionStatus::Valid(block_hash); + self.propagate_execution_payload_validation_by_index(index)?; + } + Ok(()) }