区块链项目绕不开的核心问题:共识机制究竟是个什么?

共识机制就像一个国家的法律,维系着区块链世界的正常运转。如果说共识是区块链的基础,那共识机制就是区块链的灵魂。

如果用一句话概括什么是区块链?可以简单地用“去中心化分布式分类账”来解释。在许多人的认知里,区块链和“去中心化”和“去信任”密不可分。那么这些通过什么手段来实现呢?这就是共识机制的使命。

共识机制,是在谈论区块链项目时总是绕不开的核心问题。那么,共识机制究竟是个什么?

我们不妨先通过一个例子简单地理解一下。假如一个公司有100名员工,要通过投票选举的方式评选优秀员工。如果100人都参与投票,那么参与度是100%;如果这100人选出了10个代表去投票,参与度则只有10%。这两种投票方式,哪一种投票更能代表民意呢?毫无疑问是前者,因为参与度更高;相反,后者选出了10位代表去投票,参与度低,选举结查难免会出现不公。

通过参与度我们对共识有个简单的理解。共识是一切交易的基础,达成共识越分散(参与度越高),其效率就越低,但满意度越高,因此也越稳定;相反,达成共识越集中(参与度越低),效率越高,也越容易出现独裁和腐败现象。

所谓“共识机制”,是通过特殊节点的投票,在很短的时间内完成对交易的验证和确认;对一笔交易,如果利益不相干的若干个节点能够达成共识,我们就可以认为全网对此也能够达成共识。

再通俗一点来讲,如果中国一名微博大V、美国一名虚拟币玩家、一名非洲留学生和一名欧洲旅行者互不相识,但他们都一致认为你是个好人,那么基本上就可以断定你这人还不坏。

在区块链上,每个人都会有一份记录链上所有交易的账本,链上产生一笔新的交易时,每个人接收到这个信息的时间是不一样的,有些想要干坏事的人就有可能在这时发布一些错误的信息,这时就需要一个人把所有人接收到的信息进行验证,最后公布最正确的信息。

在这个账本中,是如何对在几乎相同时间内的产生的事物前后排序的,就涉及到区块链网络的共识机制。所以共识机制,就是在一个时间段内对事物的前后顺序达成共识的一种算法。

共识机制就像一个国家的法律,维系着区块链世界的正常运转。如果说共识是区块链的基础,那共识机制就是区块链的灵魂。

对于初入链圈的人来说,最常听到的是POW,POS,DPOS这三种共识机制。其实共识机制可不仅仅是这三种,富有创造力的天才们设计出各种各样的共识机制,空间靠谱不靠谱呢?我们先来全面地了解一个共识机制。只有了解了自己才能有判断的本领。

共识机制的种类

PoW(工作量证明机制)

谁在用:BTC和BTC的儿子们(BCH、BCD等等),早期的ETH,LTC。

工作量证明机制(Proof of Work-PoW)是我们最熟知的一种共识机制。就如字面的解释,PoW就是工作越多,收益越大。这里的工作就是猜数字,谁能最快的猜出这个唯一的数字,谁就能做信息公示人。

顾名思义,工作量证明是证明你完全某项任务所花费的精力(包括时间、脑力、体力等),同时也证明你达到了某个水平。在生活中,它类似于毕业证、驾照,大学毕业证可以证明你读完了学制四年的大学课程,并通过了所有课程的考试,达到了所学专业的某个水平;驾照可以证明你学完了所有学时,并通过了四个科目的考试,达到了开车上路的水平。

在众多的区块链应用中,使用工作量证明作为共识算法的典型案例就是比特币,如果了解比特币,对比特币挖矿一定不会陌生(如果对挖矿不太了解,强烈建议先看看《区块链学堂——比特币挖矿(一)》),假设比特币的世界里有A、B、C、D四个人,现在这四个人都在争抢记账权限(挖矿),到底用什么方式在保证公开、公正、透明的情况下,快速决定把记账权限归谁呢?

科学家们脑洞大开,发明了工作量证明机制,即每一次要争夺记账权限,都给A、B、C、D四个人出一道题,谁要是第一时间算出了这道题的正确答案,就可以获得一个证书——工作量证明,凭这个证明,就可以获得记账权限。

优点:算法简单,容易实现,有一定安全保障。完全去中心化。

缺点:挖矿造成了巨大的资源浪费(为了争夺记账权限不停地轮询计算,耗电量巨大),而且达成共识的周期过长,导致每秒仅仅只能做几笔交易(比特币每秒只能做7笔交易),不适合商业应用。如今算力越来越集中,中心化日益严重。比特币网络解决了”拜占庭将军问题“,其中一个前提条件,那就是多数人是好人(超过51%的节点是好节点),否则就会出现51%攻击。而现在,矿池BTC.COM、蚁池和微比特,一共控制了超过51%的算力。如果他们联合起来,或者被黑客控制,那么就可能会发生51%攻击。

PoS益证明机制

谁在用:未来币,2017年至今,ETH一直为从POW转移到POS作准备。

权益证明机制(Proof of Stake-PoS)也属于一种共识证明,它类似股权凭证和投票系统,因此也叫“股权证明算法”。由持有最多(token)的人来公示最终信息。

为了弥补工作量证明达成共识周期过长的缺点,科学家们发明权益证明共识算法,权益证明就是用股权代替PoW中的挖矿算力,来模拟比特币的挖矿过程。A、B、C、D四个人谁拥有的代币(类似于比特币等数字货币)数量多,谁就有机会获得记账权限。

优点:不需要拼算力挖矿,从而节省了大量算力和电费,同时大大缩减了达成共识的时间,效率提高。。

缺点:钱多的的人(节点),获得记账权的机率更大,容易产生垄断。这会使得共识成为少数有钱人的游戏,从而失去公正性。其次,所有的确认都只是概率上的表达,存在其他攻击的可能性。挖矿成本低,硬分叉十分容易。

DPos股份授权证明

谁在用:BTS,EOS

股份授权证明类似于董事会投票,假设某个区块链系统的世界里有10万人,现在这10万人投票选出了4位股东作为代表来行驶记账权,这4位董事分别是A、B、C、D,在记账过程中,按顺序每位董事有两秒钟的时间来记账,如果在规定的时间内记账失败,则直接把权限交给下一位董事,这样原本10万人参与记账竞争的游戏,现在变成了4人。

这样做的优点是大幅缩减了参与验证和记账的数量,形成共识几乎可以达到秒级,缺点是固定数量的董事作为记账候选人,与去中心化的理念相违背,董事数量太少,参与度太低,也缺乏一定的代表性。

对比这三种最常用的共识算法,不难发现各有利弊,它们的诞生都围绕着一个核心——如何更加公平、公正、透明、轻量(不过多消耗资源)、高效(更快)地达成共识,挑选出记账的人(节点)。

优点:相比POS,DPOS机制大幅缩小参与验证和记账的节点的数量,属于弱中心化,大大提高了效率。可以达到秒级的共识验证。

缺点:整个共识机制然依赖代币,目前很多商业应用不需要使用代币。很大程度上,DPOS将权利赋予了每个社区成员,即真正关心项目的人。

PooI验证池

Pool验证池基于传统的分布式一致性技术建立,并辅之以数据验证机制,是目前区块链中广泛使用的一种共识机制。

Pool验证池不需要依赖代币就可以工作,在成熟的分布式一致性算法(Pasox、Raft)基础之上,可以实现秒级共识验证,更适合有多方参与的多中心商业模式。不过,Pool验证池也存在一些不足,例如该共识机制能够实现的分布式程度不如PoW机制等。

优点:不需要代币也可以工作,在成熟的分布式一致性算法(Pasox、Raft)基础上,实现秒级共识验证。

缺点:去中心化程度不如bictoin;更适合多方参与的多中心商业模式。

瑞波协议共识算法

谁在用:Ripple Protocol Consensus Algorithm,RPCA

瑞波协议共识算法使得一组节点能够基于由特殊信任节点达成共识。在瑞波网络中,每个服务节点都会维护一个信任节点列表且认为信任列表中的节点不会联合起来作弊。在共识过程中,各个需要共识的交易需要接受只接受来自信任节点列表中节点的投票,只有超过一定阈值后才能达成共识。瑞波协议共识算法比较高效,但是同样属于弱中心化且防攻击能力比较弱。

PBFT实用拜占庭容错算法

谁在用:Practical Byzantine Fault Tolerance

拜占庭共识算法(Practical Byzantine Fault Tolerance-PBFT)也是一种常见的共识证明。它与之前两种都不相同,PBFT以计算为基础,也没有代币奖励。由链上所有人参与投票,少于(N-1)/3个节点反对时就获得公示信息的权利。

实用拜占庭容错算法是一种基于消息传递的一致性算法。该算法经过预准备(Pre-prepare)、准备(Prepare)和确认(Commit)三个阶段达成一致性。这些阶段可能因为失败而重复进行。实用拜占庭容错算法信息在节点之间互相交换后,各节点列出所有得到的信息最后以大多数的结果作为解决方法。

优点:该算法通过投票达成共识可以很好得解决包括分叉的问题同时提升网络效率,在保证灵活性和安全性的前提下最大允许(n-1)/3故障节点的容错性,但是可扩展性相对较差。

缺点:当有1/3或以上记账人停止工作后,系统将无法提供服务;当有1/3或以上记账人联合作恶,且其它所有的记账人被恰好分割为两个网络孤岛时,恶意记账人可以使系统出现分叉,但是会留下密码学证据;

dBFT:delegated BFT授权拜占庭容错算法

谁在用:小蚁采用的dBFT机制

是由权益来选出记账人,然后记账人之间通过拜占庭容错算法来达成共识。此算法在PBFT基础上进行了以下改进:将C/S架构的请求响应模式,改进为适合P2P网络的对等节点模式;将静态的共识参与节点改进为可动态进入、退出的动态共识参与节点;为共识参与节点的产生设计了一套基于持有权益比例的投票机制,通过投票决定共识参与节点(记账节点);在区块链中引入数字证书,解决了投票中对记账节点真实身份的认证问题。

优点:专业化的记账人;可以容忍任何类型的错误;记账由多人协同完成,每一个区块都有最终性,不会分叉;算法的可靠性有严格的数学证明;

缺点:当有1/3或以上记账人停止工作后,系统将无法提供服务;当有1/3或以上记账人联合作恶,且其它所有的记账人被恰好分割为两个网络孤岛时,恶意记账人可以使系统出现分叉,但是会留下密码学证据;

Paxos

Paxos被用于分布式系统中典型的例子就是Zookeeper,他是第一个被证明的共识算法,其原理基于两阶段提交并扩展。

Paxos算法中将节点分为三种类型:proposer:提出一个提案,等待大家批准为结案。往往是客户端担任该角色acceptor:负责对提案进行投票。往往是服务端担任该角色learner:被告知结案结果,并与之统一,不参与投票过程。可能为客户端或服务端基本过程包括proposer提出提案,先争取大多数acceptor的支持,超过一半支持时,则发送结案结果给所有人进行确认。一个潜在的问题是proposer在此过程中出现故障,可以通过超时机制来解决。极为凑巧的情况下,每次新的一轮提案的proposer都恰好故障,系统则永远无法达成一致(概率很小)。Paxos能保证在超过50%的正常节点存在时,系统能达成共识。

Raft

Raft算法是对Paxos算法的一种简单实现。

它包括三种角色:leader、candiate和follower,其基本过程为:Leader选举:每个candidate随机经过一定时间都会提出选举方案,最近阶段中得票最多者被选为leader同步log:leader会找到系统中log最新的记录,并强制所有的follower来刷新到这个记录,这里的log指的是各种事件的发生记录。

共识机制存在的问题

A、计算能力浪费

在工作量证明机制POW中,猜数字最快的通常是电脑计算能力强的。超强的计算能级仅用来猜数字,实在是浪费。

B、权益向顶层集中

在权益证明机制POS中,token的余额越多的人获得公示信息的概率越高,公示人会得到一定的token作为奖励,如此持有token多的人会越来越多,少的人越来越少。

C、作恶成本低下

在靠算力与权益的的多少来获得公示信息的权利的模式当中,当算力和权益向少数人集中之后,这些少数人如果想要做一些违反规则的事情是轻而易举的;在PBFT中,由所有人投票,如果一个没有任何token余额的人想要捣乱,那他几乎是完全没有利益损失。

D、对于真正的去中心化构成威胁

在工作量证明机制中,计算能力越强,获得记录权利的概率就越高。如果有人把很多人集中在一起来猜数字,把好多电脑的算力加在一起来用,那这些抱团的人就会更容易获得公示信息的权利,发展到最后可能公示权就直接掌握在这些人手里。

在权益证明机制POS中,权益越大的人获得记录权利的概率越高,而记录的人就会有奖励token,这样一来这些人就会越来越富有,贫富差距就会越来越大。持有token少的人几乎都没有话语权了。权利掌握在少数人手中,这有违区块链去中心化理念。

评判共识机制优劣的四个标准

区块链上采用不同的共识机制,在满足一致性和有效性的同时会对系统整体性能产生不同影响。综合考虑各个共识机制的特点,从以下4个维度评价各共识机制的技术水平:

1)安全性。

即是否可以防止二次支付、自私挖矿等攻击,是否有良好的容错能力。以金融交易为驱动的区块链系统在实现一致性的过程中,最主要的安全问题就是如何防止和检测二次支付行为。自私挖矿通过采用适当的策略发布自己产生的区块,获得更高的相对收益,是一种威胁比特币系统安全性和公平性的理论攻击方法。此外,Eclipse攻击控制目标对象的网络通信,形成网络分区,阻隔交易传播。Sybil攻击通过生产大量无意义的节点影响系统安全性。

2)扩展性。

即是否支持网络节点扩展。扩展性是区块链设计要考虑的关键因素之一。根据对象不同,扩展性又分为系统成员数量的增加和待确认交易数量的增加两部先扩展性主要考虑当系统成员数量、待确认交易数量增加时,随之带来的系统负载和网络通信量的变化,通常以网络吞吐量来衡量。

3)性能效率。

目队交易达成共识被记录在区块链中至被最终确认的时间延迟,也可以理解为系统每秒可处理确认的交易数量。与传统第三方支持的交易平台不同,区块链技术通过共识机制达成一致,因此其性能效率问题一直是研究的关注点。比特币系统每秒最多处理7笔交易,远远无法支持现有的业务量。

4)资源消耗。

即在达成共识的过程中,系统所要耗费的计算资源大小,包括CPU、内存等。区块链上的共识机制借助计算资源或者网络通信资源达成共识。以比特币系统为例,基于工作量证明机制的共识需要消耗大量计算资源进行挖矶提供信任证明完成共识。

发表评论
加载中...
1 2

相关文章

切换注册

登录

忘记密码 ?

切换登录

注册

获取

注册奖励 88 CFC