aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--state/state_object.go2
-rw-r--r--state/statedb.go4
-rw-r--r--trie/secure_trie.go4
3 files changed, 7 insertions, 3 deletions
diff --git a/state/state_object.go b/state/state_object.go
index 487952a02..51ec95efa 100644
--- a/state/state_object.go
+++ b/state/state_object.go
@@ -290,7 +290,7 @@ func (c *StateObject) Init() Code {
return c.initCode
}
-func (self *StateObject) Trie() *trie.Trie {
+func (self *StateObject) Trie() *trie.SecureTrie {
return self.State.trie
}
diff --git a/state/statedb.go b/state/statedb.go
index 7e2b24b94..ee37c2e68 100644
--- a/state/statedb.go
+++ b/state/statedb.go
@@ -18,7 +18,7 @@ var statelogger = logger.NewLogger("STATE")
// * Accounts
type StateDB struct {
db ethutil.Database
- trie *trie.Trie
+ trie *trie.SecureTrie
stateObjects map[string]*StateObject
@@ -29,7 +29,7 @@ type StateDB struct {
// Create a new state from a given trie
func New(root []byte, db ethutil.Database) *StateDB {
- trie := trie.New(ethutil.CopyBytes(root), db)
+ trie := trie.NewSecure(ethutil.CopyBytes(root), db)
return &StateDB{db: db, trie: trie, stateObjects: make(map[string]*StateObject), refund: make(map[string]*big.Int)}
}
diff --git a/trie/secure_trie.go b/trie/secure_trie.go
index f49547ed8..b9fa376b8 100644
--- a/trie/secure_trie.go
+++ b/trie/secure_trie.go
@@ -30,3 +30,7 @@ func (self *SecureTrie) Delete(key []byte) Node {
func (self *SecureTrie) DeleteString(key string) Node {
return self.Delete([]byte(key))
}
+
+func (self *SecureTrie) Copy() *SecureTrie {
+ return &SecureTrie{self.Trie.Copy()}
+}