1.5 比特币的原理-为什么记账(挖矿)
之前在将账户如何验证的时候,其实是把账户地址,交易信息进行hash打包的过程。这个过程是需要消耗计算机资源的,既然要消耗资源,那么节点为什么要参与记账呢。在比特币系统里面,完成记账的节点,他是可以获得一定数量的比特币奖励的,这个奖励其实也就是比特币的发行过程。
- 规则
由于记账是有奖励的,每一次记账,是先发行一定数量的比特币到记账的账户,当前的一次记账的奖励是12.5个比特币,这样的话,就会出现大家都会去争相记账,如果大家同时去记账的话,就会引起一个问题,就是出现记账不一致的情况,这样的话必须有一个规则来限制。
这个规则是这样的:
- 一段时间只能有一个节点记账成功 (这个时间会和第二点的密码学难道相互影响)
- 通过解决密码学难题(即工作量证明)竞争获得唯一记账权
- 其他的节点只是复制计算结果
由于在解决密码学难题的时候有一定的随机性,这个记账又可以获得奖励,因此大家形象的把记账的过程,形象的成为挖矿
- 工作量证明
之前在将账本记账的时候降到是把上一个hash值和这段时间的交易信息一起作为原始信息进行hash,如果只是这样的话,显然每个人都可以轻松的完成记账,而为了保证一段时间内,只有一个人能记账的话,就需要提高记账的难度。
比特币里是这样规定的,每次hash运算的hash值,必须满足一定的条件,即必须以n个0开头,为了满足这个条件,在计算hash的时候,就必须引入一个随机值变量(之前讲到hash函数任何一个微小的参数变化都会使得结果变化很大),因此在计算hash的时候,不断的去改变这个随机数的值,每次都可以得到一个全新的hash值,只要不停的尝试改变这个hash值,总能找到符合条件的结果
image.png
现在的电脑通常要得到一个四个0开头的hash值,通常需要一两分钟的时间,由于现在参与挖矿的计算机非常多,算力很大,所以现在的挖矿难度,是以18个0开头,率先满足这个条件的节点,就可以获得唯一的记账权
- 交易的记录集
交易的记录集是这样得到的:
- 首先会收集广播中还没有被记录账本的交易
- 然后会进行交易的有效性验证(验证签名,余额是否足够)
- 添加一笔给自己转账的交易(挖矿奖励)(添加一个给自己的地址转12.5(现在)的比特币,如果一个节点能够比其他的节点更快的人找到这个hash值,那么整个交易就会被打包成区块到区块链中,打包的节点就获得了这个奖励)
- 工作量分析
image.png
以上是一个真实的区块hash的例子,hash值是一个16进制的数,每一每得到一个0位,他的概率是1/16,得到18个0,他的概率就是1618,这个概率是非常小的,所以难度实现相当大的。
现在已经没有单独的节点(旷工)来挖矿了,因为基本办不到,一般都是多个节点组成矿池一起挖,然后按照算力进行收益的分成。
在将一个和技术无关的话题,从经济角度来讲,只要挖矿还有收益,总会有新的旷工参与来加剧竞争,提高算力的难度,而挖矿就会消耗更多的算力和电力,而最终这个成本是接近收益的,这是一个经济学的角度 我们国家由于电力成本比较低,所以收益相对较高,所以中国的算力会占据整个节点的一半以上。
- 总结
因为记账是需要消耗资源的,因此比特币系统里面会奖励参与记账的人,同时又引入了工作量证明来引入记账冲突的问题