Web3js

web3 get_transaction get_transaction_receipt 如何查看失敗交易的錯誤消息

  • April 18, 2021

我正在使用 python (web3.py) 中的 web3 實現,並使用get_transactionget_transaction_receipt這兩種方法來查找失敗的事務。如果get_transaction_receipt的狀態欄位為 0,我知道交易失敗。

但是,如果我使用 etherscan(或 bscscan)查找交易,我會看到一條錯誤消息(例如:“失敗並出現錯誤‘退貨金額不夠’”。

如何使用 web3 查找事務以訪問錯誤消息的內容?

根據目前場景,web3.py 不能很好地處理這個問題,這是因為不同的客戶端以不同的方式處理 RPC 響應(請參閱此問題)。但是,這方面的工作非常積極(請參閱此問題)。

有幾個解決方法可以做到這一點:

  • 使用eth-brownieTransactionReceipt.revert_msg將給出詳細的回复消息,並TransactionReceipt.dev_revert_msg允許自定義開發人員指定的回複評論
  • 使用原始 RPC 呼叫並解析 json

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