Solidity

revert() 會退還交易的所有氣體還是僅退還剩餘的氣體?

  • December 26, 2018

根據文件 revert()不會消耗任何氣體:

請注意,斷言式異常會消耗呼叫可用的所有 gas,而從 Metropolis 版本開始,恢復式異常不會消耗任何 gas。

但我經常讀到這revert()將退還未使用的汽油,例如在這個答案中。

我認為退還所有 gas 將為 DOS 攻擊打開大門,所以我假設只會退還未使用的 gas。但我想確認:-)

只是剩下的氣體。

revert將保留未使用的氣體:這意味著呼叫者將擁有未使用的氣體來執行進一步的計算。 退款是不同的,你是對的,如果revert將gas返還給呼叫者,那將允許DoS攻擊(呼叫者可以循環多次,然後revert,循環,revert無限次)。

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