区块链的灵魂——共识算法

公众号回复“1”,拉你进区块链技术讨论微信群

整理:Cynthia

来源:皮蛋投资、海派部落、超级商人

本文约2800字+,阅读(观看)需要16分钟

共识机制

共识机制,在百度百科上的解释是这样的:

看上去是不是一头雾水?那么我这里就给大家一个比较能通俗易懂的解释:所谓的共识机制,就好比大家在开一次“会议”,最后达成一个一致,但是达成一致的途径有很多种,这也就是后续区块链的主链有各种各样的共识机制。那么这次“会议”都达成什么共识了呢?比如说有人做好事了,大家都知道了;有人做坏事了,大家也都知道。所以这就是共识机制的最大的好处,就是解决了彼此不认识的人的互相不信任的问题;同时,在这个“会议”里谁不管谁做了什么,大家都是知道的。

那么有人会问,如果这次“会议”的大部分人都叛变了,那岂不是导致会破坏掉这个“会议”,从而破坏掉整个区块链嘛?这种可能性当然是存在的了,但是参加这次“大会”的人都是来自世界各地,且彼此都不认识,想要控制他们是很难的。理论上,只要控制了51%的参加“会议”的人,就可以破坏掉整个网络,但是,如果你有控制51%人的能力,你还愿意去破坏整个区块链么?我觉得正常人都应该是拼命的去维护,所以,这也就是为什么区块链很难受到攻击的一个原因。

那么讲到这里,我们把共识机制类比成开“会议”,那么我们知道,如果开会的人多,最后达成结果的时间就比较久,开会的人少,最后达成结果的时间就比较快;放在区块链里,其实也是一样的。参加人数多了,大家就不容易被控制了,那么去中心化程度就越强了,那么达成一致的时间就久了;同理,参加的人数少了。大家就容易被控制,去中心化程度越弱了,但是达成一致的时间可能就会变快了。

大家会发现,共识机制的去中心化强弱是和区块链的速度成反比关系:去中心程度越弱,安全性就越低,区块链的速度就越快;去中心化程度越强,安全性就会越高,区块链的速度就会越慢。当然影响区块链速度的因素还有其他方面,日后我们会再讲。不过,很多媒体拿速度慢来抨击比特币,这就说明很多媒体和项目方是没技术含量的。区块链上的共识机制有多种,但任何一种都不是完美无缺,只能说每种共识机制适用的场景是不一样的。

主流的共识算法

1、Pow工作量证明

就是大家熟悉的挖矿,通过运算,计算出一个满足规则的随机数,即获得本次记账权,发出本轮需要记录的数据,全网其它节点验证后一起存储。

优点:完全去中心化,节点自由进出。

缺点:目前bitcoin已经吸引全球大部分的算力,其它再用Pow共识机制的区块链应用很难获得相同的算力来保障自身的安全;挖矿造成大量的资源浪费;共识达成的周期较长,不适合商业应用。

2、Pos权益证明

根据每个节点所占代币的比例和时间;等比例的降低挖矿难度,从而加快找随机数的速度。

优点:在一定程度上缩短了共识达成的时间。

缺点:与区块链的去中心化相背离。

3、DPos股份授权证明机制

类似于董事会投票,持币者投出一定数量的节点,代理他们进行验证和记账。

优点:大幅缩小参与验证和记账节点的数量,可以达到秒级的共识验证。

缺点:整个共识机制还是依赖于代币,在某种程度上趋向中心化。

4、Pool验证池

基于传统的分布式一致性技术,加上数据验证机制;是目前行业链大范围在使用的共识机制。

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

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

5、权威证明PoA(Proofof Authority)

所谓权威证明(PoA),就是使用一组所谓的“权限” 来允许人们在区块链上创建新的节点并确保区块链的安全。

优点:出块时间快,便于高速并发应用落地,可以根据参与方角色分配不同节点、开源系统丰富。

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

6、PBFT :Practical Byzantine Fault Tolerance,实用拜占庭容错

在保证活性和安全性(liveness & safety)的前提下提供了(n-1)/3的容错性。

优点:在分布式计算上,不同的计算机透过讯息交换,尝试达成共识。

但有时候,系统上协调计算机(Coordinator / Commander)或成员计算机 (Member /Lieutanent)可能因系统错误并交换错的讯息,导致影响最终的系统一致性。

缺点:

当有1/3或以上记账人停止工作后,系统将无法提供服务;

当有1/3或以上记账人联合作恶,且其它所有的记账人被恰好分割为两个网络孤岛时,恶意记账人可以使系统出现分叉,但是会留下密码学证据。

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

介绍:小蚁采用的dBFT机制,是由权益来选出记账人,然后记账人之间通过拜占庭容错算法来达成共识。

此算法在PBFT基础上进行了以下改进:

将C/S架构的请求响应模式,改进为适合P2P网络的对等节点模式;

将静态的共识参与节点改进为可动态进入、退出的动态共识参与节点;

为共识参与节点的产生设计了一套基于持有权益比例的投票机制,通过投票决定共识参与节点(记账节点);

在区块链中引入数字证书,解决了投票中对记账节点真实身份的认证问题。

优点:

专业化的记账人;

可以容忍任何类型的错误;

记账由多人协同完成,每一个区块都有最终性,不会分叉;

算法的可靠性有严格的数学证明。

缺点:

当有1/3或以上记账人停止工作后,系统将无法提供服务;

当有1/3或以上记账人联合作恶,且其它所有的记账人被恰好分割为两个网络孤岛时,恶意记账人可以使系统出现分叉,但是会留下密码学证据。

现有各种共识机制的问题

A、计算能力浪费

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

B、权益向顶层集中

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

C、作恶成本低下

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

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

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

文章发布只为分享区块链技术内容,版权归原作者所有,观点仅代表作者本人,绝不代表区块链兄弟赞同其观点或证实其描述。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180625B1HRDC00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券