forked from fractal-platform/fractal
-
Notifications
You must be signed in to change notification settings - Fork 0
/
sync.go
25 lines (23 loc) · 736 Bytes
/
sync.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package state
import (
"bytes"
"github.com/fractal-platform/fractal/common"
"github.com/fractal-platform/fractal/dbwrapper"
"github.com/fractal-platform/fractal/rlp"
"github.com/fractal-platform/fractal/trie"
)
// NewStateSync create a new state trie download scheduler.
func NewStateSync(root common.Hash, database dbwrapper.Database) *trie.Sync {
var syncer *trie.Sync
callback := func(leaf []byte, parent common.Hash) error {
var obj Account
if err := rlp.Decode(bytes.NewReader(leaf), &obj); err != nil {
return err
}
syncer.AddSubTrie(obj.Root, 64, parent, nil)
syncer.AddRawEntry(common.BytesToHash(obj.CodeHash), 64, parent)
return nil
}
syncer = trie.NewSync(root, database, callback)
return syncer
}