Go-Ethereum

nodejs 和 web3:未處理的拒絕錯誤:交易未在 50 個區塊內開採,請確保您的交易已正確發送

  • December 20, 2018

我正在嘗試使用來自 nodejs 的 web3 將 ETH 從我的一個帳戶發送到另一個帳戶:

   web3.eth.personal.unlockAccount(config.mainGethAccount, config.gethPassword, function () {
       console.log("sendingTransaction: " + config.mainGethAccount);
       let obj = {
           from: config.mainGethAccount,
           to: newAccountId,
           value: web3.utils.toWei(.005, 'ether')
       };
       console.log("obj",obj);
       web3.eth.sendTransaction(obj).then(function (receipt) {
           done(newAccountId,config.userAccountGethPassword);
       });
   });

我的 web3 對像沒問題,它能夠創建新帳戶,但它在 .sendTransaction 中崩潰,並且實際上從未轉移過 ETH:

sendingTransaction: 0x6c92C4201bBaFE97011C9EA9144c907Fd16F5089
[2017-08-01 03:21:46.240] [LOG]   obj { from: '0x6c92C4201bBaFE97011C9EA9144c907Fd16F5089',
 to: '0x2628fCe3675f25F94f06E1F0EE2c782be40fa6c8',
 value: '5000000000000000' }
[2017-08-01 03:22:46.040] [WARN]  Unhandled rejection Error: Transaction was not mined within 50 blocks, please make sure your transaction was properly send. Be aware that it might still be mined!
   at C:\tmp\qqq\node_modules\web3\packages\web3-core-method\src\index.js:362:45
   at tryCatcher (C:\tmp\qqq\node_modules\web3\packages\web3-core-promievent\node_modules\bluebird\js\release\util.js:16:23)
   at Promise._settlePromiseFromHandler (C:\tmp\qqq\node_modules\web3\packages\web3-core-promievent\node_modules\bluebird\js\release\promise.js:497:31)
   at Promise._settlePromise (C:\tmp\qqq\node_modules\web3\packages\web3-core-promievent\node_modules\bluebird\js\release\promise.js:555:18)
   at Promise._settlePromise0 (C:\tmp\qqq\node_modules\web3\packages\web3-core-promievent\node_modules\bluebird\js\release\promise.js:600:10)
   at Promise._settlePromises (C:\tmp\qqq\node_modules\web3\packages\web3-core-promievent\node_modules\bluebird\js\release\promise.js:679:18)
   at Async._drainQueue (C:\tmp\qqq\node_modules\web3\packages\web3-core-promievent\node_modules\bluebird\js\release\async.js:125:16)
   at Async._drainQueues (C:\tmp\qqq\node_modules\web3\packages\web3-core-promievent\node_modules\bluebird\js\release\async.js:135:10)
   at Immediate.Async.drainQueues (C:\tmp\qqq\node_modules\web3\packages\web3-core-promievent\node_modules\bluebird\js\release\async.js:16:14)
   at runCallback (timers.js:672:20)
   at tryOnImmediate (timers.js:645:5)

最有趣的是它有時會起作用。但是有可能修復它嗎?

此時您使用的是什麼測試網?如果是 7 月 31 日左右(當你的問題被問到時)的 Ropsten 測試網,那麼這個測試網就會受到攻擊,它不會確認任何交易。

所以很可能你的程式碼很好,它是網路。您可以嘗試使用 Rinkeby 或 Kovan 測試網來確認這一點。此外,Ropsten 現在應該可以正常工作了,只是注意它有時會出現問題。

如果它不時起作用,則很有可能您將汽油價格設置得太低。如果您有現金或在測試網上,只需提高汽油價格,您就會看到它飛過。例如在 ropsten 上,有時我將 gas 價格定為 300 gWei,這樣我就可以立即加入

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