Go-Ethereum
nodejs 和 web3:未處理的拒絕錯誤:交易未在 50 個區塊內開採,請確保您的交易已正確發送
我正在嘗試使用來自 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,這樣我就可以立即加入