假设我们有一个具有以下定义函数的契约:
函数发送(地址接收者,uint金额)public { if(balances [msg.sender]< amount)返回; 结余[味精….
耗尽气体的事务将失败,并且不会更新任何状态变量。如您所见,失败的交易仍包含在一个区块中 这个 out of gas 例。
out of gas
在你的例子中, balances[msg.sender] -= result 将不被执行,并且 balances[msg.sender] 将与交易前保持完全相同。
balances[msg.sender] -= result
balances[msg.sender]
交易的发送方仍将向矿工支付费用以将交易包括在该区块中。
这个 post在各种失败场景中做得很好。
如果在交易过程中燃气耗尽,它将失败。您只需支付所使用的计算费用,这意味着在失败之前使用的所有气体都将支付 的 不 强> 被退回,但其余的将。
你可以在本章的这一章中阅读更多关于天然气的信息 以太坊书