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

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

    • 问题描述:
    • 问题原因
    • 问题解决

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

问题描述:

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

以太坊私有链重启后账户余额清零_第1张图片
以太坊私有链重启后账户余额清零_第2张图片
这个问题很奇怪(也可能是因为这问题太傻了),我百度了两天也没搜到是什么原因导致的。

问题原因

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

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

可以通过日志来确定是否为这一问题:/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命令

你可能感兴趣的:(搭建以太坊私链)