core/vm: in selfdestruct gas calculation, return early if there isn't enough gas to cover cold account access costs

This commit is contained in:
Jared Wasinger 2025-12-18 11:16:06 -08:00
parent ffe9dc97e5
commit 8f967299c4

View file

@ -230,7 +230,12 @@ func makeSelfdestructGasFn(refundsEnabled bool) gasFunc {
// If the caller cannot afford the cost, this change will be rolled back // If the caller cannot afford the cost, this change will be rolled back
evm.StateDB.AddAddressToAccessList(address) evm.StateDB.AddAddressToAccessList(address)
gas = params.ColdAccountAccessCostEIP2929 gas = params.ColdAccountAccessCostEIP2929
if contract.Gas < gas {
return gas, nil
} }
}
// if empty and transfers value // if empty and transfers value
if evm.StateDB.Empty(address) && evm.StateDB.GetBalance(contract.Address()).Sign() != 0 { if evm.StateDB.Empty(address) && evm.StateDB.GetBalance(contract.Address()).Sign() != 0 {
gas += params.CreateBySelfdestructGas gas += params.CreateBySelfdestructGas