|
|
|
@ -370,6 +370,27 @@ func (s *StateDB) IntermediateRoot() common.Hash { |
|
|
|
|
return s.trie.Hash() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// DeleteSuicides flags the suicided objects for deletion so that it
|
|
|
|
|
// won't be referenced again when called / queried up on.
|
|
|
|
|
//
|
|
|
|
|
// DeleteSuicides should not be used for consensus related updates
|
|
|
|
|
// under any circumstances.
|
|
|
|
|
func (s *StateDB) DeleteSuicides() { |
|
|
|
|
// Reset refund so that any used-gas calculations can use
|
|
|
|
|
// this method.
|
|
|
|
|
s.refund = new(big.Int) |
|
|
|
|
for _, stateObject := range s.stateObjects { |
|
|
|
|
if stateObject.dirty { |
|
|
|
|
// If the object has been removed by a suicide
|
|
|
|
|
// flag the object as deleted.
|
|
|
|
|
if stateObject.remove { |
|
|
|
|
stateObject.deleted = true |
|
|
|
|
} |
|
|
|
|
stateObject.dirty = false |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Commit commits all state changes to the database.
|
|
|
|
|
func (s *StateDB) Commit() (root common.Hash, err error) { |
|
|
|
|
root, batch := s.CommitBatch() |
|
|
|
|