赞
踩
POW:Proof of Work(工作量证明)。按劳分配,谁工作量多,谁拿的多。体现在谁的挖矿设备CPU、GPU等更牛逼。缺点就是太费电了,还污染环境。
简单讲就是多劳多得,谁能最快的猜出随机数,谁就能做记账人。特点是去中心化最彻底,可靠安全,但共识时间长,耗能大,需要大量的计算资源去运转。代表:比特币。比特币在Block的生成过程中使用了POW机制,一个符合要求的Block Hash由N个前导零构成,零的个数取决于网络的难度值。要得到合理的Block Hash需要经过大量尝试计算,计算时间取决于机器的哈希运算速度。当某个节点提供出一个合理的Block Hash值,说明该节点确实经过了大量的尝试计算,当然,并不能得出计算次数的绝对值,因为寻找合理hash是一个概率事件。当节点拥有占全网n%的算力时,该节点即有n/100的概率找到Block Hash。
POS:Proof of Stake(股权证明)。按照持有此币的数量比例以及持有的时间,来进行发放利息,跟把钱存银行是类似的。优点是节能,不需要挖矿了。
也叫“股权证明算法”,类似于财产储存在银行,因为POW的越来越中心化,大家就开始心怀忌惮,于是虚拟货币爱好者开始研究另一种共识机制POS。这种模式会根据你持有数字货币的量和时间,分配给你相应的利息。在股权证明POS模式下,有一个名词叫币龄,每个币每天产生1币龄,比如你持有100个币,总共持有了30天,那么,此时你的币龄就为3000,这个时候,如果你发现了一个POS区块,你的币龄就会被清空为0。你每被清空365币龄,你将会从区块中获得0.05个币的利息(假定利息可理解为年利率5%),那么在这个案例中,利息 = 3000 * 5% / 365 = 0.41个币,这下就很有意思了,持币有利息。特点是共识时间短,耗能小,但容易造成利益分配的不均衡和大节点的产生。
POW+POS:把这两种机制进行结合。
DPOS:Delegated Proof of Stake(授权股权证明)。持有币的人可以进行投票选举,选举出一些节点做为代表来记账,类似于全国人名代表大会制度。
中文名叫做股份授权证明机制(又称受托人机制)类似于董事会或者人大代表机制,它的原理是让每一个持有比特股的人进行投票,由此产生101位代表 , 我们可以将其理解为101个超级节点或者矿池,而这101个超级节点彼此的权利是完全相等的。从某种角度来看,DPOS有点像是议会制度或人民代表大会制度。如果代表不能履行他们的职责(当轮到他们时,没能生成区块),他们会被除名,网络会选出新的超级节点来取代他们。DPOS的出现最主要还是因为矿机的产生,大量的算力在不了解也不关心其币的人身上,类似黄牛大量囤票而不关心演唱会的内容。为了激励更多人参与竞选,系统会生成少量代币作为奖励。特点是出块时间超短,效率超高,几乎不会分叉。
PBFT:Practical Byzantine Fault Tolerance(实用拜占庭容错算法)。链上所有人参与投票,结果按照拜占庭共识算法来处理。这个算法是卡斯特罗和利斯科夫在1999年提出来的。解决了原始拜占庭容错算法效率不高的问题,将算法复杂度有指数级降低到多项式级,使得拜占庭容错算法在实际系统应用中变得可行。
PBFT的算法流程如下:首先,客户端向主节点发送请求调用服务操作,然后主节点通过广播将请求发送的其他副本。所有副本都执行请求并将结果发回客户端。客户端需要等待f+1个不同副本节点返回相同的结果,作为整个操作的最终结果。
与所有的状态及副本复制技术一样,PBFT对每个副本节点提出了两个限定条件,所有节点必须是确定性的。也就是说,在给定状态和参数相同的情况下操作执行的结果必须相同。其次的话,所有节点必须从相同的状态开始执行。
在这两个限定条件下,即使有失效的副本节点存在,PBFT算法对所有非失效副本节点的请求执行总顺序达成一致,从而保证安全性。
算法不能解决信息保密的问题,失效的副本有可能将信息泄露给攻击者。在一般情况下不可能提供信息保密,因为服务操作需要使用参数和服务状态处理任意的计算。所有的副本都需要这些信息来有效执行操作。当然还是有可能在存在恶意副本的情况下通过秘密分享模式来实现私密性。因为参数和部分状态对服务操作来说是不可见的,PBFT的优点是系统运转可以脱离币的存在。PBFT算法共识各个节点由业务的参与方或者监督方组成。安全性与稳定性由业务相关方保证。共十的时延大约为2到5秒。基本达到商用实时处理的要求。共识效率高,可以满足高频交易量的需求。
缺点是都有1/3以上记账人停止工作,系统将无法提供服务。等有1/3以上记账人联合做恶,而且其他所有的其他记账人被恰好分割为两个网络孤岛时,恶意其他人可以使系统出现分叉。但是会留下密码学证据,去中心化程度不如公有链上的共识机制。更适合有多方参与的多中心商业模式。
POA:Proof of Authority(权威证明)。验证者不需要很强的的算力和大量的token,但必须具有已知的和经过验证的身份,通过放置这个身份来获得担保网络的权利,从而换取区块奖励。比如,小明是一个被大家信任的人,可以为某笔交易做担保,通过我来做担保便可实现快速交易,交易成功后我会获得一定数量的token奖励。那如果哪天我变坏了怎么办?想对交易使坏而使自己获利,没关系,其他担保人的一双双眼睛都在盯着我呢,一使坏我就会被踢出局
POI:Proof of Importance(重要性证明)。使用账户重要性评分来分配记账权的概率。
POP:Proof of Participation(参与度证明)。结合了DPOS与POI的思想
raft:因为网上已经有大量文章对raft算法进行过详细的介绍,因此这部分只会简单的阐述算法的基本原理和流程。raft 算法包含三种角色,分别是:跟随者( follower ),候选人( candidate )和领导者( leader )。集群中的一个节点在某一时刻只能是这三种状态的其中一种,这三种角色是可以随着时间和条件的变化而互相转换的。
raft 算法主要有两个过程:一个过程是领导者选举,另一个过程是日志复制,其中日志复制过程会分记录日志和提交数据两个阶段。raft 算法支持最大的容错故障节点是(N-1)/2,其中 N 为 集群中总的节点数量。
有一个动画介绍raft算法介绍的很透彻,链接地址为:http://thesecretlivesofdata.com/raft/。这个动画主要包含三部分内容,第一部分介绍简单版的领导者选举和日志复制的过程,第二部分内容介绍详细版的领导者选举和日志复制的过程,第三部分内容介绍的是如果遇到网络分区(脑裂),raft 算法是如何恢复网络一致的。有兴趣的朋友可以结合这个动画来更好的理解raft算法。
参考文章:
【区块链学习笔记】区块链共识机制,PoW、DPoS、PBFT···是个什么鬼
NO.17 浅谈共识机制(POW、POS、DPOS、PBFT、POP)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。