我们知道了信息计算Hash打包的过程:交易记录、时间、账本序号、上一个Hash值。也知道所有的计算和存贮是需要消耗计算机资源。在中本聪的设计里,完成记账可以获得系统给与比特币奖励,这个过程也就是比特币发行过程,因此把记账成为挖矿。记账工作因为记账是有奖励,每次记账都可以为自己增加一定个数的比特币,因此大家争相记账,当然能也就引发了问题:出现记账不一致的是后,系统引入工作量证明来解决这个问题,规则如下:
1.在一段时间内,只有一个人能记账成功。
2.通过解决密码学难题竞争获得唯一记账权3.其他节点复制记账结果不过在进行工作量证明之前,记账节点会做进行如下准备工作:1.收集广播中还没有被记录账本的原始交易信息2.检查每个交易信息中付款地址有没有足够的余额3.验证交易是否有正确的签名4.把验证通过的交易信息进行打包记录5.添加一个奖励交易:给自己的地址增加12.5比特币如果争夺记账权成功的话,就可以得到12.5比特币的奖励。工作量证明每次记账的时候会把上一个块的Hash值和当前的账页信息一起作为原始信息进行Hash。为了确保10分钟前后只有一个人可以记账,就只有提高记账的难度,用Hash的结果必须以若干个0开头。为了满足条件,进行Hash是引入一个随机数变量。用伪代码表示一下:1.Hash(上一个Hash值,交易记录集) = 456635BCD2.Hash(上一个Hash值,交易记录集,随机数) = 0000aFD635BCD改变Hash的原始信息的一部分,Hash值也会不断变化,因此在运行Hash的时候,不断改变随机数的值,总可以找到一个随机数使得Hash的结果以若干个0开头,率先找到随机数的节点从此获得记账的唯一记账权。验证在节点成功找到Hash值之后,会马上对全网进行广播打包区块,网络的节点收到广播后会对其进行验证。如果验证通过,表明已经有节点成功解密,就不会在竞争当前区块,而是选择接受区块,记录到自己的账本中,进行下一轮竞争猜谜。网络中只有最快解密的区块才会添加到账本中,其他的节点进行复制,确保整个账本的唯一性。如果节点有作弊行为,会导致网络的节点验证不通过,直接放弃其打包的区块,也无法记录到总账本中,那么作弊节点的消耗成本就白费了。因此矿工自觉的遵守比特币系统的共识协议,也确保整个系统的安全。这个问题就好像你去工地搬砖,搬完一天砖,包工头问你你怎么证明自己一天在工地搬砖呢?