Web3js
在 app.js 中讀取 require / revert 語句的消息
在我的 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