@@ -166,7 +166,7 @@ func (result *proofResult) forEach(callback func(key []byte, val []byte) error)
166
166
//
167
167
// The proof result will be returned if the range proving is finished, otherwise
168
168
// 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 ) {
170
170
var (
171
171
keys [][]byte
172
172
vals [][]byte
@@ -234,7 +234,7 @@ func (dl *diskLayer) proveRange(ctx *generatorContext, root common.Hash, prefix
234
234
235
235
// The snap state is exhausted, pass the entire key/val set for verification
236
236
if origin == nil && ! diskMore {
237
- stackTr := trie .NewStackTrie (nil )
237
+ stackTr := trie .NewStackTrieWithOwner (nil , owner )
238
238
for i , key := range keys {
239
239
stackTr .TryUpdate (key , vals [i ])
240
240
}
@@ -248,7 +248,7 @@ func (dl *diskLayer) proveRange(ctx *generatorContext, root common.Hash, prefix
248
248
return & proofResult {keys : keys , vals : vals }, nil
249
249
}
250
250
// 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 )
252
252
if err != nil {
253
253
ctx .stats .Log ("Trie missing, state snapshotting paused" , dl .root , dl .genMarker )
254
254
return nil , errMissingTrie
@@ -313,9 +313,9 @@ type onStateCallback func(key []byte, val []byte, write bool, delete bool) error
313
313
// generateRange generates the state segment with particular prefix. Generation can
314
314
// either verify the correctness of existing state through range-proof and skip
315
315
// 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 ) {
317
317
// 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 )
319
319
if err != nil {
320
320
return false , nil , err
321
321
}
@@ -363,7 +363,7 @@ func (dl *diskLayer) generateRange(ctx *generatorContext, root common.Hash, pref
363
363
if len (result .keys ) > 0 {
364
364
snapNodeCache = memorydb .New ()
365
365
snapTrieDb := trie .NewDatabase (snapNodeCache )
366
- snapTrie , _ := trie .New (common.Hash {}, snapTrieDb )
366
+ snapTrie , _ := trie .New (owner , common.Hash {}, snapTrieDb )
367
367
for i , key := range result .keys {
368
368
snapTrie .Update (key , result .vals [i ])
369
369
}
@@ -374,7 +374,7 @@ func (dl *diskLayer) generateRange(ctx *generatorContext, root common.Hash, pref
374
374
// if it's already opened with some nodes resolved.
375
375
tr := result .tr
376
376
if tr == nil {
377
- tr , err = trie .New (root , dl .triedb )
377
+ tr , err = trie .New (owner , root , dl .triedb )
378
378
if err != nil {
379
379
ctx .stats .Log ("Trie missing, state snapshotting paused" , dl .root , dl .genMarker )
380
380
return false , nil , errMissingTrie
@@ -537,7 +537,7 @@ func generateStorages(ctx *generatorContext, dl *diskLayer, account common.Hash,
537
537
// Loop for re-generating the missing storage slots.
538
538
var origin = common .CopyBytes (storeMarker )
539
539
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 )
541
541
if err != nil {
542
542
return err // The procedure it aborted, either by external signal or internal error.
543
543
}
@@ -637,7 +637,7 @@ func generateAccounts(ctx *generatorContext, dl *diskLayer, accMarker []byte) er
637
637
}
638
638
origin := common .CopyBytes (accMarker )
639
639
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 )
641
641
if err != nil {
642
642
return err // The procedure it aborted, either by external signal or internal error.
643
643
}
0 commit comments