From b266cc2482fa3c04178ecf2321866087eb0a7697 Mon Sep 17 00:00:00 2001 From: jsvisa Date: Tue, 28 Oct 2025 08:30:05 +0000 Subject: [PATCH] eth/syncer: advance safe and finalized block Signed-off-by: jsvisa --- eth/syncer/syncer.go | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/eth/syncer/syncer.go b/eth/syncer/syncer.go index 6b33ec54ba..02dc224d06 100644 --- a/eth/syncer/syncer.go +++ b/eth/syncer/syncer.go @@ -22,6 +22,7 @@ import ( "sync" "time" + beaconparams "github.com/ethereum/go-ethereum/beacon/params" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/eth" @@ -129,7 +130,11 @@ func (s *Syncer) run() { break } if resync { - req.errc <- s.backend.Downloader().BeaconDevSync(ethconfig.FullSync, target) + err := s.backend.Downloader().BeaconDevSync(ethconfig.FullSync, target) + if err == nil { + s.advanceDevFinality() + } + req.errc <- err } case <-ticker.C: @@ -196,3 +201,33 @@ func NewAPI(s *Syncer) *API { func (api *API) Sync(target common.Hash) error { return api.s.Sync(target) } + +// advanceDevFinality synthesizes safe/finalized heads for the dev beacon-sync +func (s *Syncer) advanceDevFinality() { + bc := s.backend.BlockChain() + + head := bc.CurrentBlock() + if head == nil { + return + } + + safeNumber := head.Number.Uint64() - beaconparams.EpochLength + safeHeader := bc.GetHeaderByNumber(safeNumber) + if safeHeader == nil { + log.Warn("Dev sync could not resolve safe header", "number", safeNumber) + return + } + if safe := bc.CurrentSafeBlock(); safe == nil || safe.Hash() != safeHeader.Hash() { + bc.SetSafe(safeHeader) + } + + finalNumber := safeNumber - beaconparams.EpochLength + finalHeader := bc.GetHeaderByNumber(finalNumber) + if finalHeader == nil { + log.Warn("Dev sync could not resolve finalized header", "number", finalNumber) + return + } + if finalized := bc.CurrentFinalBlock(); finalized == nil || finalized.Hash() != finalHeader.Hash() { + bc.SetFinalized(finalHeader) + } +}