aboutsummaryrefslogtreecommitdiffstats
path: root/state
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2015-03-10 08:22:38 +0800
committerobscuren <geffobscura@gmail.com>2015-03-10 08:22:38 +0800
commit0db4a0e898d09ffa7b6b1289e9a334edc0001cfa (patch)
treea0b5c8381ab482550ef4800a06d4db086d76a983 /state
parent94e543bc398efbb5c712b6e4cb48d8a57eb3400d (diff)
parent0d64163fea3a266ceb71cb4c4ee5682052c9ca6c (diff)
downloaddexon-0db4a0e898d09ffa7b6b1289e9a334edc0001cfa.tar
dexon-0db4a0e898d09ffa7b6b1289e9a334edc0001cfa.tar.gz
dexon-0db4a0e898d09ffa7b6b1289e9a334edc0001cfa.tar.bz2
dexon-0db4a0e898d09ffa7b6b1289e9a334edc0001cfa.tar.lz
dexon-0db4a0e898d09ffa7b6b1289e9a334edc0001cfa.tar.xz
dexon-0db4a0e898d09ffa7b6b1289e9a334edc0001cfa.tar.zst
dexon-0db4a0e898d09ffa7b6b1289e9a334edc0001cfa.zip
Merge branch 'poc-9' into develop
Diffstat (limited to 'state')
-rw-r--r--state/state_object.go4
-rw-r--r--state/statedb.go17
2 files changed, 17 insertions, 4 deletions
diff --git a/state/state_object.go b/state/state_object.go
index 487952a02..ccbfea391 100644
--- a/state/state_object.go
+++ b/state/state_object.go
@@ -111,7 +111,7 @@ func NewStateObjectFromBytes(address, data []byte, db ethutil.Database) *StateOb
func (self *StateObject) MarkForDeletion() {
self.remove = true
self.dirty = true
- statelogger.DebugDetailf("%x: #%d %v (deletion)\n", self.Address(), self.nonce, self.balance)
+ statelogger.Debugf("%x: #%d %v X\n", self.Address(), self.nonce, self.balance)
}
func (c *StateObject) getAddr(addr []byte) *ethutil.Value {
@@ -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 ff8242e1a..0a4156461 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)}
}
@@ -121,6 +121,7 @@ func (self *StateDB) Delete(addr []byte) bool {
stateObject := self.GetOrNewStateObject(addr)
if stateObject != nil {
stateObject.MarkForDeletion()
+ stateObject.balance = new(big.Int)
return true
}
@@ -128,6 +129,14 @@ func (self *StateDB) Delete(addr []byte) bool {
return false
}
+func (self *StateDB) IsDeleted(addr []byte) bool {
+ stateObject := self.GetStateObject(addr)
+ if stateObject != nil {
+ return stateObject.remove
+ }
+ return false
+}
+
//
// Setting, updating & deleting state object methods
//
@@ -239,6 +248,10 @@ func (s *StateDB) Root() []byte {
return s.trie.Root()
}
+func (s *StateDB) Trie() *trie.SecureTrie {
+ return s.trie
+}
+
// Resets the trie and all siblings
func (s *StateDB) Reset() {
s.trie.Reset()