From 5913e4134a04f976b0a398ac2fd0600178fcbe2b Mon Sep 17 00:00:00 2001 From: Daniel Liu Date: Tue, 6 Jan 2026 09:41:18 +0800 Subject: [PATCH] core/txpool/legacypool: handle genesis state missing #28171 --- core/txpool/legacypool/legacypool.go | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/core/txpool/legacypool/legacypool.go b/core/txpool/legacypool/legacypool.go index 53d7368f84a6..045e45fe928d 100644 --- a/core/txpool/legacypool/legacypool.go +++ b/core/txpool/legacypool/legacypool.go @@ -310,7 +310,20 @@ func (pool *LegacyPool) Filter(tx *types.Transaction) bool { func (pool *LegacyPool) Init(gasTip *big.Int, head *types.Header) error { // Set the basic pool parameters pool.gasTip.Store(gasTip) - pool.reset(nil, head) + + // Initialize the state with head block, or fallback to empty one in + // case the head state is not available(might occur when node is not + // fully synced). + statedb, err := pool.chain.StateAt(head.Root) + if err != nil { + statedb, err = pool.chain.StateAt(types.EmptyRootHash) + } + if err != nil { + return err + } + pool.currentHead.Store(head) + pool.currentState = statedb + pool.pendingNonces = newNoncer(statedb) // Start the reorg loop early, so it can handle requests generated during // journal loading.