aboutsummaryrefslogtreecommitdiffstats
path: root/trie/secure_trie.go
diff options
context:
space:
mode:
Diffstat (limited to 'trie/secure_trie.go')
-rw-r--r--trie/secure_trie.go11
1 files changed, 10 insertions, 1 deletions
diff --git a/trie/secure_trie.go b/trie/secure_trie.go
index b9fa376b8..f7a1950e5 100644
--- a/trie/secure_trie.go
+++ b/trie/secure_trie.go
@@ -2,6 +2,8 @@ package trie
import "github.com/ethereum/go-ethereum/crypto"
+var keyPrefix = []byte("secure-key-")
+
type SecureTrie struct {
*Trie
}
@@ -11,7 +13,10 @@ func NewSecure(root []byte, backend Backend) *SecureTrie {
}
func (self *SecureTrie) Update(key, value []byte) Node {
- return self.Trie.Update(crypto.Sha3(key), value)
+ shaKey := crypto.Sha3(key)
+ self.Trie.cache.Put(append(keyPrefix, shaKey...), key)
+
+ return self.Trie.Update(shaKey, value)
}
func (self *SecureTrie) UpdateString(key, value string) Node {
return self.Update([]byte(key), []byte(value))
@@ -34,3 +39,7 @@ func (self *SecureTrie) DeleteString(key string) Node {
func (self *SecureTrie) Copy() *SecureTrie {
return &SecureTrie{self.Trie.Copy()}
}
+
+func (self *SecureTrie) GetKey(shaKey []byte) []byte {
+ return self.Trie.cache.Get(append(keyPrefix, shaKey...))
+}