前文
在看此篇文章之前也建议你先浏览一下之前的文章:
《以太坊执行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都会发现块在不停的增高。
总结
此问题网上的资料几乎为零,只有官网的一个简单的命令说明,反而是有很多针对此问题的提问,却没有一个正确的答案。此文提到的解决方案估计少有人注意到。本人花费大量的时间查阅尝试才找到答案,如果对你有帮助,欢迎转发,关注。感谢支持!
原文:https://blog.csdn.net/wo541075754/article/details/79260040
分享一些区块链教程:
php比特币开发教程:http://xc.hubwiz.com/course/5b9e779ac02e6b6a59171def,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Php代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Php工程师不可多得的比特币开发学习课程。
java和web3j以太坊开发:http://xc.hubwiz.com/course/5b2b6e82c02e6b6a59171de2,主要是针对java和android程序员围绕web3j库进行区块链以太坊开发的讲解。
php以太坊:http://xc.hubwiz.com/course/5b36629bc02e6b6a59171de3,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和事件等内容。
EOS智能合约与DApp开发入门教程:http://xc.hubwiz.com/course/5b52c0a2c02e6b6a59171ded,本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。
python以太坊:http://xc.hubwiz.com/course/5b40462cc02e6b6a59171de4,主要是针对python围绕web3.py进行区块链以太坊应用开发的讲解。
C#以太坊:http://xc.hubwiz.com/course/5b6048c3c02e6b6a59171dee,主要讲解如何使用C#开发基于.Net的以太坊应用,包括账户管理、状态与交易、智能合约开发与交互、过滤器和事件等。
以太坊开发:http://xc.hubwiz.com/course/5abbb7acc02e6b6a59171dd6,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
以太坊教程:http://xc.hubwiz.com/course/5a952991adb3847553d205d1,主要介绍智能合约与dapp应用开发,适合入门。