refactor(statedb_hooked.go): refactor SelfDestruct and SelfDestruct6780 methods to improve readability and reduce code duplication

This commit is contained in:
kchojn 2024-10-28 08:41:14 -03:00
parent cf45df301a
commit 3facc19be3

View file

@ -198,40 +198,44 @@ func (s *hookedStateDB) SetState(address common.Address, key common.Hash, value
} }
func (s *hookedStateDB) SelfDestruct(address common.Address) uint256.Int { func (s *hookedStateDB) SelfDestruct(address common.Address) uint256.Int {
prevCode := s.inner.GetCode(address) var prevCode []byte
prevCodeHash := s.inner.GetCodeHash(address) var prevCodeHash common.Hash
prev := s.inner.SelfDestruct(address)
if !prev.IsZero() { if s.hooks.OnCodeChange != nil {
if s.hooks.OnBalanceChange != nil { prevCode = s.inner.GetCode(address)
s.hooks.OnBalanceChange(address, prev.ToBig(), new(big.Int), tracing.BalanceDecreaseSelfdestruct) prevCodeHash = s.inner.GetCodeHash(address)
}
} }
if len(prevCode) > 0 { prev := s.inner.SelfDestruct(address)
if s.hooks.OnCodeChange != nil {
s.hooks.OnCodeChange(address, prevCodeHash, prevCode, types.EmptyCodeHash, nil) if !prev.IsZero() && s.hooks.OnBalanceChange != nil {
} s.hooks.OnBalanceChange(address, prev.ToBig(), new(big.Int), tracing.BalanceDecreaseSelfdestruct)
}
if len(prevCode) > 0 && s.hooks.OnCodeChange != nil {
s.hooks.OnCodeChange(address, prevCodeHash, prevCode, types.EmptyCodeHash, nil)
} }
return prev return prev
} }
func (s *hookedStateDB) SelfDestruct6780(address common.Address) (uint256.Int, bool) { func (s *hookedStateDB) SelfDestruct6780(address common.Address) (uint256.Int, bool) {
prevCodeHash := s.inner.GetCodeHash(address) var prevCode []byte
prevCode := s.inner.GetCode(address) var prevCodeHash common.Hash
prev, changed := s.inner.SelfDestruct6780(address)
if !prev.IsZero() && changed { if s.hooks.OnCodeChange != nil {
if s.hooks.OnBalanceChange != nil { prevCodeHash = s.inner.GetCodeHash(address)
s.hooks.OnBalanceChange(address, prev.ToBig(), new(big.Int), tracing.BalanceDecreaseSelfdestruct) prevCode = s.inner.GetCode(address)
}
} }
if len(prevCode) > 0 && changed { prev, changed := s.inner.SelfDestruct6780(address)
if s.hooks.OnCodeChange != nil {
s.hooks.OnCodeChange(address, prevCodeHash, prevCode, types.EmptyCodeHash, nil) if !prev.IsZero() && changed && s.hooks.OnBalanceChange != nil {
} s.hooks.OnBalanceChange(address, prev.ToBig(), new(big.Int), tracing.BalanceDecreaseSelfdestruct)
}
if len(prevCode) > 0 && changed && s.hooks.OnCodeChange != nil {
s.hooks.OnCodeChange(address, prevCodeHash, prevCode, types.EmptyCodeHash, nil)
} }
return prev, changed return prev, changed