@@ -944,7 +944,8 @@ func (bc *BlockChain) rewindPathHead(head *types.Header, root common.Hash) (*typ
944944 }
945945 // Recover if the target state if it's not available yet.
946946 if ! bc .HasState (head .Root ) {
947- if err := bc .triedb .Recover (head .Root ); err != nil {
947+ curPeriod := head .Number .Uint64 () / state .NumBlocksPerPeriod // TODO(weiihann): deal with this later
948+ if err := bc .triedb .Recover (head .Root , curPeriod ); err != nil {
948949 log .Error ("Failed to rollback state, resetting to genesis" , "err" , err )
949950 return bc .genesisBlock .Header (), rootNumber
950951 }
@@ -2324,7 +2325,8 @@ func (bc *BlockChain) insertSideChain(block *types.Block, it *insertIterator, ma
23242325 parent := it .previous ()
23252326 for parent != nil && ! bc .HasState (parent .Root ) {
23262327 if bc .stateRecoverable (parent .Root ) {
2327- if err := bc .triedb .Recover (parent .Root ); err != nil {
2328+ curPeriod := parent .Number .Uint64 () / state .NumBlocksPerPeriod // TODO(weiihann): deal with this later
2329+ if err := bc .triedb .Recover (parent .Root , curPeriod ); err != nil {
23282330 return nil , 0 , err
23292331 }
23302332 break
@@ -2386,7 +2388,8 @@ func (bc *BlockChain) recoverAncestors(block *types.Block, makeWitness bool) (co
23862388 )
23872389 for parent != nil && ! bc .HasState (parent .Root ()) {
23882390 if bc .stateRecoverable (parent .Root ()) {
2389- if err := bc .triedb .Recover (parent .Root ()); err != nil {
2391+ curPeriod := parent .NumberU64 () / state .NumBlocksPerPeriod // TODO(weiihann): deal with this later
2392+ if err := bc .triedb .Recover (parent .Root (), curPeriod ); err != nil {
23902393 return common.Hash {}, err
23912394 }
23922395 break
0 commit comments