“区块链的共识机制是一个伟大的技术创新,填补了计算机专业领域的一个空白。如果中本聪愿意发表学术论文的话,这应该也是21世纪以来最重要的学术论文之一。”
一席话点出康烁是区块链忠实“believer”(信众)的身份。康烁是清华大学区块链中心高级工程师。
康烁神似段奕宏,因而常开玩笑自比为“计算机网红”,这是他幽默的一面;与此同时,他也恪守技术人的严谨性,推崇知识的普世传播:
“我愿意把自己对区块链共识的如滔滔江水般的无限景仰,统统分享给大家。”他在社群分享会开宗明义。
此次分享会围绕区块链共识机制展开。这是区块链的核心概念之一。但普通人并不关心这样的议题,技术理论的话术体系容易造成隔阂。
如何突破行业话语受众狭窄,并自然向外延伸?这背后的现实面,反映了区块链曲高和寡,难以进入公众领域。康烁希望做一点“小贡献”,跨越认知的藩篱:让信仰者恒远,让求知者追逐。
以下为康烁的区块链共识机制分享全程实录:
我们从最基础的区块链共识开始。区块链共识机制是什么?
区块链共识是一个非常重要的一个发明。我们,其实上次我在一个,就说清华内部的一个沙龙里边有经济学家。有党委书记,有计算机学家,大家对区块链的各种认识都不太一样,而且区块链呢,是目前来说呢,是争议最大的技术。大家知道就是人工智能啊,互联网其实大家没这么多争议,而区块链争议是非常大的。很多大佬这个发表的预言,结果转眼第二天就被打脸。
区块链共识呢,我只是从技术的角度来介绍,而不是从社会学或者从其他的角度去介绍。
区块链共识呢,他在计算机里边是一个伟大的创新。据说他的重要性在于什么呢,他构造的一种,无信任的一种合作方式。无信任的合作方式,也就是说大家谁都可以不相信谁,但是可以协作在一起完成一件任务。
这是非常重要的,从我们计算机的角度来讲呢,它的重要性在于,他的扩张性很强。大家可以想一下。任何人在任意时间内马上就可以组成一个团体,提供对外的合作。也就是说,这是一种无边界的合作方式啊,就是任何人都可以组织在一起马上合作,来完成一个事业。所以它的可扩展性非常强,所以这个是它非常有魅力的地方,也是为什么众多互联网大佬,还是一些投资大佬看好的原因。
了解了基础之后,我们很想知道:为什么会存在区块链共识这个机制?
我先从这个她的这个最简单的一个路径说起。比特币比特币它的定位是什么呢?它是一种数字现金。比特币白皮书标题上说它是一种点对点的数字现金系统。如果他是点对点的数字现金系统,我们可以相比我们实际用的纸币,他们之间有什么样的联系和区别。
数字现金,它相比我们的纸币来说,它的缺点就是双花问题。我们的这个纸币不存在双花问题,我有一百块钱纸币花了,我手里就没有了,但数字货币可不止这样。你如果把这个数字货币花了,其实你手里还有一串。因为数字货币就是个字符串,它是可以任意复制的。
接着上面来讲,怎么解决双方问题呢,我们就必须要构造一个顺序的账本,然后就可以解决双花问题。
而在 P2P 的这个网络里边构成一个顺序账本。这个就必须要用到区块链的共识机制在众多的这个互相不信任的计算机节点中达成共识。这就是区块链共识的一个来由,为什么要有区块链共识。
那当我们把区块链共识机制引入到计算机学科,它发挥了怎样的作用?
从计算机学科的角度来介绍,以前就是大家研究的都是中心化的服务器或中性化的集群。
从互联网最开始大家都是客户端从服务器获取信息到现在的云计算来说,大家也是从google 的服务器集群、facebook 或者阿里云这些服务器集群的云计算平台去获取服务。
但是,大家其实没有研究过,在 P2P 网络里如何提供服务——P2P 网络如何形成一个服务器集群。这是大家研究比较缺乏的,不管是这个学术界,还是搞工业界的工程师,大家都没研究过这个问题。
我们知道这个 P2P 网络最早是在这个1999年,Nasper 提供了 mp3 共享的下载。他是最早提供 P2P 网络的始祖。后来的 BT 和电驴都在 P2P 网络提供了下载服务。
但是,中本聪是第一个利用 P2P 网络来提供数字现金的。在P2P网络,提供这样一个服务,就像我第一个问题所指出的:人人都可以是服务的提供者,人人也都可以是服务的消费者。这个这个想象空间是无限大的,而且这个可扩张性非常强,就每个人都可以成为云计算服务器的一个节点。
所以说,中本聪发明的这个我们叫做中本聪共识,也有人叫做 pow。这个虽然只用在电子货币上,它未来的想象空间很大。因为有人会畅想在 P2P 网络下提供滴滴打车,基于P2P 网络来提供淘宝服务。想象空间无限大。
前面三个问题分别解释了:共识机制是什么?区块链为什么要有共识机制以及区块链共识机制在计算机学科中能发挥怎样的作用。那么有的朋友可能会想知道,能不能一句话说明:区块链共识到底做了什么事情?
我自己总结了下,区块链共识到底做了件什么样的事情?在P2P网络里边。随机的选择唯一一个节点作为记账节点。这就是他要做的事情。每次都是随机的选择。
其中包含了三个要点,第一个要点,是要在P2P网络里,达成共识。就前在共识这方面,计算机科学家研究了很多,但是没有研究 P2P 网络里边如何达成共识。
第二一定是随机选择也就说每次选择的记账节点都是不一样的。第一,这样的保证一种公平性。就是说不能每次都让你一个节点去结帐,这样这个节点,每次都能得到经济回报,其他人得不到。第二,随机选择保证一定的安全性。黑客想攻击,但是他不知道下一个记账节点到底是谁,所以他无所攻击。
第三,每次记账要选出唯一的节点进行记账,也就是说,只有一个人去记账,其他人只复制他的记账结果,这样才能达成这个统一的一个顺序账本。这样就达成了一个共识。
所以再次总结一下,就是说区块链共识做了这样一件事:在P2P的环境下。每次随机地选择出唯一的这个区块生产者作为记账节点。这就是区块链共识。
我们知道,区块链本身就是一种分布式的网络,那么它跟计算机中的分布式系统又有什么关系?
区块链是一种计算机技术,所以说我们需要在计算机科学里面给他找一个合适的位置,让大家搞清楚:它和计算机的一些技术有什么样的关系。
区块链是一种分布式系统。分布式系统的定义是指:这个分布在不同计算机上的软件或组件对外能够提供一致的服务,所以说区块链,他就是一个分布式系统。
分布式系统会有很多分类。我们在这里边会对它做这样一个分类。这个分布式系统可以分为存在拜占庭错误的分布式系统和这个不存在拜占庭错误的分布式系统。
什么是拜占庭错误?这个其实很容易理解,一支队伍里,如果有内奸。那我们就认为这个队伍或者这个系统,它是存在拜占庭错误的,就是内奸会发假消息。
如果是非拜占庭错误的分布式系统,我们认为这个队伍里可能有人能力弱一点,有人能力强一点,但是不存在内奸也不存在叛徒,这个就是非拜占庭错误的分布式系统。所以我们从拜占庭错误这个角度来把这个分布式系统的分为两类。
分布式系统的共识,大部分考虑的是非拜占庭错误的这个共识机制。比如说像 google 的集群,像我们常见的云计算平台,它也是很多计算机协作起来,对外提供计算对外提供服务。但是,我们从来不考虑这里边的节点是不是恶意节点,因为我们默认它这里边没有恶意节点。
但是区块链,它是一种存在拜占庭错误的共识机制的分布式系统。我们允许好人进来,也允许坏人进来,也就是说我们都不分辨好坏,任意节点想提供服务都可以加入到区块链网络里提供服务,所以区块链是一种拜占庭容错的分布式系统。
所以这个定义,就是区块链在整个计算机学科中给他的一个位置。
了解完区块链共识机制的产生、原理以及与分布式系统的关系之后,我们接下来将深入到对区块链共识机制的讨论,比如大家熟知的 POW 和 POS 等。
就是共识机制,大家说的比较多的,很多创业公司,包括很多科技界大佬,他们都会说自己对共识机制有什么样的创新。其实在共识机制上做创新是一件非常难的事情。
从我个人的角度来看,其实这个区块链共识机制,一共就只有两种技术路线,一种中本聪开创的中本聪共识,通过挖矿,通过 POW 提供的一种共识机制。
另外一种共识机制就是1999年OSDI会议上发表过一个叫PBFT算法,它是一种实用的拜占庭容错的算法。
但是需要补充的,第二种算法PBFT必须是在数目确定的节点中达到共识。也就说如果那你这个选取的节点的数目不确定,它就很难达成共识;所以它不太适用于我们的P2P网络,因为P2P网络允许任何节点随时加入,随时退出。任意时刻你没法确定全网节点的准确数目有多少。
现有的pos机制,包括这个eos的DPS机制,我们是把它划分到PBFT的技术路线。pos拥有币的人,比如拥有以太币的人,他可以通过自己的这个币经投票选举出下一个区块生产者。
但是,选举下一个区块生产者在计算机的实现里到底怎么做呢?就必须要用到PBFT算法也就是在数目确定了的这个节点中,把下一个区块生产者通过选举的方式选举出来。
为什么这个 DPoS 有21个节点,或者说其他采用了POS、采用 DPoS,都有数目确定的节点呢?这就是因为 PBFT 的技术路线只能在确定数目的计算机节点里边选出下一个区块生产者,所以这是DPoS不得已而为之,也是PBFT算法的内在缺陷所决定的。
那么,POS实现起来会存在怎样的问题呢?
POS机制最早是在比特币论坛里的一个网友提出来的。他提出:通过拥有这个数字货币人通过选举来把这个下一个区块生产者选出来。这样的话就避免了像比特币中挖矿,因为挖矿比较耗能量比较污染环境。
但是,POS本身那实现起来比较困难。因为它本身是依赖于PBFT 。但是PBFT又必须是确定数量,才能选举选出唯一的区块生产者。这个也容易理解:你连选举的总数目都不知道,你又怎么知道能达到二分之一的通过率或者三分之二的选举率呢?所以这个就是很难去做。
POS 最根本的问题在于什么呢?我们一般叫着无利攻击(nothing at stake)。我们可以这样来理解这个名词:主席台上有十个候选人,下面很多人给这十个候选人投票。如果你投票的话,就说没有任何成本。那很有可能呢,你是会对这个主席台上十个人都分别投一票,也就一个人投十票给每个人投上一票。这样的好处话就说,不管台上哪个候选人成为最终的获胜者,你都会有好处。
最终这会造成一种什么情况呢?也就是下边的投票人会对上面主席台10个候选人都投票。最后主席台上这十个候选人呢,每个人都可以获得全票。获得全票之后,这十个候选人也就他们得到的票数一模一样的,我们为没办法选择出唯一的一个区块生产者。这样就无法达成区块链共识。
这个就是POS中存在的一个根本问题,也就是无利攻击。这个问题的根源在于,你投票是没有成本的,如果你投票有成本,你就会慎重一点,不会为十个候选者,每人都投一票了。
(未完待续)