以太坊執行miner.start返回null終極解決方案

前文

在看此篇文章之前也建議你先瀏覽一下之前的文章: 
《以太坊執行miner.start返回null》

之前的那篇文章也是蒐集彙總了網上的各種解決方案,但在實踐的過程中發現並不能有效的解決問題,只有發送交易纔會自動挖礦。因此,針對此問題又進行了大量資料的閱讀查閱,終於找到原因和解決方案。

原因及解決方案

出現此問題的原因在於geth版本更新之後,–dev模式下新增了一個參數項:

--dev               Ephemeral proof-of-authority network with a pre-funded developer account, mining enabled
--dev.period value  Block period to use in developer mode (0 = mine only if transaction pending) (default: 0)
  • 1
  • 2

我們先看一下上面的兩個參數,–dev是我們常用的參數,之前版本中我們只用使用–dev然後執行miner.start()就可以挖礦,但是在後面的版本中,當我們會發現只有發送交易了纔會挖一個塊。

http://rc.haian.gov.cn/company/company-show.php?id=1588232
http://rc.haian.gov.cn/company/company-show.php?id=1588233
http://rc.haian.gov.cn/company/company-show.php?id=1588234
http://rc.haian.gov.cn/company/company-show.php?id=1588235
http://rc.haian.gov.cn/company/company-show.php?id=1588236

引起此問題的原因就是新增了–dev.period value配置項。此配置默認值爲0,也就是說只有有pending中的交易纔會挖礦。

明白了這個參數的含義之後,解決問題就很簡答了,之前的–dev參數依舊使用,然後再在後面添加–dev.period 1,注意,參數值爲1,不是默認的0。

再重新啓動節點,然後執行挖礦,先不管返回是否是null,執行之後,無論查看日誌或執行eth.blockNumber都會發現塊在不停的增高。

總結

此問題網上的資料幾乎爲零,只有官網的一個簡單的命令說明,反而是有很多針對此問題的提問,卻沒有一個正確的答案。此文提到的解決方案估計少有人注意到。本人花費大量的時間查閱嘗試才找到答案,如果對你有幫助,歡迎轉發,關注。感謝支持!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章