我在上一篇“区块链到底是怎么运行的”一文中,提到了“打包交易”和“广播交易”这两个概念,其实,以上谈到的两个内容正是区块链最核心的技术内容之一:共识机制。
在今天的文章中,我们就展开聊一聊区块链共识机制到底是什么,以及区块链的共识过程到底是怎样的。
分布式系统的经典问题: 拜占庭将军问题
拜占庭将军问题其实是虚构出来的一个故事,是为了方便通俗地介绍分布式系统所面临的难题。在常规的分布式系统中,都有一个默认的假设,那就是分布式网络中的所有节点都是可信的,也就是说这些节点都是自己人,不会发虚假信息。而拜占庭将军问题之所以复杂主要就是因为每个节点都有可能是不可信的,他可能已经做了叛徒,或者被敌人挟持从而会谎报军情。拜占庭将军的问题就是要解决如何在允许有少部分人不可信的情况下,去达到最终的分布式一致性,即如何在不受这些不可信节点的影响下来达成共识。
区块链本质上也是分布式系统的一种,其共识机制也是为了上述问题而提出的解决方案。
什么是区块链共识机制?
共识机制是区块链是核心的组成要素之一,它决定了区块链的业务吞吐量、交易速度、不可篡改性、准入门槛等等,是最为关键的技术要素之一。要理解区块链共识机制,首先就需要理解区块链共识机制到底解决了什么问题。共识机制主要解决了两个问题:1. 谁有权利;2. 如何防止作弊。上一次我们构造了一个中心化记账的场景,在这个场景下,记账问题其实可以简化为大家信任中心记账者即可。然而在分布式记账的场景下,问题更为复杂。首先,大家面临的最大问题是谁有权利记账,其次是如何避免记账者作弊。毕竟,谁都有权利记账,也就意味着谁都有可能作弊。以上两部分共同构成了区块链共识机制。
最经典的入门型共识机制:PoW 工作量证明PoW (Proof of Work)
工作量证明可以解决上述的两个问题,在上一篇文章中,其实我们已经悄悄讲解了一点 PoW 共识机制,你还记得上文提到的“24 点”那个游戏吗?“24 点”其实是尽可能随机地选取系统中任意的节点来规避作弊者,这个方案的实践其实就是 PoW 共识机制。
产生记账者的随机性其实来自于谁最先计算出 24 点的答案,这个问题可以简化成谁拥有的计算资源更多,谁就拥有整个系统的最大概率的记账权。一旦这个概率超过一半以上,那么这个系统就有一定的中心化风险。
如何理解上面一段话呢?举个例子,李四家发明了一种算盘,可以快速计算 24 点答案,比起其他人掰手指头,李四家总是有很大的概率拿下记账权,换句话说,也就是李四和全村其他所有人竞争,相当于算盘对全村其他人手指头的竞争。如果算盘足够强大,就能有一半的概率获得记账权,那么李四个人的诚实性,就成为了系统的唯一破绽。
比如李四在第一次记账时篡改部分交易,第二次还是他记账,还继续篡改交易,那么两次修改如果逻辑自洽的话,是可以形成假账的,这就是所谓的中心化风险。所以在 PoW 这种机制中,计算资源(又称算力)是决定记账权的唯一因素。与之对应的,便是计算难度。计算难度又称作挖矿难度,计算难度是区块链为了控制产生答案的速度,比如平均 10 分钟就有一个答案产生,平均 2 分钟一个答案产生。在上述场景中,因为李四有了算盘,强大的计算资源突然加入以后,肯定会让整个系统的产生答案的速度变快很多,作为系统本身会自适应,将难度提升,降低答案产生的速度。
上面介绍了这么多,其实是想引出另外一个问题,PoW 到底是如何避免作弊者的呢?答案就是计算资源(算力)。设想,如果一个作弊者想篡改交易,首先得获得记账权。而影响记账权的唯一因素只有计算资源(算力)的大小,如果想篡改交易,只能投入大量的计算资源与整个系统中其他所有人进行对抗,这是十分困难的,尤其在整个系统有一定基础计算资源(算力)的情况下。
假设作弊者的计算资源(算力)占整个系统的 30%,那么连续两次获得记账权的概率是 9%,看起来作弊的可能性还是挺高的,如果是连续 6 次获得记账权呢?概率直降到万分之七。
在比特币中,一笔交易想要被最终确认生效,必须等这个交易所在的区块之后的连续 6个区块都被确认了才能生效,只有这样它被篡改的可能性将越来越小,最后变得几乎不可能被篡改。这也是区块链不可被篡改说法的由来。试想,如果任何作弊者花了大量的成本获取了系统 30% 的计算资源(算力),最后只有万分之七的概率获得篡改的可能性,比起作弊,还不如诚实记账的收益高。
总结一下,今天带你了解了区块链的共识机制,也顺便浅谈了拜占庭将军问题,介绍了区块链的入门共识机制 PoW,它其实也是目前区块链领域使用最广泛,应用最成熟的共识机制。当然今天的内容主要还是概念表述,具体技术实现细节后面再给大家分析。
|