Solidity

為什麼使用斷言,因為它會消耗所有的氣體

  • January 22, 2022

既然assert會消耗所有的氣體並require返回所有的氣體,有沒有理由不assert使用require?使用require返還gas似乎總是比消耗它們更好的選擇?

我在 require 和 assert 之間的區別以及 revert 和 throw 之間的區別中看到了一些解釋, 但我仍然不明白:選擇消耗所有氣體的命令有什麼好處?

您可以使用assert(over require) 向原始碼分析器(例如 oyente)表明您的意圖。雖然require驗證輸入很好,但有時它可能是錯誤的,因為使用者做了一些不恰當的事情。assert另一方面,它表示false在任何情況下都不應該出現的東西。知道了這一點,原始碼分析器就可以通過發現任何assert可能不存在的情況來檢測系統中的邏輯錯誤。true.

希望能幫助到你。

如果你想懲罰那些為你的函式提供錯誤論據的頑皮使用者,你應該用盡他們所有的 gas :-)

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