在解释拜占庭将军问题的时候提到“共识机制”,本期《区块链100讲》我们来说说被称为区块链灵魂的“共识算法”。
1
共识机制
共识机制,在百度百科上的解释是这样的:
看上去是不是一头雾水?那么我这里就给大家一个比较能通俗易懂的解释:所谓的共识机制,就好比大家在开一次“会议”,最后达成一个一致,但是达成一致的途径有很多种,这也就是后续区块链的主链有各种各样的共识机制。那么这次“会议”都达成什么共识了呢?比如说有人做好事了,大家都知道了;有人做坏事了,大家也都知道。所以这就是共识机制的最大的好处,就是解决了彼此不认识的人的互相不信任的问题;同时,在这个“会议”里谁不管谁做了什么,大家都是知道的。
那么有人会问,如果这次“会议”的大部分人都叛变了,那岂不是导致会破坏掉这个“会议”,从而破坏掉整个区块链嘛?这种可能性当然是存在的了,但是参加这次“大会”的人都是来自世界各地,且彼此都不认识,想要控制他们是很难的。理论上,只要控制了51%的参加“会议”的人,就可以破坏掉整个网络,但是,如果你有控制51%人的能力,你还愿意去破坏整个区块链么?我觉得正常人都应该是拼命的去维护,所以,这也就是为什么区块链很难受到攻击的一个原因。
那么讲到这里,我们把共识机制类比成开“会议”,那么我们知道,如果开会的人多,最后达成结果的时间就比较久,开会的人少,最后达成结果的时间就比较快;放在区块链里,其实也是一样的。参加人数多了,大家就不容易被控制了,那么去中心化程度就越强了,那么达成一致的时间就久了;同理,参加的人数少了。大家就容易被控制,去中心化程度越弱了,但是达成一致的时间可能就会变快了。
大家会发现,共识机制的去中心化强弱是和区块链的速度成反比关系:去中心程度越弱,安全性就越低,区块链的速度就越快;去中心化程度越强,安全性就会越高,区块链的速度就会越慢。当然影响区块链速度的因素还有其他方面,日后我们会再讲。不过,很多媒体拿速度慢来抨击比特币,这就说明很多媒体和项目方是没技术含量的。区块链上的共识机制有多种,但任何一种都不是完美无缺,只能说每种共识机制适用的场景是不一样的。
2
主流的共识算法
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或以上记账人联合作恶,且其它所有的记账人被恰好分割为两个网络孤岛时,恶意记账人可以使系统出现分叉,但是会留下密码学证据。
3
现有各种共识机制的问
A、计算能力浪费
在工作量证明机制POW中,猜数字最快的通常是电脑计算能力强的。超强的计算能级仅用来猜数字,实在是浪费。
B、权益向顶层集中
在权益证明机制POS中,token的余额越多的人获得公示信息的概率越高,公示人会得到一定的token作为奖励,如此持有token多的人会越来越多,少的人越来越少。
C、作恶成本低下
在靠算力与权益的的多少来获得公示信息的权利的模式当中,当算力和权益向少数人集中之后,这些少数人如果想要做一些违反规则的事情是轻而易举的;在PBFT中,由所有人投票,如果一个没有任何token余额的人想要捣乱,那他几乎是完全没有利益损失。
D、对于真正的去中心化构成威胁
在工作量证明机制中,计算能力越强,获得记录权利的概率就越高。如果有人把很多人集中在一起来猜数字,把好多电脑的算力加在一起来用,那这些抱团的人就会更容易获得公示信息的权利,发展到最后可能公示权就直接掌握在这些人手里。
本文内容来源于:皮蛋投资、海派部落、超级商人
整理:Cynthia
以下是我们的社区介绍,欢迎各种合作、交流、学习:)