学区坊

比特币网络最了不起的发明:共识机制

2019-01-10  本文已影响2人  黄药师blockchain

这一讲我们要说的是比特币网络最了不起的发明,就是他的共识机制,这个是整个比特币网络的协作机制,也是之前其他尝试做电子货币的人没有解决的问题。

通过前面几讲我们了解了比特币的基本思想,也知道不仅仅是区块链,更是区块套。

每十分钟一次的选举

那么接下来的一个问题就是,这个账谁来记?在传统社会里,大家通过选举选出一个中心代表,比如银行,以后就相信他。比特币网络其实也是通过选举,只不过每十分钟选一次,在这十分钟里,全网所有cpu投入计算工作量来比赛算一道数学题,最先算出结果的那个节点获得记账权。由它来为整个网络添加新的一个区块,就像给账本添加新的一页。这个就叫做pow,proof of work。获得记账权的矿工会获得比特币奖励,所以类比挖金矿,也把竞争记账形象的叫做挖矿。虽然也是选举中心代表来记账,但是每十分钟选一次,而且是依赖于数学的随机性,所以,其实最后还是去中心化。

工作量证明最早被用在反垃圾邮件,很多人应该都收到过垃圾邮件吧,或者那些推销短信、骚扰电话之类的。在反垃圾邮件系统里,如果你要给一个人发送邮件的话,得先算一道数学题。它会花费一些计算时间和cpu资源,正常情况下感觉不到这个负担,但是通常同一个垃圾邮件会发给大量的人,所以这个负担就会指数级的上升,导致发送方无法承担这种计算负担,从而没法大规模的干这个事情,慢慢就知难而退了。

Hash碰撞挖矿规则

在比特币挖矿的时候,大家其实就是比赛谁先计算出新增区块里面的hash值。我们知道每个区块的hash值是把这个区块里的转账记录和上一个区块的hash值合到一起算一个新的hash值。计算一个hash值其实是很快的,之所以拿这个来比赛,是因为对这个hash值有特殊要求,必须得满足256位的前若干位为0,就像选手机号希望后面有好几个8一样。

而hash值的产生是随机的,为了让hash值满足要求,区块的内容就得不断变化,内容变了hash值才会变。但是总不能把交易记录给改掉吧,所以在区块里还有另外一个额外的附加数字,叫做nounce,只要不断改这个数字,整个区块的hash值结果就会变化。这个数字就是专门用来凑hash值用的。

2的256次方是一个非常庞大的规模,如果要求前面的0越多,满足要求的数字就越少。意味着要尝试的更多次才找得到,而且因为结果是随机的,所以除了一个个不断穷举改变那个随机数去试,没有什么更好的捷径。所以谁要是找到答案的话,就证明付出了足够多的CPU计算工作量。

为了保持工作量具备足够的难度,整个网络每隔2016个区块,也就是差不多2周的时间,就会根据过去2016个区块的平均出块时间,调整0的个数要求,从而调整计算难度。

顺便说一句,其实几乎没有10分钟准时挖出来的,实际情况是有时候快有时候慢,因为hash的分布是随机的,所以难度调整更多调整的是被找到的概率。一个矿工在十分钟内找到答案的概率,基本上等于他的矿机算力在整个全网算力中所占的百分比。目前全网用于挖矿计算每年消耗的电力,差不多相当于全球用电量的1%左右。

Pow的内涵:公平性、账本系统的安全

那么这么一种pow的工作量证明机制好不好呢,可以说他非常适合建立货币系统

首先他很公平:比如如果换成按ip地址来抽奖决定的话,那有些掌握了分配ip能力的人,就会很容易形成中心化的控制。而pow需要实实在在的cpu实力和电费的投入没法偷懒走捷径。

第二个,有利于网络更安全:对于一个货币系统来说,安全非常重要。这就很像我们换手机一样,你会怎样保存手机里的照片。一种就是找个信得过的大平台,比如百度网盘。如果这种方式不允许你用呢,去中心嘛。那我们就会多存几个地方,比如家里的电脑上、u盘里也拷一份锁起来,因为家里的嘛,这样我们才放心。去中心化网络下我们怎么才放心呢,那就是负责记账和保管的人一定要够有实力,pow机制下,cpu算力和电费投入是实力的象征,每十分钟都选出全网最有实力的计算机作为代表来挖矿,这样我们才放心把任务交给他。同时算法的随机性又确保不是简单的算力排名,不至于每次都是同一个人记账。

更稳健:通过动态调整难度,就不怕cpu速度不断变快,也不怕有人退出。就像亚当斯密说的那个看不见的手,只要退出的人够多,难度下降到一定程度就会有人愿意重新加入。就像看到今年猪肉涨价,明年就会有更多人养猪一样。而且既然是一个货币系统,那交易确认的时间就不能一会快一会慢,如果你都不知道过多久别人才会收到你的钱,就没法做交易了。所以他让整个网络非常的稳健有序。

 

最长链机制

说到这里大部分问题基本上就解决了,不过还差一点点,就是最长链机制。你稍微想想就会发现,矿工挖矿的时候,只要找到的hash满足前面0的个数要求就可以了。所以显然符合要求的答案不止一个,如果两个矿工同时挖到满足要求的区块怎么处理呢。这时候,比特币网络会采取暂时观望的策略,矿工可以随意选择在哪个后面继续挖矿,等到下一个区块出现以后,看哪个更长,所有矿工默认都在最长链的后面挖矿,这个就是最长链机制。其实这个也变相实现了少数服从多数的效果,而且是按cpu进行投票。

说到这里,比特币网络的核心记账思路就讲完了,总结一下,他通过hash算法将区块之间,就像箱子打包一样一个套一个,形成反复增强。网络每隔十分钟选举一次,由第一个率先找到答案的矿工获得记账打包权,并获得比特币奖励。整个网络通过调整hash值前0的个数的要求,来动态调整难度。就像一只无形的手,确保总是最能代表网络整体实力的cpu获得记账权,而且让整个网络更加安全、稳健,同时通过最长链机制变相的实现了少数服从多数的cpu民主投票。

如果用一句话来概括的话,比特币的共识机制,就是基于对数学算法的信任,通过每十分钟微观的中心化选举和民主投票,实现了宏观的去中心化治理。

上一篇 下一篇

猜你喜欢

热点阅读