@@ -35,7 +35,7 @@ import (
3535
3636type (
3737 NodeFlushFn func ([]byte , BinaryNode )
38- NodeResolverFn func ([]byte ) ([]byte , error )
38+ NodeResolverFn func ([]byte , common. Hash ) ([]byte , error )
3939)
4040
4141type BinaryNode interface {
@@ -115,7 +115,7 @@ func (h HashedNode) Insert(key []byte, value []byte, resolver NodeResolverFn) (B
115115 return h , errors .New ("resolver is nil" )
116116 }
117117
118- resolved , err := resolver (h [:])
118+ resolved , err := resolver (h [:], common . Hash ( h ) )
119119 if err != nil {
120120 return nil , fmt .Errorf ("insert error: %w" , err )
121121 }
@@ -132,8 +132,7 @@ func (h HashedNode) Commit() common.Hash {
132132}
133133
134134func (h HashedNode ) Copy () BinaryNode {
135- var nh common.Hash
136- nh = common .Hash (h )
135+ nh := common .Hash (h )
137136 return HashedNode (nh )
138137}
139138
@@ -154,7 +153,7 @@ func (h HashedNode) InsertValuesAtStem(key []byte, values [][]byte, resolver Nod
154153 if err != nil {
155154 return nil , fmt .Errorf ("resolving node in insert: %w" , err )
156155 }
157- resolved , err := resolver (path )
156+ resolved , err := resolver (path , common . Hash ( h ) )
158157 if err != nil {
159158 return nil , fmt .Errorf ("insert error: %w" , err )
160159 }
@@ -399,12 +398,12 @@ func (bt *InternalNode) GetValuesAtStem(stem []byte, resolver NodeResolverFn) ([
399398 child = & bt .right
400399 }
401400
402- if _ , ok := (* child ).(HashedNode ); ok {
401+ if hn , ok := (* child ).(HashedNode ); ok {
403402 path , err := keyToPath (bt .depth , stem )
404403 if err != nil {
405404 return nil , fmt .Errorf ("GetValuesAtStem resolve error: %w" , err )
406405 }
407- data , err := resolver (path )
406+ data , err := resolver (path , common . Hash ( hn ) )
408407 if err != nil {
409408 return nil , fmt .Errorf ("GetValuesAtStem resolve error: %w" , err )
410409 }
@@ -553,7 +552,7 @@ func SerializeNode(node BinaryNode) []byte {
553552
554553func DeserializeNode (serialized []byte , depth int ) (BinaryNode , error ) {
555554 if len (serialized ) == 0 {
556- return nil , errors . New ( "empty serialized node" )
555+ return Empty {}, nil
557556 }
558557
559558 switch serialized [0 ] {
@@ -621,7 +620,10 @@ func NewVerkleTrie(root BinaryNode, db *Database, ended bool) *BinaryTrie {
621620 }
622621}
623622
624- func (trie * BinaryTrie ) FlatdbNodeResolver (path []byte ) ([]byte , error ) {
623+ func (trie * BinaryTrie ) FlatdbNodeResolver (path []byte , hash common.Hash ) ([]byte , error ) {
624+ if hash == (common.Hash {}) {
625+ return nil , nil // empty node
626+ }
625627 return trie .db .diskdb .Get (append (FlatDBVerkleNodeKeyPrefix , path ... ))
626628}
627629
0 commit comments