以太坊执行miner.start返回null终极解决方案
在前面的一篇文章中我们讲解了以太坊执行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)
我们先看一下上面的两个参数,–dev是我们常用的参数,之前版本中我们只用使用–dev然后执行miner.start()就可以挖矿,但是在后面的版本中,当我们会发现只有发送交易了才会挖一个块。
引起此问题的原因就是新增了–dev.period value配置项。此配置默认值为0,也就是说只有有pending中的交易才会挖矿。
明白了这个参数的含义之后,解决问题就很简答了,之前的–dev参数依旧使用,然后再在后面添加–dev.period 1,注意,参数值为1,不是默认的0。
再重新启动节点,然后执行挖矿,先不管返回是否是null,执行之后,无论查看日志或执行eth.blockNumber都会发现块在不停的增高。
总结
此问题网上的资料几乎为零,只有官网的一个简单的命令说明,反而是有很多针对此问题的提问,却没有一个正确的答案。此文提到的解决方案估计少有人注意到。本人花费大量的时间查阅尝试才找到答案,如果对你有帮助,欢迎转发,关注。感谢支持!
关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台
除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接