Web3js

在 app.js 中讀取 require / revert 語句的消息

  • April 14, 2020

在我的 App.js 中,我呼叫了智能合約函式並且函式中的 require 語句不滿足,那麼如何在我的 App.js 中獲取該 require 語句的消息?

Web3 1.2.5 現在支持恢復消息,通過設置啟動web3.eth.handleRevert = true。您可以使用TestContract.methods.myMethod(myParam).call().catch(console.log)來接收消息而不發送事務。

有關更多詳細資訊,請參閱https://soliditydeveloper.com/web3-1-2-5-revert-reason-strings

您可能應該問自己,如果不執行交易,交易將如何恢復。

它不會更改合約函式指定的任何狀態變數。

但它仍會執行到語句被拒絕的地步require,並且會從節點將 REVERT 操作碼與錯誤消息一起發送回您的應用程序。

如果您通過 web3.js 與節點通信,則後者通常會引發異常並帶有錯誤消息,該錯誤消息以語句的錯誤消息開頭"VM Exception while processing transaction: revert"和結尾。require

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