@@ -244,16 +244,15 @@ type BlockChain struct {
244244 statedb * state.CachingDB // State database to reuse between imports (contains state cache)
245245 txIndexer * txIndexer // Transaction indexer, might be nil if not enabled
246246
247- hc * HeaderChain
248- rmLogsFeed event.Feed
249- chainFeed event.Feed
250- chainHeadFeed event.Feed
251- logsFeed event.Feed
252- blockProcFeed event.Feed
253- finalizedHeaderFeed event.Feed
254- blockProcCounter int32
255- scope event.SubscriptionScope
256- genesisBlock * types.Block
247+ hc * HeaderChain
248+ rmLogsFeed event.Feed
249+ chainFeed event.Feed
250+ chainHeadFeed event.Feed
251+ logsFeed event.Feed
252+ blockProcFeed event.Feed
253+ blockProcCounter int32
254+ scope event.SubscriptionScope
255+ genesisBlock * types.Block
257256
258257 // This mutex synchronizes chain write operations.
259258 // Readers don't need to take it, they can just read the database.
@@ -525,17 +524,6 @@ func (bc *BlockChain) empty() bool {
525524 return true
526525}
527526
528- // GetFinalizedNumber returns the highest finalized number before the specific block.
529- func (bc * BlockChain ) GetFinalizedNumber (header * types.Header ) uint64 {
530- if p , ok := bc .engine .(consensus.PoS ); ok {
531- if finalizedHeader := p .GetFinalizedHeader (bc , header ); finalizedHeader != nil {
532- return finalizedHeader .Number .Uint64 ()
533- }
534- }
535-
536- return 0
537- }
538-
539527// loadLastState loads the last known chain state from the database. This method
540528// assumes that the chain manager mutex is held.
541529func (bc * BlockChain ) loadLastState () error {
@@ -611,7 +599,8 @@ func (bc *BlockChain) loadLastState() error {
611599
612600 // Issue a status log for the user
613601 var (
614- currentSnapBlock = bc .CurrentSnapBlock ()
602+ currentSnapBlock = bc .CurrentSnapBlock ()
603+ currentFinalBlock = bc .CurrentFinalBlock ()
615604
616605 headerTd = bc .GetTd (headHeader .Hash (), headHeader .Number .Uint64 ())
617606 blockTd = bc .GetTd (headBlock .Hash (), headBlock .NumberU64 ())
@@ -624,14 +613,9 @@ func (bc *BlockChain) loadLastState() error {
624613 snapTd := bc .GetTd (currentSnapBlock .Hash (), currentSnapBlock .Number .Uint64 ())
625614 log .Info ("Loaded most recent local snap block" , "number" , currentSnapBlock .Number , "hash" , currentSnapBlock .Hash (), "td" , snapTd , "age" , common .PrettyAge (time .Unix (int64 (currentSnapBlock .Time ), 0 )))
626615 }
627- if p , ok := bc .engine .(consensus.PoS ); ok {
628- if currentFinalizedHeader := p .GetFinalizedHeader (bc , headHeader ); currentFinalizedHeader != nil {
629- bc .currentFinalBlock .Store (currentFinalizedHeader )
630- if currentFinalizedBlock := bc .GetBlockByHash (currentFinalizedHeader .Hash ()); currentFinalizedBlock != nil {
631- finalTd := bc .GetTd (currentFinalizedBlock .Hash (), currentFinalizedBlock .NumberU64 ())
632- log .Info ("Loaded most recent local finalized block" , "number" , currentFinalizedBlock .Number (), "hash" , currentFinalizedBlock .Hash (), "root" , currentFinalizedBlock .Root (), "td" , finalTd , "age" , common .PrettyAge (time .Unix (int64 (currentFinalizedBlock .Time ()), 0 )))
633- }
634- }
616+ if currentFinalBlock != nil {
617+ finalTd := bc .GetTd (currentFinalBlock .Hash (), currentFinalBlock .Number .Uint64 ())
618+ log .Info ("Loaded most recent local finalized block" , "number" , currentFinalBlock .Number , "hash" , currentFinalBlock .Hash (), "td" , finalTd , "age" , common .PrettyAge (time .Unix (int64 (currentFinalBlock .Time ), 0 )))
635619 }
636620 if pivot := rawdb .ReadLastPivotNumber (bc .db ); pivot != nil {
637621 log .Info ("Loaded last snap-sync pivot marker" , "number" , * pivot )
@@ -1716,24 +1700,13 @@ func (bc *BlockChain) writeBlockAndSetHead(block *types.Block, receipts []*types
17161700 if len (logs ) > 0 {
17171701 bc .logsFeed .Send (logs )
17181702 }
1719-
1720- var finalizedHeader * types.Header
1721- if p , ok := bc .Engine ().(consensus.PoS ); ok {
1722- if finalizedHeader = p .GetFinalizedHeader (bc , block .Header ()); finalizedHeader != nil {
1723- bc .SetFinalized (finalizedHeader )
1724- }
1725- }
1726-
17271703 // In theory, we should fire a ChainHeadEvent when we inject
17281704 // a canonical block, but sometimes we can insert a batch of
17291705 // canonical blocks. Avoid firing too many ChainHeadEvents,
17301706 // we will fire an accumulated ChainHeadEvent and disable fire
17311707 // event here.
17321708 if emitHeadEvent {
17331709 bc .chainHeadFeed .Send (ChainHeadEvent {Header : block .Header ()})
1734- if finalizedHeader != nil {
1735- bc .finalizedHeaderFeed .Send (FinalizedHeaderEvent {finalizedHeader })
1736- }
17371710 }
17381711 }
17391712 return status , nil
@@ -1827,11 +1800,6 @@ func (bc *BlockChain) insertChain(chain types.Blocks, setHead bool, makeWitness
18271800 defer func () {
18281801 if lastCanon != nil && bc .CurrentBlock ().Hash () == lastCanon .Hash () {
18291802 bc .chainHeadFeed .Send (ChainHeadEvent {Header : lastCanon .Header ()})
1830- if p , ok := bc .Engine ().(consensus.PoS ); ok {
1831- if finalizedHeader := p .GetFinalizedHeader (bc , lastCanon .Header ()); finalizedHeader != nil {
1832- bc .finalizedHeaderFeed .Send (FinalizedHeaderEvent {finalizedHeader })
1833- }
1834- }
18351803 }
18361804 }()
18371805 // Start the parallel header verifier
0 commit comments