Web3js
web3 get_transaction get_transaction_receipt 如何查看失敗交易的錯誤消息
我正在使用 python (web3.py) 中的 web3 實現,並使用get_transaction和get_transaction_receipt這兩種方法來查找失敗的事務。如果get_transaction_receipt的狀態欄位為 0,我知道交易失敗。
但是,如果我使用 etherscan(或 bscscan)查找交易,我會看到一條錯誤消息(例如:“失敗並出現錯誤‘退貨金額不夠’”。
如何使用 web3 查找事務以訪問錯誤消息的內容?
根據目前場景,web3.py 不能很好地處理這個問題,這是因為不同的客戶端以不同的方式處理 RPC 響應(請參閱此問題)。但是,這方面的工作非常積極(請參閱此問題)。
有幾個解決方法可以做到這一點:
- 使用eth-brownie,
TransactionReceipt.revert_msg
將給出詳細的回复消息,並TransactionReceipt.dev_revert_msg
允許自定義開發人員指定的回複評論- 使用原始 RPC 呼叫並解析 json