diff --git a/beacon_node/beacon_chain/src/block_verification.rs b/beacon_node/beacon_chain/src/block_verification.rs index 197ce03e314..f5483abef58 100644 --- a/beacon_node/beacon_chain/src/block_verification.rs +++ b/beacon_node/beacon_chain/src/block_verification.rs @@ -1401,9 +1401,13 @@ fn check_block_against_finalized_slot( block_root: Hash256, chain: &BeaconChain, ) -> Result<(), BlockError> { + // The finalized checkpoint is being read from fork choice, rather than the cached head. + // + // Fork choice has the most up-to-date view of finalization and there's no point importing a + // block which conflicts with the fork-choice view of finalization. let finalized_slot = chain .canonical_head - .cached_head() + .fork_choice_read_lock() .finalized_checkpoint() .epoch .start_slot(T::EthSpec::slots_per_epoch());