@@ -166,7 +166,7 @@ func (result *proofResult) forEach(callback func(key []byte, val []byte) error)
166166//
167167// The proof result will be returned if the range proving is finished, otherwise
168168// the error will be returned to abort the entire procedure.
169- func (dl * diskLayer ) proveRange (ctx * generatorContext , root common.Hash , prefix []byte , kind string , origin []byte , max int , valueConvertFn func ([]byte ) ([]byte , error )) (* proofResult , error ) {
169+ func (dl * diskLayer ) proveRange (ctx * generatorContext , owner common. Hash , root common.Hash , prefix []byte , kind string , origin []byte , max int , valueConvertFn func ([]byte ) ([]byte , error )) (* proofResult , error ) {
170170 var (
171171 keys [][]byte
172172 vals [][]byte
@@ -234,7 +234,7 @@ func (dl *diskLayer) proveRange(ctx *generatorContext, root common.Hash, prefix
234234
235235 // The snap state is exhausted, pass the entire key/val set for verification
236236 if origin == nil && ! diskMore {
237- stackTr := trie .NewStackTrie (nil )
237+ stackTr := trie .NewStackTrieWithOwner (nil , owner )
238238 for i , key := range keys {
239239 stackTr .TryUpdate (key , vals [i ])
240240 }
@@ -248,7 +248,7 @@ func (dl *diskLayer) proveRange(ctx *generatorContext, root common.Hash, prefix
248248 return & proofResult {keys : keys , vals : vals }, nil
249249 }
250250 // Snap state is chunked, generate edge proofs for verification.
251- tr , err := trie .New (root , dl .triedb )
251+ tr , err := trie .New (owner , root , dl .triedb )
252252 if err != nil {
253253 ctx .stats .Log ("Trie missing, state snapshotting paused" , dl .root , dl .genMarker )
254254 return nil , errMissingTrie
@@ -313,9 +313,9 @@ type onStateCallback func(key []byte, val []byte, write bool, delete bool) error
313313// generateRange generates the state segment with particular prefix. Generation can
314314// either verify the correctness of existing state through range-proof and skip
315315// generation, or iterate trie to regenerate state on demand.
316- func (dl * diskLayer ) generateRange (ctx * generatorContext , root common.Hash , prefix []byte , kind string , origin []byte , max int , onState onStateCallback , valueConvertFn func ([]byte ) ([]byte , error )) (bool , []byte , error ) {
316+ func (dl * diskLayer ) generateRange (ctx * generatorContext , owner common. Hash , root common.Hash , prefix []byte , kind string , origin []byte , max int , onState onStateCallback , valueConvertFn func ([]byte ) ([]byte , error )) (bool , []byte , error ) {
317317 // Use range prover to check the validity of the flat state in the range
318- result , err := dl .proveRange (ctx , root , prefix , kind , origin , max , valueConvertFn )
318+ result , err := dl .proveRange (ctx , owner , root , prefix , kind , origin , max , valueConvertFn )
319319 if err != nil {
320320 return false , nil , err
321321 }
@@ -363,7 +363,7 @@ func (dl *diskLayer) generateRange(ctx *generatorContext, root common.Hash, pref
363363 if len (result .keys ) > 0 {
364364 snapNodeCache = memorydb .New ()
365365 snapTrieDb := trie .NewDatabase (snapNodeCache )
366- snapTrie , _ := trie .New (common.Hash {}, snapTrieDb )
366+ snapTrie , _ := trie .New (owner , common.Hash {}, snapTrieDb )
367367 for i , key := range result .keys {
368368 snapTrie .Update (key , result .vals [i ])
369369 }
@@ -374,7 +374,7 @@ func (dl *diskLayer) generateRange(ctx *generatorContext, root common.Hash, pref
374374 // if it's already opened with some nodes resolved.
375375 tr := result .tr
376376 if tr == nil {
377- tr , err = trie .New (root , dl .triedb )
377+ tr , err = trie .New (owner , root , dl .triedb )
378378 if err != nil {
379379 ctx .stats .Log ("Trie missing, state snapshotting paused" , dl .root , dl .genMarker )
380380 return false , nil , errMissingTrie
@@ -537,7 +537,7 @@ func generateStorages(ctx *generatorContext, dl *diskLayer, account common.Hash,
537537 // Loop for re-generating the missing storage slots.
538538 var origin = common .CopyBytes (storeMarker )
539539 for {
540- exhausted , last , err := dl .generateRange (ctx , storageRoot , append (rawdb .SnapshotStoragePrefix , account .Bytes ()... ), snapStorage , origin , storageCheckRange , onStorage , nil )
540+ exhausted , last , err := dl .generateRange (ctx , account , storageRoot , append (rawdb .SnapshotStoragePrefix , account .Bytes ()... ), snapStorage , origin , storageCheckRange , onStorage , nil )
541541 if err != nil {
542542 return err // The procedure it aborted, either by external signal or internal error.
543543 }
@@ -637,7 +637,7 @@ func generateAccounts(ctx *generatorContext, dl *diskLayer, accMarker []byte) er
637637 }
638638 origin := common .CopyBytes (accMarker )
639639 for {
640- exhausted , last , err := dl .generateRange (ctx , dl .root , rawdb .SnapshotAccountPrefix , snapAccount , origin , accountRange , onAccount , FullAccountRLP )
640+ exhausted , last , err := dl .generateRange (ctx , common. Hash {}, dl .root , rawdb .SnapshotAccountPrefix , snapAccount , origin , accountRange , onAccount , FullAccountRLP )
641641 if err != nil {
642642 return err // The procedure it aborted, either by external signal or internal error.
643643 }
0 commit comments