Ethereum 当发送者在函数执行过程中耗尽气体时会发生什么?

Ethereum 当发送者在函数执行过程中耗尽气体时会发生什么?,ethereum,solidity,evm,Ethereum,Solidity,Evm,假设我们有一个具有以下定义函数的合同: function send(address receiver, uint amount) public { if (balances[msg.sender] < amount) return; balances[msg.sender] -= amount; balances[receiver] += amount; emit Sent(msg.sender, receiver, a

假设我们有一个具有以下定义函数的合同:

   function send(address receiver, uint amount) public {
        if (balances[msg.sender] < amount) return;
        balances[msg.sender] -= amount;
        balances[receiver] += amount;
        emit Sent(msg.sender, receiver, amount);
    }

状态变量发生了什么?在区块中是否包含不完整的TX?

< P>如果在交易过程中用完煤气,它将失败。您只需支付所使用的计算费用,这意味着在失败之前使用的所有气体都将退回,但剩余的将退回


您可以在本章的

中了解有关气体的更多信息。气体耗尽的事务将失败,并且不会更新任何状态变量。失败的事务仍然包含在一个块中,如您在示例中所看到的

在您的示例中,
balances[msg.sender]-=result
将不会执行,并且
balances[msg.sender]
将与交易前保持完全相同

交易发送方仍将向采矿方支付费用,以将交易纳入区块

post很好地处理了各种故障情况。

您所说的“汽油用完”是什么意思?这是一个坚实的东西,还是你在使用一个转折点?
balances[msg.sender] -= amount;