func (self *State) Update() { for _, stateObject := range self.stateObjects { if stateObject.remove { self.DeleteStateObject(stateObject) } else { stateObject.Sync() self.UpdateStateObject(stateObject) } } // FIXME trie delete is broken valid, t2 := ethtrie.ParanoiaCheck(self.Trie) if !valid { statelogger.Infof("Warn: PARANOIA: Different state root during copy %x vs %x\n", self.Trie.Root, t2.Root) self.Trie = t2 } }
func (self *StateObject) Sync() { for key, value := range self.storage { if value.Len() == 0 { // value.BigInt().Cmp(ethutil.Big0) == 0 { //data := self.getStorage([]byte(key)) //fmt.Printf("deleting %x %x 0x%x\n", self.Address(), []byte(key), data) self.State.Trie.Delete(string(key)) continue } self.SetAddr([]byte(key), value) } valid, t2 := ethtrie.ParanoiaCheck(self.State.Trie) if !valid { statelogger.Infof("Warn: PARANOIA: Different state storage root during copy %x vs %x\n", self.State.Trie.Root, t2.Root) self.State.Trie = t2 } }