Go-Ethereum

geth 交易卡在掛起,重新發送失敗

  • December 18, 2017

我用 geth 發送了 115 筆交易,它們被困在等待中超過一個小時。Etherscan 無法辨識它們。我嘗試重新發送,並得到一個令人困惑的錯誤。來自 geth 控制台的一些細節:

> eth.pendingTransactions.length
115

> eth.resend(eth.pendingTransactions[0], web3.toWei(20, 'gwei'))
Error: Transaction a075b95c7242178330ae22373a1138e9ec22cbd9dd54964980fc1a36182acdbe not found
   at web3.js:3104:20
   at web3.js:6191:15
   at web3.js:5004:36
   at <anonymous>:1:1

> eth.pendingTransactions[0].hash == "0xa075b95c7242178330ae22373a1138e9ec22cbd9dd54964980fc1a36182acdbe"
false

eth.resend文件沒有提供更多幫助。

這可能與以下內容重複:geth:無法重新發送交易 - 未找到交易


*編輯:修正了文章中的程式碼拼寫錯誤(但控制台中沒有拼寫錯誤)。

有趣的是,池最終在 24 小時後自行清除,並且所有交易都成功發送。但是為什麼eth.resend()失敗的問題仍然存在。(或者也許澄清函式的目的)

我仍然不知道為什麼eth.resend會失敗(並且從 geth 1.6.5 開始繼續失敗),但是這個兼容的更新檔對我有用:

eth.resend = function (tx, gasPrice, gas) {
 if (gasPrice) {
   tx.gasPrice = gasPrice;
 }
 if (gas) {
   tx.gas = gas;
 }
 tx.data = tx.input;
 return eth.sendTransaction(tx);
};

我更喜歡添加這個方便的版本:

eth.resendgwei = function (tx, gasPriceInGwei, gas) {
 if (gasPriceInGwei) {
   return eth.resend(tx, web3.toWei(gasPriceInGwei, 'gwei'), gas);
 }
 else {
   return eth.resend(tx, null, gas);
 }
};

現在,如果您的待處理交易因為 gas 價格太低而被卡住,您可以通過以下方式加速它:

eth.resendgwei(eth.pendingTransactions[0], 27);

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