Solidity

有沒有辦法讓使用者知道合約交易/功能失敗的原因?

  • February 28, 2018

例如,如果使用者嘗試向眾籌合約發送低於最低投資金額的資金,或者如果使用者發送的資金高於最高投資金額。

無論如何,乙太坊錢包只會說“此交易將失敗……”。對於一些買家來說,這可能會非常令人困惑。

如何解決這個問題並使其更加使用者友好?

不,這在撰寫本文時是不可能的。目前必須從客戶端實現。我們只允許將條件傳遞給 require 和 assert,或者在滿足條件後恢復。

然而,在不久的將來,我們將能夠將錯誤消息傳遞給這些異常。如果我沒有記錯但未啟動,這些操作碼已經存在。

NOW: require(a == b); 
FUTURE: require(a==b, "A does not equal B");

或者

NOW: revert();
FUTURE: revert("Transaction failed, not enough balance");

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