Revert "core/state: mark account as dirty when resetObject occurs (#27339)"

This reverts commit 68dea627c4.
This commit is contained in:
devopsbo3 2023-11-10 12:27:53 -06:00 committed by GitHub
parent 5311e47079
commit a396bf8ace
2 changed files with 10 additions and 7 deletions

View file

@ -90,7 +90,6 @@ type (
account *common.Address account *common.Address
} }
resetObjectChange struct { resetObjectChange struct {
account *common.Address
prev *stateObject prev *stateObject
prevdestruct bool prevdestruct bool
} }
@ -163,7 +162,7 @@ func (ch resetObjectChange) revert(s *StateDB) {
} }
func (ch resetObjectChange) dirtied() *common.Address { func (ch resetObjectChange) dirtied() *common.Address {
return ch.account return nil
} }
func (ch suicideChange) revert(s *StateDB) { func (ch suicideChange) revert(s *StateDB) {

View file

@ -623,15 +623,19 @@ func (s *StateDB) GetOrNewStateObject(addr common.Address) *stateObject {
// the given address, it is overwritten and returned as the second return value. // the given address, it is overwritten and returned as the second return value.
func (s *StateDB) createObject(addr common.Address) (newobj, prev *stateObject) { func (s *StateDB) createObject(addr common.Address) (newobj, prev *stateObject) {
prev = s.getDeletedStateObject(addr) // Note, prev might have been deleted, we need that! prev = s.getDeletedStateObject(addr) // Note, prev might have been deleted, we need that!
var prevdestruct bool
if prev != nil {
_, prevdestruct = s.stateObjectsDestruct[prev.address]
if !prevdestruct {
s.stateObjectsDestruct[prev.address] = struct{}{}
}
}
newobj = newObject(s, addr, types.StateAccount{}) newobj = newObject(s, addr, types.StateAccount{})
if prev == nil { if prev == nil {
s.journal.append(createObjectChange{account: &addr}) s.journal.append(createObjectChange{account: &addr})
} else { } else {
_, prevdestruct := s.stateObjectsDestruct[prev.address] s.journal.append(resetObjectChange{prev: prev, prevdestruct: prevdestruct})
if !prevdestruct {
s.stateObjectsDestruct[prev.address] = struct{}{}
}
s.journal.append(resetObjectChange{account: &addr, prev: prev, prevdestruct: prevdestruct})
} }
s.setStateObject(newobj) s.setStateObject(newobj)
if prev != nil && !prev.deleted { if prev != nil && !prev.deleted {