diff options
author | obscuren <geffobscura@gmail.com> | 2015-03-10 08:22:38 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2015-03-10 08:22:38 +0800 |
commit | 0db4a0e898d09ffa7b6b1289e9a334edc0001cfa (patch) | |
tree | a0b5c8381ab482550ef4800a06d4db086d76a983 /state | |
parent | 94e543bc398efbb5c712b6e4cb48d8a57eb3400d (diff) | |
parent | 0d64163fea3a266ceb71cb4c4ee5682052c9ca6c (diff) | |
download | dexon-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.go | 4 | ||||
-rw-r--r-- | state/statedb.go | 17 |
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() |