Go-Ethereum
geth 交易卡在掛起,重新發送失敗
我用 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);