Exceptions

乙太幣轉賬是否會在異常情況下消耗所有gas?

  • February 5, 2018

如果addr.transfer()失敗,它是否使用revert- 或 -throw樣式的異常?換句話說,失敗是否transfer消耗了所有提供的氣體?

我相信它不會消耗所有提供的氣體。

雖然根據文件它會拋出:

<address>.transfer(uint256 amount): send given amount of Wei to Address, throws on failure

由於“REVERT 指令”EIP似乎不再消耗所有的氣體。


為了測試這一點,我創建了一些簡單的合約——可以在這個 EthFiddle上看到。

我使用 remix 部署了合約並呼叫了forward我的合約函式,Transfer儘管交易使用了 Remix 的預設 3,000,000 gas,但實際 gas 成本為 29,135:

在此處輸入圖像描述

調試事務並查看堆棧,我可以看到最近合理添加的 REVERT OPCODE 被呼叫:

在此處輸入圖像描述

我認為這並不是消耗所有氣體的原因。

引用自:https://ethereum.stackexchange.com/questions/38605