From a0c5701e369c16a88ce623bc13a46c11c83aa465 Mon Sep 17 00:00:00 2001 From: Pawan Dhananjay Date: Wed, 22 Dec 2021 08:15:37 +0000 Subject: [PATCH] Only import blocks with valid execution payloads (#2869) ## Issue Addressed N/A ## Proposed Changes We are currently treating errors from the EL on `engine_executePayload` as `PayloadVerificationStatus::NotVerified`. This adds the block as a candidate head block in fork choice even if the EL explicitly rejected the block as invalid. `PayloadVerificationStatus::NotVerified` should be only returned when the EL explicitly returns "syncing" imo. This PR propagates an error instead of returning `NotVerified` on EL all EL errors. --- beacon_node/beacon_chain/src/execution_payload.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/beacon_node/beacon_chain/src/execution_payload.rs b/beacon_node/beacon_chain/src/execution_payload.rs index 5896dbf3d8..ed7095122a 100644 --- a/beacon_node/beacon_chain/src/execution_payload.rs +++ b/beacon_node/beacon_chain/src/execution_payload.rs @@ -65,7 +65,7 @@ pub fn execute_payload( } ExecutePayloadResponseStatus::Syncing => Ok(PayloadVerificationStatus::NotVerified), }, - Err(_) => Ok(PayloadVerificationStatus::NotVerified), + Err(_) => Err(ExecutionPayloadError::RejectedByExecutionEngine.into()), } }