这个问题一直折磨了我两天,最后终于在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命令
2341

被折叠的 条评论
为什么被折叠?



