BASE:从去中心化说起:你所不了解的“共识机制”背后故事

相信很多朋友经常会有这样一种感觉:世界上总有一些词语或是短语,组成它们的每一个字或者每一个词你都认识,但当它们拼接在一起之后,你却感觉这个东西如同天书一样难以理解。举个简单的例子:“中等收入陷阱”。组成这个短语的三个词——也就是中等、收入、陷阱,你都能看懂,但当它们组合到一起之后,你却愣是理解不了这个词是什么意思。

对于区块链行业的从业者来说,这样的例子更是数不胜数,被称为区块链技术核心的“共识机制”就是一个典型的案例,很多人都明白“共识”是什么意思,也明白“机制”是什么意思,但当这两个词合起来,成为“共识机制”之后,当即就蒙圈了,虽然他们对于当前区块链行业的共识机制也有一定的了解——比如说POW机制随着比特币兴起于2009年、POS机制随着点点币兴起于2012年、DPOS机制随着比特股兴起于2014年等等等等,但这种了解更多的是因为从业需要而进行的填鸭式信息硬塞,并不代表他们真正通晓了“共识机制”存在的必要性、以及它是如何一步步发展成我们现在所见到的样子的。

因此,在今天的文章中,笔者就打算跟大家讲一讲你所不知道的那些关于共识机制的事情,以及作为从业者与投资者,在面对着目前市场上各类琳琅满目的共识机制时、我们又该如何应对。

欲了解“共识机制”,需先了解“去中心化”

去过医院的朋友应该都有这样的经历——很多时候身体浅表的不适,实际上是源于另外一个与其没有直接联系的器官病变。研究工作也是这样,不少读者没有注意到,他们对“共识机制”一词似懂非懂的主要原因,并不在于这个词本身多么复杂难懂,而是因为他们对“共识机制”背后的另外一个概念未能实现透彻的理解。这个概念就是“去中心化”。虽然在过去的两年之内,“去中心化”已经把无数业内人士的耳朵都磨出了老茧,但这并不代表他们就已经随着时间的推移而真正地了解了这个概念,否则的话,也不会在“共识机制”这个词上纠结许久了。

我们还是从头开始梳理。需要指出的是,在人类社会当中,“去中心化”根本不是什么新生事物。举个最简单的例子:在几十年前,如果一个人想要一些生活用品,他只能去当地的供销社或官营百货商店的机构里去买,而如果换成现在,他能够从大超市买,能够从小便利店买,能够从线上买,也能够从线下买……可以说有N多种途径能够满足他的需求,那么这种购物渠道的大幅扩张是不是去中心化?当然是。当年你只能去一家店或者一个店,而现在你周围分布着N多个店。为什么会出现这样的情况?因为经济改革之后,原本隶属于官方的经商权,被下沉到了符合条件的相关团体、甚至是每一个个体的手中,使得人们在购物的时候可以无需再高度依赖于中心化的机构,这就是一个典型的去中心化场景。

图:各种行业格局的去中心化,其本质上是行业权力的下沉。

借由这个例子我们可以看得出来,“去中心化”的本质,实际上指的都是各种各样的权力从顶层中心化机构到基层个体的下沉。在过去的几十年时间里,随着经济的发展与科技的进步使得颗粒度较小的团体与个体被赋予了更多的权利,人们早已在不经意间见证了诸多的“去中心化”现象,譬如民用小轿车的充裕实现了驾驶服务的去中心化,进而使得越来越多的人能够参与到过去只有客运和出租车公司才能从事的客运服务当中;而人手一台的智能手机则是实现了摄影录像权的去中心化,让人人都有机会用镜头记录下周围的世界;四通八达的互联网实现了话语权的去中心化,使得每一个个体都能够有机会发出自己的声音;而我们所熟悉的区块链,其本质上就是分布式计算系统中的一种,它实现了计算权的去中心化,最终解决了计算性能的瓶颈、以及节点数据的分散储存与备份等问题。

一般的分布式计算系统是将计算权进行了下沉,区块链则不仅仅是下沉了计算权,同时还下沉了对于系统的管理权。

可以说,各种各样的去中心化系统,已经成为日常生活中必不可少的一部分,就算很多人并不知道“去中心化”这个词,他们也无时无刻不在与分布式系统打交道,甚至很多时候干脆就是某一个分布式系统的组成部分。然而,尽管分布式系统给人们的生活带来了无限的便利,但它却有一个非常致命的弱点:那就是一旦系统中出现几个坏节点,很有可能会因为丧失用户的信任而导致全系统的崩盘。举个例子:在去年网约车安全事故频发之后,社会上一时恐慌情绪弥漫,由于唯恐自己成为下一个受害者,很多乘客便开始弃用去中心化的网约车、转向中心化的公共交通和出租车。由私家车组成的分布式客运网络一时陷入危机,尽管从数据上讲,驾驶员中出现主观作恶者的几率非常之低,但却无法阻止用户对于整个网约车司机群体、甚至是整个去中心化客运网络产生不信任感,而这个系统性的危机仅仅是来自于几个坏节点的出现,可说是“一条鱼腥了一锅汤”,这就是分布式系统的弊端所在。

图:分布式系统的弊端:一旦出现几个坏节点,很有可能会引发整个系统都失去用户的信任

作为去中心化系统的一种,本文今天所要介绍的“分布式计算系统”,也不可避免的会因为各种主客观原因,而出现一些不遵守规则的“坏节点”,而众所周知,在当下的数字化社会中,计算资源已经成为经济运行的重要基础设施,对于稳定性的要求可以说是非常之高,稍有不慎,很容易殃及依赖这些计算资源的诸多软件应用,进而引发相关的一系列损失,就如同网约车事件所引发的分布式交通系统动荡给依赖这些交通网的人们的生活所带来的诸多不便一样。对于这一点,相信经历过一些云服务宕机的朋友绝对不会感到陌生。在这样的情况下,分布式计算系统便必须具备一个特点:那就是如何在出现“坏节点”的时候,依然能够让剩余的正常节点继续维持系统的稳定运行,使得外界仍然能够相信由其产生的计算结果,而这个用于组织剩余正常节点的规则或是机制,就被称为共识机制。

共识机制的演变:从故障排除器到信任制造机

从这点来看,“共识机制”并非是2009年比特币诞生之后所产生的新生事物,它的历史实际上要比后者的历史长得多,正如分布式计算出现的时间要比区块链这一子集早的多一样。举几个例子:传统分布式计算中最主要的共识机制——Paxos算法,早在1990年就出现了;而PBFT算法则是提出于1999年。事实上,就连人们所熟悉的比特币区块链所采用的PoW共识机制,也是在1998年便在B-money的设计过程中提出。比BTC的出现早了整整10年之多、只不过因为B-money中途夭折,才最终未能呈现在人们眼前。

这就是一件很有意思的事情了:既然共识机制不是什么新东西,那为什么这个概念在最近两年还吸引了无数人为之前赴后继?原因很简单:像Paxos、以及其后辈Raft这样的传统共识机制,他们所能应付的“坏节点”只能是源自于一些客观故障因素,比如说因网络和供电而导致的断线或宕机问题,因此也被称作是“故障容错算法”,但如果坏节点是源自于一些主动的恶意攻击或是数据篡改等,这类共识机制就要歇菜了,因为他们是无力把剩余的“好节点”组织起来继续维持系统的稳定、使之持续工作的。换句话说,这类共识机制只能用在那些不存在作恶可能节点的分布式系统当中,像是联盟链和私有链,比如微软的Coco联盟链采用的就是Paxos的共识机制。而这也是为什么很多人对这种共识机制、以及基于这种共识机制的无币区块链不感冒的原因——因为有相当一部分项目解决的并不是分布式系统内部的主观作恶问题、而顶多是一个客观的故障问题,其对于增进人们对分布式系统的信任,是没有太大帮助的。

CFT的全称为“Crashfaulttolerance”,即针对客观故障的“故障容错算法”。

那么,分布式系统要怎样才能抵御主观的恶意攻击呢?答案就藏在那些剩余的共识机制——也就是PBFT和POW等算法之中。由于这类共识算法对于分布式系统内部分主观的恶意攻击有着一定的防御性,因此被称作是“拜占庭容错算法”,而他们所给出的解决方案也各不相同:比如说包括PBFT在内的BFT共识算法,就是通过信息的传输,来直接解决主观作恶问题;而包括POW在内的非BFT共识算法,则是通过提高作恶的成本,来间接解决主观作恶问题。顺便一提:为了避免本文成为枯燥无味的学术小论文,笔者这里对这些算法背后的技术原理不作过多介绍,大家其实只需要知道一点:那就是不同的解决方案,他们所起到的效果也不一样——像POW这样的共识机制,它的容错几率可以达到50%,也就是除非坏人掌握了一半以上的系统节点,否则分布式系统还是可以正常运行,这种高容错度的代价,就是众所周知的比特币系统速度的迟缓。而PBFT虽然效率较高,但容错率却暴跌至33%,也就是对坏节点最高容忍水平降低到了1/3;除此之外,行业里还有其他各种五花八门的共识算法,比如说XRP所使用的“瑞波共识协议”,由于是用在外汇转账领域,因此速度更快,但容错率只有20%,鉴于篇幅所限,此处就不一一展开列举了。

BFT的全称为“Byzantinefaulttolerance”,即针对主观恶意攻击的“拜占庭容错算法”。

繁荣背后的浮躁:共识机制远未到盖棺定论之时

需要各位注意的一点是,随着近两年来区块链概念大热,市场上各种各样的共识机制算法种类也以指数级形式的形态暴涨,除了人们所熟悉的POS和DPOS之外,各种POA、POB、POC、POD……亦如同雨后春笋一般层出不穷,其数量之多,一度让业界产生了“POX”中26个字母不够用的担忧,不过鉴于人们可以将“POX”升级为“POXX”,因此共识机制可用的名字库存也从26个迅速增长到26×26=676个,再经历两轮牛熊估计都用不完。但在笔者看来,除非是一些特别重要的项目,否则绝大部分朋友真的没必要绞尽脑汁去研究很多山寨项目的共识机制。首先:一个能够得到广泛认可的共识机制,在学术方面往往需要提出者有着良好的技术功底,不说发一堆论文出来,至少也得是公认的学术牛人,然而纵观目前市场上各种共识机制的提出者,其真正的研究功底如何、各位在熊市中都已经是有目共睹,其次,在实际场景方面,目前基于区块链的应用才刚刚开展,谁也不清楚各行各业的分布式计算系统能够容许多大的坏节点比例和计算效率。在这样的情况下,区块链行业泛滥的共识机制算法背后,有多少能够具备较高的可行性、又有多少能够用到现实生活中、最后又有谁能够真的存留下来,还真是一件不好说的事情。

图:这种共识机制的划分方式非常有误导性

换句话说,共识机制的发展其实还处于一个非常早的阶段,通过上面的描述,我们可以粗略的把它划分为以Paxos、Raft、PBFT等算法为代表的传统分布式计算阶段、以及以POW、POS、DPOS、PBFT为代表的区块链共识机制阶段,但如果要具体来看区块链共识阶段,其实满打满算也只能把它进一步划分为由比特币的POW共识所主宰的阶段、以及群雄并起的后POW的阶段,而不是很多人所描述的POW-POS-DPOS等阶段,毕竟目前还没有明确的证据可以证明这几个共识机制之间是像上图中的燃煤火车、燃油火车、电气化火车一样,是一个逐渐升级的关系,后一级在绝大多数的纬度与性能上都要远胜于前一级,要知道目前各种各样的共识机制可都存在着各种各样的问题:POW耗能、POS马太效应、DPOS过于中心化、DAG容易丢块等等……所以,现有的这些共识机制会不会是我们最后所看到的选手还不好说,而真正靠谱的共识机制是否已经出现在了公众面前,其实也不好说。

从这个角度来看,共识机制所处的发展阶段现状,其实也正是整个区块链行业的缩影——它就像是一场刚刚打了5分钟的篮球比赛一样,也许你能够从中看出一些端倪,但却很难做出一个较高准确率的判断,因为你没有办法猜到在接下来的大段时间里会具体发生些什么,而能够笑到最后的又会是谁,无论是技术路线、还是引用场景、亦或相关企业、甚至是其中的人,都是如此。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

链链资讯

[0:15ms0-3:508ms