区块链本质论

区块链被大家关注是件好事情,但非常不希望看到各种区块链项目盲目上马,造成各种社会资源的浪费。区块链技术本身尚在发展阶段,还有很多核心技术问题有待突破,对区块链技术本质还充斥着各种不同的理解。后面几天我们将就区块链的计算本质,技术难点,业务调整,社会影响等方面和大家分享。

(2) 共识机制

提到区块链,Consensus 是其中最为大家关注的一个新概念,被翻译成共识机制,或共识算法,或共识协议。这个东西到底是干嘛的呢?共识机制本质是一个解决方案,当一个分布式系统里面出现不一致的情况时,我们如何最终裁定一个唯一的大家公认的结果,消解这个不一致性。注意了,这里共识仅仅指分布式系统里面的一个算法方案,和我们通常意义上的舆论呀,社会认同呀,组织关系呀什么的,毫无关系,就像是雷锋和雷锋塔一样。别被忽悠了 ...

为什么区块链会需要共识机制呢,究其根本,源自于上一篇讲到的区块链的计算本质。

王嘉平:简版 区块链本质论 (1): 计算本质 zhuanlan.zhihu.com简版 区块链本质论 (2): 共识本质

因为在区块链系统中,计算是通过全网各方接力完成的,在去中心化的区块链网络中,并没有一个总指挥来分派这个接力过程,那么即使没有恶意攻击,也难免会发生己方争抢接力的情况,从而导致整个系统中出现多个不一致的接力结果。而共识机制所起得作用,就是在这个时候最终认定,哪个结果该留下来,后面按这个接着走;哪个结果会被抛弃。

对于这个问题,很早在分布式系统领域,为了解决容错问题,早有答案,并被归纳为一个叫做拜占庭将军问题 (The Byzantine Generals Problem),其对应的有效解决方案成为拜占庭容错 (Byzantine Fault Tolerance),就是经常听到的 BFT。早在 2007 年,这个问题就有了高效的算法 (PBFT),但是为什么 2008 年末,中本聪发表的比特币系统设计方案中却采用了完全不同的设计,而没有采用 BFT 类的算法呢?

我们先看看容错是什么?假设有 100 个传感器,在观测比如机器是否正常运转。那么如果有一部分的传感器坏了,给出了不正确的观测值,我们该如何最终推断正确的观测结果呢?这个就是容错。当然,逻辑上的解法正如你现在直接想到的,少数服从多数,事实上也确实如此简单。当然实际的算法中要互相传递和迭代最终认定的结果 (基于数字签名),要限制结果认定的时间期限 (所谓的 epoch),要处理多数不够多的情况等。

从上面的例子可以看到,在 BFT 中,少数服从多数的这个数,来自于多少个共识的参与者。这个参与者的总是必须是预先设定好的。这意味着谁是参与者,得有个预先协商和设定的过程,在区块链系统中,有个叫法,叫做联盟链或者许可链 (permissioning blockchain system)。这就是为什么叫做拜占庭将军问题,因为你得先是一个将军,那么问题来了,谁来批准你成为一个将军呢?

这就是比特币系统一开始不采用 BFT 算法的本质原因。在比特币系统中,并没有一个参与者的批准过程,任何人都可以直接参与这个共识过程,即所谓的公链或者叫无需许可链 (permissionless blockchain system)。这是,我们如何利用少数服从多数呢?我们连总共有多少个参与者都不知道。这个部分就是比特币系统设计最耀眼的部分。很多人不明白这件事情,就觉得比特币系统好像就是一堆现有技术的堆砌,没什么技术含量。

在比特币系统中,少数服从多数的这个数,不再是多少个共识的参与者,而是一次次的哈希部分碰撞的计算结果。然后结合最长链规则来形成共识,即所谓的工作量证明 (Proof-of-Work)。从这里大家可以看到,工作量证明方案解了一个比拜占庭将军问题更难更挑战的问题,就是在参与者集合未知的情况下,实现共识的一致性。 当然算法具体实现还有不少细节,工作量证明的难度调整呀,一致性后置的最长链原则,以及后面被改进的最重子树的原则等。

接着有了所谓的资产证明 (Proof-of-Stake) 共识系统,利用资产的数量来定义这个少数服从多数的这个数。利用资产的数量先行定义 BFT 共识算法中所需要的这个预设的参与者集合。这样,也可以实现无需许可链。也是一个不错的办法,只是,一开始初始的资产从何而来呢?

最后提一句性能,也就是吞吐量的事儿。很长一段时间大家以为吞吐量由共识算法决定,然后事实上并不是这样。上面提到的集中共识算法,都可以设定任意的块大小和出块间隔,来现实需要的吞吐量和块确认延迟。只要,整个底层网络有足够的带宽。下一篇,我们会着重聊聊这个事情。

这个部分扩展阅读

王嘉平:区块链公链如何才能快起来 (一)zhuanlan.zhihu.com简版 区块链本质论 (2): 共识本质

作者简介
国际计算机网络系统顶会 NSDI 2019,发表了王嘉平博士团队关于高性能并行分片区块链系统的论文,这是中国人自主研发成果在区块链核心算法领域首次得到国际专家和同行的认可。王嘉平博士原为微软研究院主管研究员,专注分布式系统,计算机图形学和视觉以及用于机器学习的 GPU 集群等领域的研究,有数十项研究成果发表于 ACM SIGGRAPH/ToG 顶级国际期刊,已授权的美国专利十项余项。他师从沈向洋博士 (现微软全球执行副总裁),在中科院计算所获得博士学位。他的博士论文获得 2009 年度全国百篇优秀博士论文奖,是该年唯一一名计算机科学专业的获奖者。

来源链接:mp.weixin.qq.com