@@ -29,6 +29,7 @@ import (
2929 "github.com/ethereum/go-ethereum/crypto"
3030 "github.com/ethereum/go-ethereum/log"
3131 "github.com/ethereum/go-ethereum/rlp"
32+ sdtrie "github.com/ethereum/go-ethereum/statediff/trie"
3233 . "github.com/ethereum/go-ethereum/statediff/types"
3334 "github.com/ethereum/go-ethereum/trie"
3435)
@@ -51,28 +52,6 @@ type builder struct {
5152 stateCache state.Database
5253}
5354
54- func resolveNode (it trie.NodeIterator , trieDB * trie.Database ) (StateNode , []interface {}, error ) {
55- nodePath := make ([]byte , len (it .Path ()))
56- copy (nodePath , it .Path ())
57- node , err := trieDB .Node (it .Hash ())
58- if err != nil {
59- return StateNode {}, nil , err
60- }
61- var nodeElements []interface {}
62- if err := rlp .DecodeBytes (node , & nodeElements ); err != nil {
63- return StateNode {}, nil , err
64- }
65- ty , err := CheckKeyType (nodeElements )
66- if err != nil {
67- return StateNode {}, nil , err
68- }
69- return StateNode {
70- NodeType : ty ,
71- Path : nodePath ,
72- NodeValue : node ,
73- }, nodeElements , nil
74- }
75-
7655// convenience
7756func stateNodeAppender (nodes * []StateNode ) StateNodeSink {
7857 return func (node StateNode ) error {
@@ -127,7 +106,7 @@ func (sdb *builder) buildStateTrie(it trie.NodeIterator) ([]StateNode, []CodeAnd
127106 if it .Leaf () || bytes .Equal (nullHashBytes , it .Hash ().Bytes ()) {
128107 continue
129108 }
130- node , nodeElements , err := resolveNode (it , sdb .stateCache .TrieDB ())
109+ node , nodeElements , err := sdtrie . ResolveNode (it , sdb .stateCache .TrieDB ())
131110 if err != nil {
132111 return nil , nil , err
133112 }
@@ -319,7 +298,7 @@ func (sdb *builder) createdAndUpdatedState(a, b trie.NodeIterator, watchedAddres
319298 if it .Leaf () || bytes .Equal (nullHashBytes , it .Hash ().Bytes ()) {
320299 continue
321300 }
322- node , nodeElements , err := resolveNode (it , sdb .stateCache .TrieDB ())
301+ node , nodeElements , err := sdtrie . ResolveNode (it , sdb .stateCache .TrieDB ())
323302 if err != nil {
324303 return nil , nil , err
325304 }
@@ -363,7 +342,7 @@ func (sdb *builder) createdAndUpdatedStateWithIntermediateNodes(a, b trie.NodeIt
363342 if it .Leaf () || bytes .Equal (nullHashBytes , it .Hash ().Bytes ()) {
364343 continue
365344 }
366- node , nodeElements , err := resolveNode (it , sdb .stateCache .TrieDB ())
345+ node , nodeElements , err := sdtrie . ResolveNode (it , sdb .stateCache .TrieDB ())
367346 if err != nil {
368347 return nil , nil , err
369348 }
@@ -415,7 +394,7 @@ func (sdb *builder) deletedOrUpdatedState(a, b trie.NodeIterator, diffPathsAtB m
415394 if it .Leaf () || bytes .Equal (nullHashBytes , it .Hash ().Bytes ()) {
416395 continue
417396 }
418- node , nodeElements , err := resolveNode (it , sdb .stateCache .TrieDB ())
397+ node , nodeElements , err := sdtrie . ResolveNode (it , sdb .stateCache .TrieDB ())
419398 if err != nil {
420399 return nil , err
421400 }
@@ -576,7 +555,7 @@ func (sdb *builder) buildStorageNodesFromTrie(it trie.NodeIterator, watchedStora
576555 if it .Leaf () || bytes .Equal (nullHashBytes , it .Hash ().Bytes ()) {
577556 continue
578557 }
579- node , nodeElements , err := resolveNode (it , sdb .stateCache .TrieDB ())
558+ node , nodeElements , err := sdtrie . ResolveNode (it , sdb .stateCache .TrieDB ())
580559 if err != nil {
581560 return err
582561 }
@@ -650,7 +629,7 @@ func (sdb *builder) createdAndUpdatedStorage(a, b trie.NodeIterator, watchedKeys
650629 if it .Leaf () || bytes .Equal (nullHashBytes , it .Hash ().Bytes ()) {
651630 continue
652631 }
653- node , nodeElements , err := resolveNode (it , sdb .stateCache .TrieDB ())
632+ node , nodeElements , err := sdtrie . ResolveNode (it , sdb .stateCache .TrieDB ())
654633 if err != nil {
655634 return nil , err
656635 }
@@ -695,7 +674,7 @@ func (sdb *builder) deletedOrUpdatedStorage(a, b trie.NodeIterator, diffPathsAtB
695674 if it .Leaf () || bytes .Equal (nullHashBytes , it .Hash ().Bytes ()) {
696675 continue
697676 }
698- node , nodeElements , err := resolveNode (it , sdb .stateCache .TrieDB ())
677+ node , nodeElements , err := sdtrie . ResolveNode (it , sdb .stateCache .TrieDB ())
699678 if err != nil {
700679 return err
701680 }
0 commit comments