以太坊私有链重启后账户余额清零

以太坊私有链重启后账户余额清零


这个问题一直折磨了我两天,最后终于在luo同学和lin同学的帮助下解决了该问题。

问题描述:

使用 geth 搭建私有链,搭建完后新建账户并通过 miner.start()挖矿获得以太币。
查询账户余额确实增加了。但是关闭geth控制台重启后再查询账户余额清零。

挖矿后查询余额结果
重启后查询余额结果
这个问题很奇怪(也可能是因为这问题太傻了),我百度了两天也没搜到是什么原因导致的。

问题原因

最后我们发现在启动私链的时候开启了控制台日志时存在某些问题,在启动私有链时每次都有一个这样的警告:

在这里插入图片描述
查了一下,这条警告的含义是区块头状态丢失,因此后面开始回滚到前一个区块一直到创世区块。因此原因应当是:当时区块虽挖了矿,但没有将信息写上去,然后在退出geth时采用了不合适的方式使得数据没有保存,例如直接点了窗口的等等。

可以通过日志来确定是否为这一问题:<data_dir>/geth/chaindata/LOG。如果日志以下面的语句为结尾那么应当是相同的问题。

xx:xx:xx.xxxxxx db@close closing
xx:xx:xx.xxxxxx db@close done

问题解决

参考https://ethereum.stackexchange.com/questions/43231/geth-rewinds-chain-on-every-startup中的回答,问题的解决方式也很简单:

1.在geth控制台输入以下命令:

`geth removedb

2.重新初始化创世区块

geth init genesis.json

3.等待节点完成同步

4.以合适的方式关闭geth控制台:ctrl+c或者输入exit命令

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值