Solidity
為什麼我們在應付函式中使用 revert()?
我在許多線上範例中都看到了這個片段,你能解釋一下這是做什麼的嗎?為什麼我們在支付功能中使用它?
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 版本中隱式接受乙太的模式*,*但今天這是不需要的。我想這種做法主要是通過複製/粘貼來推進的。