From 15e2b57d54acfc884fd6dec540e2d8362a93359f Mon Sep 17 00:00:00 2001 From: ucwong Date: Thu, 1 Jan 2026 07:00:10 +0800 Subject: [PATCH] cleanup finalized block on rewind in setHeadBeyondRoot --- core/blockchain.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/core/blockchain.go b/core/blockchain.go index e83dbe1eab..925ec3fa92 100644 --- a/core/blockchain.go +++ b/core/blockchain.go @@ -856,11 +856,12 @@ func (bc *BlockChain) setHeadBeyondRoot(head uint64, time uint64, root common.Ha bc.txLookupCache.Purge() bc.futureBlocks.Purge() // Clear safe block, finalized block if needed - if safe := bc.CurrentSafeBlock(); safe != nil && head < safe.NumberU64() { + headBlock := bc.CurrentBlock() + if safe := bc.CurrentSafeBlock(); safe != nil && headBlock.NumberU64() < safe.NumberU64() { log.Warn("SetHead invalidated safe block") bc.SetSafe(nil) } - if finalized := bc.CurrentFinalizedBlock(); finalized != nil && head < finalized.NumberU64() { + if finalized := bc.CurrentFinalizedBlock(); finalized != nil && headBlock.NumberU64() < finalized.NumberU64() { log.Error("SetHead invalidated finalized block") bc.SetFinalized(nil) }