首页 > 行业资讯 > 柏链道捷康烁:区块链共识到底牛逼在哪?

柏链道捷康烁:区块链共识到底牛逼在哪?

发布时间:2018-09-18 00:00:00

区块链的共识机制是一个伟大的技术创新,填补了计算机专业领域的一个空白。如果中本聪愿意发表学术论文的话,这应该也是21世纪以来最重要的学术论文之一。”

一席话点出康烁是区块链忠实“believer”(信众)的身份。康烁是清华大学区块链中心高级工程师、柏链道捷 CTO。

康烁神似段奕宏,因而常开玩笑自比为“计算机网红”,这是他幽默的一面;与此同时,他也恪守技术人的严谨性,推崇知识的普世传播:

“我愿意把自己对区块链共识的如滔滔江水般的无限景仰,统统分享给大家。”他在 DOGi 社群的分享会开宗明义。

此次分享会围绕区块链共识机制展开。这是区块链的核心概念之一。但普通人并不关心这样的议题,技术理论的话术体系容易造成隔阂。

如何突破行业话语受众狭窄,并自然向外延伸?这背后的现实面,反映了区块链曲高和寡,难以进入公众领域。康烁希望做一点“小贡献”,跨越认知的藩篱:让信仰者恒远,让求知者追逐。

以下为康烁的区块链共识机制分享全程实录:

我们从最基础的区块链共识开始。区块链共识机制是什么?


区块链共识是一个非常重要的一个发明。我们,其实上次我在一个,就说清华内部的一个沙龙里边有经济学家。有党委书记,有计算机学家,大家对区块链的各种认识都不太一样,而且区块链呢,是目前来说呢,是争议最大的技术。大家知道就是人工智能啊,互联网其实大家没这么多争议,而区块链争议是非常大的。很多大佬这个发表的预言,结果转眼第二天就被打脸。

区块链共识呢,我只是从技术的角度来介绍,而不是从社会学或者从其他的角度去介绍。

区块链共识呢,他在计算机里边是一个伟大的创新。据说他的重要性在于什么呢,他构造的一种,无信任的一种合作方式。无信任的合作方式,也就是说大家谁都可以不相信谁,但是可以协作在一起完成一件任务。

这是非常重要的,从我们计算机的角度来讲呢,它的重要性在于,他的扩张性很强。大家可以想一下。任何人在任意时间内马上就可以组成一个团体,提供对外的合作。也就是说,这是一种无边界的合作方式啊,就是任何人都可以组织在一起马上合作,来完成一个事业。所以它的可扩展性非常强,所以这个是它非常有魅力的地方,也是为什么众多互联网大佬,还是一些投资大佬看好的原因。

了解了基础之后,我们很想知道:为什么会存在区块链共识这个机制?


我先从这个她的这个最简单的一个路径说起。比特币比特币它的定位是什么呢?它是一种数字现金。比特币白皮书标题上说它是一种点对点的数字现金系统。如果他是点对点的数字现金系统,我们可以相比我们实际用的纸币,他们之间有什么样的联系和区别。

数字现金,它相比我们的纸币来说,它的缺点就是双花问题。我们的这个纸币不存在双花问题,我有一百块钱纸币花了,我手里就没有了,但数字货币可不止这样。你如果把这个数字货币花了,其实你手里还有一串。因为数字货币就是个字符串,它是可以任意复制的。

接着上面来讲,怎么解决双方问题呢,我们就必须要构造一个顺序的账本,然后就可以解决双花问题。

而在 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 中存在的一个根本问题,也就是无利攻击。这个问题的根源在于,你投票是没有成本的,如果你投票有成本,你就会慎重一点,不会为十个候选者,每人都投一票了。

接下来这个问题,相信是很多听众都很关心的。区块链的共识机制在安全上有什么风险?为什么是51% 的算力可以攻击区块链。


区块链的安全是非常有意思的,与传统的安全不一样。像我们刚才介绍的 google 服务器的安全,传统的网站,我们只是在计算机技术的角度去看问题。

区块链的安全结合了博弈论——坏人为什么不攻击我们区块链,或不攻击我们的比特币呢?是因为如果他有这样的算力可以攻击区块链或比特币网络的话,他可以用这样算力去挖矿,挖矿得到的收益远比去攻击整个比较比特币网络所得的利益更多。

从博弈论的角度来讲,比如著名的囚徒困境的博弈论问题,两个犯人互相招供,然后去得到减刑。

事实上,区块链的安全大家可以看成是一种互不信任的多方合作的结果。我们比特币网络的每个矿工,相互都不信任,但每个矿工都是自私而理性的,他们只是追求自己的利益最大化。他们通过这样的合作,然后产生了比特币网络。其实它就是一种典型的多方合作的一种博弈论的场景。

但是如果有矿工超过了51%的算力的话,也就是说,他有一半的几率都能挖到一个块的话。理论上,它可以控制整个网络。比如第一块是这个控制51%的坏人挖到的;第二块可能是好人挖到的。但第三块如果还是坏人挖到的,这个坏人他就拥有了两个块。有两个块的话,他如果一次全释放出来,就构成了一个最长链。好人挖到的那一块儿就会被废弃。

所以理论上只要你掌握了51%的算力,只有你自己能得到回报,其他掌握49%算力的人,什么回报都得不到,因为你总能构成一个最长的链,这样会把49%的人挖出的块废弃掉。

我们听说还有一种有向无环图的区块链,它是如何实现的?


传统的区块链是一种顺序的结构。它就是一个链表,一个接一个,有顺序的。但这种结构的致命弱点在于:这种串行的结构导致性能比较慢。现在大家都说区块链的性能比较慢,TPS 比较慢。像比特币的话,几分钟才能完成一个交易确认。以太坊她的交易确认也很慢。

区块链共识的本质是在 P2P 网络中随机的选出唯一的节点作为这个记账者,这是区块链共识要做的事情。而有向无环图的特点在于:我并不是唯一的节点,我同时可以多个节点并行的记账,这样的速度就比较快了。

所以有向无环图区块链不是链表式的结构,它是图结构。它只有一个方向,从前往后,也不能重复往前,它里边是没有循环,没有环路,就是叫做有向无环图。它的好处在于,允许分叉允许,同时有多个节点记账,这样提高了效率。

但是多个节点记账就会有冲突。比如隔一段时间就需要解决这些交易冲突,因为这些冲突里面可能存在双花的问题。

在未来,区块链共识机制还能带来怎样的想象空间?


从共识机制的角度来讲,我比较客观的来说,从计算机角度来讲,这个创新都是很难的。中本聪共识是一个非常大的创新。而我说的第二个 PBFT 路线1999年出来的一种算法。大家为了解决中本聪共识性能比较弱的问题,所以又把99年用过的 PBFT 算法拿来用。就 PBFT 这种算法呢,缺点是要在数目固定的节点中达成共识。但是他的优点相比于中本聪共识来说,性能是非常快的。

在未来,我认为区块链共识机制的发展方向,必须是要加入人为治理——也就是当前 eos 公链的方向。你不能完全靠纯计算机的技术去做这件事,你有计算机的区块链共识机制,你还需要加入一些人为的管理制度。人为的管理制度是未来要在区块链共识加入的东西。

所以把今天晚上的这个话题再总结一下,区块链共识机制伟大之处就在于,它是一种无边界的协作组织,世界上任何地点的任何人,都可以在任何时刻加入一个组织,然后做自己份内的事儿,然后还能得到份内工作的回报。我觉得我自己也无法想象区块链未来会带来多大的变革。

最后,我要表达一下自己的心情。中本聪发明的共识机制让我对中本聪的崇拜之情如滔滔江水一样不绝。我是坚定的中本聪的粉丝,我认为中本聪发明的这个共识机制很伟大。在计算机这个学科里,他是一个分布式系统,一个创新。但是它未来带来的社会意义,带来的经济价值,我觉得这是无法估量,是任何人目前都很难去估量的价值。

以下是DOGI社群的用户Q&A 提问:

@贾霸:既然提到了人治要素,但很多人觉得不符合区块链代码即法律的精神,你怎么看?

Code is Law是应该是以太坊最早提出的。其实这是不可避免的。比如,我现在正在做一个股权激励的区块链项目,大家试想一下:老板可以发数字货币给你,但老板为什么发数字货币给你呢?肯定是有这个绩效、KPI什么的,它就是一种人为治理,所以你是避免不了的。

包括现在做的币改和链改,都要合规。合规就是要符合国家的法律,这也是加了认为治理的。

包括我们的区块链节点上的软件有了bug,要不要升级啊,或者说区块链上一些参数要不要修改。这些都是需要人来讨论的,所以说区块链的人为治理是完全不可避免,我们只能在黑暗中不断去探索,探索什么是适合区块链的人为治理制度。

@给岁月以文明,给时光以生命:区块链里所要的共识机制真的适合咱们这个社会吗?

区块链的共识机制分两层。第一层是纯技术方面,当然会像我们需要的方向去发展。

如果从人为治理角度来讲,这个区块链的共识机制是否适合于我们的社会?我觉得,现在谁也看不清,谁也说不出来。因为我们是第一个吃螃蟹的人,我们的治理制度不断改革,包括我们柏链道捷做的币改,相当于当年的股改一样。我也不知道未来是什么样子,但是我要不断去实践。这个是在实践中慢慢探索,摸着石头过河的事情。因此,我们没法下断言:这个区块链共识机制是不是适合我们这个社会。

@拓荒者Darren:我问一个不是技术上的问题,区块链技术是个很可能颠覆历史的技术,可以运用到各个方面,但很多人借着区块链的名头,各种敛财和诈骗,在这种情况之下,您认为怎么样能让区块链技术普及,让更多人真正的理解到他的不同之处,这才是比较有意义的。

对这个问题呢,就很多人会有不同的看法,会有很多人提出不同的思路。我还是以币改为例,它类似于当年的股改,也就是说,我们会成立一个权威的上币委员会。对每个上币的背后团队,对他们进行审核,做一个背书,这样的话,我们会避免一些骗子圈钱。我们要确保一些真正想干事有实力的团队,可以做更有意义的事。这是我们的一个治理思路,当然还有其他的一些治理思路。

@sunbo:之前听说BTC能买星巴克,现在去买的话,星巴克咖啡36元,GAS费可能就要10几元,而且不是秒付,需要等走完链,现在的BTC有实际应用价值么?

现在有稳定币,USDT,他可以锚定一美元的。这个肯定是可以用于现实场景的支付的,因为它和法币的价值一样,都是非常稳定的,至于支付速度,我觉得这倒不是问题,技术上是可以解决的。现在也会有数字货币的pos机。我听说在日本澳大利亚就有。

@给岁月以文明,给时光以生命:比特币拥有全网统一账本,需要全网共识,那么凡事真的需要全网共识吗?局部的,分散的会不会更好?

是否需要全网的共识,这取决于一个重要性。如果你不是那么重要,一部分节点达成共识就可以了。事实上,现在也有很多区块链网络节点的架构。有一个叫ARDOR的区块链网络,它就是一个大网中的部分节点。对某件小事儿达成共识,就可以了。如果某件很重要的事,你可以全网达成共识。

@Sam:请问随机选的生产者记账要是错了呢?后面的人也跟着这个顺序走?

随机选的这个生产者记账呢,网上的其他节点都会帮他做确认,它必须符合哈希值,必须有区块链合法的记账顺序。如果他不符合这些记账的规则的话,别人不会打包他的记录。

@sunbo:如果数字货币是ERC20代币,那GAS就是ETH,币从游戏平台转到交易平台的时候,会消耗掉ETH,这部分ETH谁出,游戏平台出?那不是很大头的利润支出,如果游戏平台想节省这部分开支,咋办办?是把交易平台和游戏平台数据库打通,币走传统数据库,不上链?还是换种数字货币开发方式,那么游戏平台要准备什么,自己买矿机服务这些转币玩家?

对于ERC代币用来做游戏平台的转账或者支付的话,这个确实有交易成本,但这里边有多种解决方式。比如你可以用EOS这条链,相当于游戏开发者出钱,用户不出钱;另外也可以用侧链;所以,技术上肯定是可以解决的

@拓荒者Darren:现在都是各种写区块链技术的优点,这个不容置疑,但却很少有人提出区块链的缺点,您在缺点这方面如何看待呢?

区块链的缺点,其实是很明显的。你想所有的节点相同的辈份,相同的数据。所以说,第一性能很差,有的结点在美国,有的在中国,他们要进行数据同步,所以这个数据很差;第二就是它的存储效率很差,因为这一万个节点,存的都是相同的东西。

@理性 Derien:区块链4.0版本会如何演化呢?

我不知道区块链4.0指的是什么技术。区块链1.0,大家认为是比特币;区块链2.0是以太坊,这个问题也不大,就是毕竟以太坊开创了一个时代。至于区块链的3.0,有人说 eos,这个目前还有争论。eos 的最大贡献是建设了一套人为的治理制度,这是它最大的贡献。至于4.0,我总觉得还没有出现。

但是这个人为治理呢,他也是通过计算机的一个算法来实现高效的人为治理,也就是说,人为治理也涉及了很多区块链独特创新的地方。就像你最近在上海举行的一个以太坊的会议,会上有一个图灵奖获得者,他发明了algorand 这样一个区块链共识,还是匿名的:进行一次投票,就可以选举出选举人的一种治理算法。也就是说,人为治理其实也包含了区块链的计算机技术方面的一些创新。

@给岁月以文明,给时光以生命:你对无币区块链的看法如何?

对于无币区块链,就非要让我说最真实的看法,我觉得它已经丧失了区块链那种无信任网络的稳定的特性。那就是没有币,就没有经济激励。经济激励好像是比特币或区块链中最重要的一部分,没有币就是比较弱一点,变成了一种信息化系统。