Update instructions.go

Make sure contract suicides successfully before add balance to other address.
This commit is contained in:
silence 2019-08-16 10:52:03 +08:00 committed by GitHub
parent dbb03fe989
commit 6e0a4e1163
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -878,9 +878,11 @@ func opStop(pc *uint64, interpreter *EVMInterpreter, contract *Contract, memory
func opSuicide(pc *uint64, interpreter *EVMInterpreter, contract *Contract, memory *Memory, stack *Stack) ([]byte, error) {
balance := interpreter.evm.StateDB.GetBalance(contract.Address())
interpreter.evm.StateDB.AddBalance(common.BigToAddress(stack.pop()), balance)
interpreter.evm.StateDB.Suicide(contract.Address())
suicided := interpreter.evm.StateDB.Suicide(contract.Address())
if suicided {
interpreter.evm.StateDB.AddBalance(common.BigToAddress(stack.pop()), balance)
}
return nil, nil
}