Solidity

為什麼我們在應付函式中使用 revert()?

  • October 1, 2021

我在許多線上範例中都看到了這個片段,你能解釋一下這是做什麼的嗎?為什麼我們在支付功能中使用它?

function () public payable {
  revert () ; 
}   

沒有名稱的函式:function ()稱為備份函式。它在合約收到一些 ETH 而沒有顯式呼叫函式時執行。

放入revert();它意味著你不能在沒有明確呼叫支付函式的情況下將 ETH 發送到合約。

我相信在 0.4.0(2016 年 9 月發布)之前的 Solidity 版本中不需要這種模式。來自https://github.com/ethereum/solidity/blob/develop/Changelog.md#040-2016-09-08(我的重點):

想要通過簡單的“發送”接收 Ether 的合約必須使用 payable 修飾符實現備份功能。如果沒有定義應付回退函式並且沒有函式與簽名匹配,則合約現在會拋出。

我相信這function () payable { revert(); }是一種用於防止在 0.4.0 之前的 Solidity 版本中隱式接受乙太的模式*,*但今天這是不需要的。我想這種做法主要是通過複製/粘貼來推進的。

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