github.com/arieschain/arieschain@v0.0.0-20191023063405-37c074544356/core/state/sync.go (about) 1 package state 2 3 import ( 4 "bytes" 5 6 "github.com/quickchainproject/quickchain/common" 7 "github.com/quickchainproject/quickchain/rlp" 8 "github.com/quickchainproject/quickchain/trie" 9 ) 10 11 // NewStateSync create a new state trie download scheduler. 12 func NewStateSync(root common.Hash, database trie.DatabaseReader) *trie.TrieSync { 13 var syncer *trie.TrieSync 14 callback := func(leaf []byte, parent common.Hash) error { 15 var obj Account 16 if err := rlp.Decode(bytes.NewReader(leaf), &obj); err != nil { 17 return err 18 } 19 syncer.AddSubTrie(obj.Root, 64, parent, nil) 20 syncer.AddRawEntry(common.BytesToHash(obj.CodeHash), 64, parent) 21 return nil 22 } 23 syncer = trie.NewTrieSync(root, database, callback) 24 return syncer 25 }