下面我列举了三种解决方案,前面两张是某两位大佬试出来的,第三种是我蒙出来的。

第一种解决方案

转载自  http://mp.weixin.qq.com/s/AB9vj1EzOgWT7JyryfQhDg

问题场景

最近技术群中的朋友经常问到这样的问题,环境搭建已经搭建好,geth节点也成功启动,可为什么当执行miner.start()方法时却没有挖矿,返回null。

其实,不仅仅这些朋友,本人在启动最新节点进行挖矿的时候也遇到类似的问题。今天就带大家分析一下引起这个问题可能的几个原因。

是否设置miner地址

启动节点挖矿之前,需要查看当前节点中是否已经存在账号,可执行以下命令,查看当前节点下面是否有账号存在。

  1. >personal.listAccounts

  2. ["0xc040cbd8a189d36f580fa83c2ffe3a26fb3e6a7e", "0xe0d1de6c934049fe4847b64becff5885bdb83fa4"]

当确认账户已经存在时,可以设置Etherbase。先查看以下coinbase账户:

  1. >eth.coinbase

  2. "0xc040cbd8a189d36f580fa83c2ffe3a26fb3e6a7e"

通过上面的命令,可以看到coinbase的账户地址,也就是上面查看地址查到第一个地址。

执行设置miner地址:

  1. >miner.setEtherbase(eth.coinbase)

  2. true

也可以执行执行以下命令进行设置:

  1. >miner.setEtherbase(eth.accounts[0])

  2. true

然后,可以再执行挖矿命令,查看是否问题是否解决。

节点误报

另外一种情况就是其实miner.start()命令已经执行成功,只不过节点返回null。如果是dev模式,可以使用eth.blockNumber查看一下区块高度是否增加。

节点版本问题

本人安装的geth-1.7.3版本的节点,在dev环境下验证发现,当执行miner.start()时,返回null。但其实miner已经执行,只不过它在等待你发送交易之后才会生成新的区块。也就是说执行了miner.start(),它一直在等待,这是发送一笔交易,再查看区块高度发现已经增加一块。  (注意这句话,我瞎搞的来源)

第二种解决方案

转载自: https://blog.csdn.net/wo541075754/article/details/79260040

之前的那篇文章也是搜集汇总了网上的各种解决方案,但在实践的过程中发现并不能有效的解决问题,只有发送交易才会自动挖矿。因此,针对此问题又进行了大量资料的阅读查阅,终于找到原因和解决方案。

原因及解决方案

出现此问题的原因在于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都会发现块在不停的增高。

第三种解决方案

感觉我的不能算解决 miner.start() 放回 null 的问题,不过让 account[0] 拥有了一定 ether ,方便后面测试用,挖不挖矿无所谓啦,

首先解锁 accounts[0] 和 accounts[1]

$ personal.unlockAccount(eth.accounts[0])

$ personal.unlockAccount(eth.accounts[1])

发起一笔 5ether 的交易

$ amount = web3.toWei(5,'ether')

$ eth.sendTransaction({from:eth.accounts[0],to:eth.accounts[1],value:amount})

这时候会显示失败

Error: insufficient funds for gas * price + value
at web3.js:3143:20
at web3.js:6347:15
at web3.js:5081:36
at <anonymous>:1:1

没事,继续发起一笔 0ether 的交易

$ amount = web3.toWei(0,'ether')

$ eth.sendTransaction({from:eth.accounts[0],to:eth.accounts[1],value:amount})

然后就成功了,成功了,成功了,前一笔交易居然成功了。

截图奉上

今天再试了一下,发现原来是我的挖矿速率太低,导致交易很久才被打包,平均10分钟挖一个矿(???难道我的私有链和比特币有某种神秘联系), 下面贴图

执行 eth.getHashrate(), 发现只有0,这是什么情况,google简单查了一下, 有说是ubuntu 问题,有说是 gpu 挖矿问题,有空才看看是什么情况,知道什么问题的大佬可以留言告诉我一下。

看到这里的,我建议,换台电脑试试

未完待续。

解决miner.start() 返回null相关推荐

  1. OPENCV3读取avi,解决返回NULL问题

    OPENCV调用cvCreateFileCapture返回NULL 最近在c++使用视频处理项目,当capture = CvInvoke.cvCreateFileCapture(file)获取视频信息 ...

  2. 解决 Tomcat 下 getInitParameter 返回 null

    解决 Tomcat 下 getInitParameter 返回 null getInitParameter 返回 null config.getInitParameter 返回 null 笔者报错时的 ...

  3. SkinMagic使用后按钮加自定义图标或菜单GetMneu返回NULL的解决方法

    我们在使用SkinMagic类美化窗口之后,在程序的InitInstance函数中会加入了SetDialogSkin函数, 但我们在使用时却发现,我们添加的菜单或者按钮图标无法正常显示! 一.出现这样 ...

  4. WORD Application.Documents.Open函数返回null的一种解决方法

    WORD Application.Documents.Open函数返回null的一种解决方法 参考文章: (1)WORD Application.Documents.Open函数返回null的一种解决 ...

  5. 解决mysql sum求和返回null问题或IFNULL应用

    问题描述:sum求和要求返回float(或 integer或double等)类型,但当数据库不存在任何符合求和记录时,sum返回null,报类型绑定错误异常(mybatis: org.apache.i ...

  6. Type.GetType()在跨程序集反射时返回null的解决方法

    在开发中,经常会遇到这种情况,在程序集A.dll中需要反射程序集B.dll中的类型.如果使用稍有不慎,就会产生运行时错误.例如使用Type.GetType("BNameSpace.Class ...

  7. 记录一次json_decode 返回NULL解决过程

    后台返回数据,前端收到数据之后,在调用json_decode 之后,返回null. 用json_last_error() 报错 3 在解码前,对字符串进行处理 $data = preg_replace ...

  8. oracle sum函数返回空,关于SQL语句中SUM函数返回NULL的解决办法

    SUM 是SQL语句中的标准求和函数,如果没有符合条件的记录,那么SUM函数会返回NULL. 但多数情况下,我们希望如果没有符合条件记录的情况下,我们希望它返回0,而不是NULL,那么我们可以使用例如 ...

  9. Flash的坑之ExternalInterface.call只返回null值的解决办法

    flash坑太多了,要确保能有效的使用ExternalInterface.call调用js的话,需要两个条件: 1.allowScriptAccess="always" 2.id= ...

最新文章

  1. Linux(64位)下OpenBabel 2.4.1、python2.7和Ipython实战(三)
  2. 背包问题概述(Lintcode- 562.Backpack IV问题解决)
  3. [数据结构] 希尔排序
  4. C#编程语言之获取文件编码格式(转载)
  5. java 程序片段_20个非常有用的Java程序片段
  6. image vb6 图片自适应_Python人工智能使用OpenCV进行图片形状的中心检测
  7. 查看APK中MD5签名的方法
  8. 高质量的期货研究报告去哪里找?
  9. VScode 常用快捷键
  10. python两列相乘_python – Pandas group by和sum两列
  11. Git配置安装使用教程操作github上传克隆数据
  12. Lucene使用与优化(转)
  13. youphp学习整理
  14. 【知识图谱系列】基于生成式的知识图谱预训练模型
  15. 手写数字识别中多元分类原理_如何验签名真伪?法大大手写签名识别功能来了!...
  16. NLP ---文本情感分析
  17. 未来计算机的新技术有哪些,科技改变生活!人类未来的十大高科技生活
  18. 阿里云购买云服务器流程及注意事项(新用户必看图文教程)
  19. 笔记本电脑坏了,昨天拿到鼎好去修。
  20. 哪款蓝牙耳机音质好又耐用?便宜耐用的蓝牙耳机

热门文章

  1. python做简单温度转华氏_python温度转换华氏温度实现代码
  2. 网络-UDP与TCP
  3. 数据库触发器调用python_python批量删除数据库触发器 | 学步园
  4. python制作个人信息管理系统_python实现简易学生信息管理系统
  5. 在线修改Schema
  6. Git--rebase合并提交
  7. 71. Simplify Path
  8. C#实现对文件目录的实时监控
  9. HDU 1160 FatMouse#39;s Speed DP题解
  10. win10 UWP 序列化