记账
记账会经过以下几步:
- 收集广播中还没有被记录账本的原始交易信息
- 检查每个交易信息中付款地址有没有足够的余额
- 验证交易是否有正确的签名(如上一篇所说的加密技术和数字签名)
- 把验证通过的交易信息进行打包记录,形成区块
其实记账的工作难度不大,如果仅仅是完成这样的事情,那么很多人都能做到,并且不能保证10分钟才写入一个区块。
那么为了达到提高难度,满足要求,就要完成工作量证明
工作量证明主要就是计算hash值,没记一个块,都要把上一个块的hash值和当前的账页信息放在一起作为原始信息进行hash。而为了保证难度,比特币系统需要hash的结果必须是以若干个0开头的数据。
为了能达到以若干个0开头,在hash的时候引入一个随机数变量:
Hash(上一个Hash值,交易记录集,随机数)
不断的改变随机数的值,总可以找的一个随机数使的Hash的结果以若干个0开头,率先找到随机数的节点就获得此次记账的唯一记账权。
这个计算量是多大呢?
Hash值是由数字和大小写字母构成的字符串,每一位有62种可能性(可能为26个大写字母、26个小写字母,10个数字中任一个),假设任何一个字符出现的概率是均等的,那么第一位为0的概率是1/62。n位就是62的n次方。
全网验证
当某个节点完成计算,会想网络中广播,网络的节点收到广播打包区块,会立刻对其进行验证。一当通过验证,表示节点成功挖矿。
同时其他节点不再竞争当前区块的记账工作,而是选择接受这个区块,记录到自己的账本中,然后进行下一个区块的计算。
网络中只有最快解谜的区块,才会添加的账本中,其他的节点进行复制,这样就保证了整个账本的唯一性。