Skip to content

Commit b214d26

Browse files
committed
improve encryptor
1 parent a6b663b commit b214d26

File tree

2 files changed

+15
-14
lines changed

2 files changed

+15
-14
lines changed

enc/type.go

-1
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,6 @@ func (h *Hash) Scan(src interface{}) error {
9292
return nil
9393
}
9494

95-
// Useful type :)
9695
type SliceBuffer []byte
9796

9897
func (b *SliceBuffer) Write(data []byte) (n int, err error) {

hasher.go

+15-13
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,17 @@ func (sh *Encryptor) hash(n node.Node, db *Database, force bool) (node.Node, nod
4949
return node.NewHashNode(nil), n, err
5050
}
5151

52-
hashed, err := sh.store(collapsed, db, force)
52+
encryptedNode, err := sh.encrypt(collapsed, db, force)
5353
if err != nil {
5454
return node.NewHashNode(nil), n, err
5555
}
5656

57-
cachedHash, _ := hashed.(node.HashNode)
57+
if hashData, ok := encryptedNode.(node.HashNode); ok && db != nil {
58+
// We are pooling the trie nodes into an intermediate memory cache
59+
db.Insert(enc.BytesToHash(hashData), sh.rlpBuf, n)
60+
}
61+
62+
cachedHash, _ := encryptedNode.(node.HashNode)
5863
switch cn := cached.(type) {
5964
case *node.ExtensionNode:
6065
cn.Hash = cachedHash
@@ -68,7 +73,7 @@ func (sh *Encryptor) hash(n node.Node, db *Database, force bool) (node.Node, nod
6873
}
6974
}
7075

71-
return hashed, cached, nil
76+
return encryptedNode, cached, nil
7277
}
7378

7479
// getChildHash hash children nodes
@@ -116,7 +121,8 @@ func (sh *Encryptor) getChildHash(original node.Node, db *Database) (node.Node,
116121
}
117122
}
118123

119-
func (sh *Encryptor) store(n node.Node, db *Database, force bool) (node.Node, error) {
124+
// encrypt returns HashNode or incomin node
125+
func (sh *Encryptor) encrypt(n node.Node, db *Database, force bool) (node.Node, error) {
120126
// Don't store hashes or empty nodes.
121127
if _, isHash := n.(node.HashNode); n == nil || isHash {
122128
return n, nil
@@ -134,19 +140,15 @@ func (sh *Encryptor) store(n node.Node, db *Database, force bool) (node.Node, er
134140
}
135141

136142
// Larger nodes are replaced by their hash and stored in the database.
137-
hash, dirty := n.Cache()
138-
if hash == nil || dirty {
139-
hash = sh.makeHashNode(sh.rlpBuf)
140-
}
141-
142-
if db != nil {
143-
// We are pooling the trie nodes into an intermediate memory cache
144-
db.Insert(enc.BytesToHash(hash), sh.rlpBuf, n)
143+
newHash, dirty := n.Cache()
144+
if newHash == nil || dirty {
145+
newHash = sh.makeHashNode(sh.rlpBuf)
145146
}
146147

147-
return node.NewHashNode(hash), nil
148+
return node.NewHashNode(newHash), nil
148149
}
149150

151+
// makeHashNode wrap data on sha3
150152
func (sh *Encryptor) makeHashNode(data []byte) node.HashNode {
151153
n := make(node.HashNode, sh.sha.Size())
152154
sh.sha.Reset()

0 commit comments

Comments
 (0)