Transactions
錯誤的跳轉目的地,我怎麼能以程式方式告訴我?
假設我正在以程式方式對契約進行交易。我如何(以程式方式)告訴確認的交易有一個錯誤的跳轉目標?現在,我知道的唯一方法是去 etherscan.io 並查找紅色文本。但是我如何以程式方式確定這一點?
我正在查看來自 eth_getTransactionByHash 呼叫的響應數據,但我無法區分錯誤跳轉目標和有效跳轉目標之間的區別。
似乎 etherscan 有一個 API 可以做到這一點。但是不應該有一個不涉及etherscan的內置方式嗎? https://etherscan.io/apis#transactions
- 編輯 - - -
我目前的解決方案是檢查我的交易是否至少有 1 次確認。如果它至少有 1 個確認,那麼我對 etherscan 進行 API 呼叫並檢查它是否有錯誤。Etherscan 的回復告訴我,跳轉目的地是好是壞,或者是沒油了。這是相當驚人的,但它似乎非常圓潤和hacky。我將查看你們提到的其他文章,看看該解決方案是否更好。
目前,您將使用與如何以程式方式知道何時用完氣體?
在 Metropolis 之後,如果您正在編寫要調試的合約,您可以記錄一個事件並使用
revert
. 例如:event BadInputData(); ... // inside a function if (inputData == 0) { // inputData should not be zero BadInputData(); // log event revert; }
然後以程式方式查找事件。