想知道更多关于区块链技术知识,请百度【链客区块链技术问答社区】链客,有问必答!!
问题场景
最近技术群中的朋友经常问到这样的问题,环境搭建已经搭建好,geth节点也成功启动,可为什么当执行miner.start()方法时却没有挖矿,返回null。其实,不仅仅这些朋友,本人在启动最新节点进行挖矿的时候也遇到类似的问题。今天就带大家分析一下引起这个问题可能的几个原因。是否设置miner地址启动节点挖矿之前,需要查看当前节点中是否已经存在账号,可执行以下命令,查看当前节点下面是否有账号存在。personal.listAccounts
["0xc040cbd8a189d36f580fa83c2ffe3a26fb3e6a7e", "0xe0d1de6c934049fe4847b64becff5885bdb83fa4"]
当确认账户已经存在时,可以设置Etherbase。先查看以下coinbase账户:
eth.coinbase
"0xc040cbd8a189d36f580fa83c2ffe3a26fb3e6a7e"
通过上面的命令,可以看到coinbase的账户地址,也就是上面查看地址查到第一个地址。
执行设置miner地址:miner.setEtherbase(eth.coinbase) true
也可以执行执行以下命令进行设置:
miner.setEtherbase(eth.accounts[0]) true
然后,可以再执行挖矿命令,查看是否问题是否解决。
节点误报另外一种情况就是其实miner.start()命令已经执行成功,只不过节点返回null。如果是dev模式,可以使用eth.blockNumber查看一下区块高度是否增加。节点版本问题本人安装的geth-1.7.3版本的节点,在dev环境下验证发现,当执行miner.start()时,返回null。但其实miner已经执行,只不过它在等待你发送交易之后才会生成新的区块。也就是说执行了miner.start(),它一直在等待,这是发送一笔交易,再查看区块高度发现已经增加一块。