今天继续写,开始挖矿,上次提到如果不挖矿,你什么都得不到,你需要付出劳动,在任何时候都不要忘记这世上没有掉馅饼让你白吃的事,包括数字世界。
什么是挖矿
我们在区块链这个框架上完成数据的记录,不同于普通的文件系统,只是把一份文档,一个数据,甚至一大块数据库记录到某一个指定的文件,给文件命名。区块链的文件系统,有些类似于大型数据库的数据文件,只不过并不是普通的顺序存储,而且文件容量会随着区块的增多逐步递增。先了解下数据存储结构吧
这里不讲太深,包括数据结构、什么哈希,暂时用不到,看得多了反倒有些糊涂,不利于快速学习。
主要是:区块头+交易信息
这里不得不提到“区块高度”这个概念
区块高度用来丈量某一个区块到第一个区块之间的距离。通过区块高度,可以精确地描述出某一区块在链上的位置,相当于给了区块一个“坐标”。就好比你去银行办理业务排号,每个人会给你分配个预约的顺序号码,不过我感觉更恰当的比喻,应该是像象棋或者围棋棋盘的编号,横向用ABCD这样的英文字母,纵向用1234这样的阿拉伯数字,通过号码能唯一且快速定位。所以,围棋选手在听棋时,只要知道编号数字,就可以快速判断出落子点。
但是,很重要,但是,区块的高度,并不是唯一能定位区块的信息,因为有可能会出现这种情况,两个区块同时生成,生成的时候计算出来的高度完全一样,所以在区块和主链对接时,还需要进行高度+哈希+其他算法的修订。简单的书,是区块高度和区块哈希拼接生成可以检索的key。
还有一说,是高度一样的话,出现“分叉”,这个概念我至今没搞明白,希望各位同学给我一个指点。
每个区块生成后,后续的区块继续向上叠加,高度增加。
继续说挖矿吧,每次挖矿,相当于一次数据记录,无论有没有交易需要记录,只要挖矿,就会生成一个区块,大不了里面什么也不记。
挖矿方法:
miner.start(1)
这里的参数1,代表启用一个处理器线程,如果不填写,默认启用CPU全部多核线程。当然如果在自己服务器上跑私链,几个都无所谓。
挖矿的奖励默认发放到你当前的账号下,如果多个账号,上一节提到过,我们设置了u1,u2,可以通过方法来设定发放的目标账号
eth.setEtherbase(u2)
随着挖矿工作的进行,你将会得到越来越多的报酬,因为你付出劳动了。
查看你的收入(以太币)
eth.getBalance(u2)
这时候看到设置变量的好处了吧。不用写太多的账号数组。