Transactions

錯誤的跳轉目的地,我怎麼能以程式方式告訴我?

  • August 25, 2017

假設我正在以程式方式對契約進行交易。我如何(以程式方式)告訴確認的交易有一個錯誤的跳轉目標?現在,我知道的唯一方法是去 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;
}

然後以程式方式查找事件。

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