几种共识算法介绍

共识算法(POW,POS,DPOS,PBFT,PAXOS,RAFT) 

POW:Proof of Work,工作证明。(最终一致性,适用公有链)

要得到合理的Block Hash需要经过大量尝试计算,计算时间取决于机器的哈希运算速度。寻找合理hash是一个概率事件。当节点拥有占全网n%的算力时,该节点即有n/100的概率找到Block Hash。

简单说明:pow主要是依靠计算机的机器的性能(计算能力)来出块,性能越高,出块概率越大;就是谁更有权,谁就更容易产生块;这会导致大量资源浪费、网络性能低、算力太集中偏离了去中心化轨道;

POS:Proof of Stake,股权证明。(最终一致性,适用公有链)

PoS 试图解决 PoW 机制中大量资源被浪费的情况。这种机制通过计算你持有占总币数的百分比以及占有币数的时间来决定记账权。每出一次块,时间会清零重新计算;PoS 就是资本主义,按钱分配,钱生钱。POS虽然解决了POW的能耗的问题,但全节点确认会让区块确认的效率提不起来,且时间越长,也越容易产生马太效应,即持有币越多的人会获得更多的币奖励,从而加大贫富差距,最终产生超过50%的中心化节点

DPOS:Delegated Proof of Stake,委任权益证明(最终一致性,适用公有链)

股份授权证明机制(又称受托人机制),它的原理是让每一个持有比特股的人进行投票,由此产生101位代表 , 我们可以将其理解为101个超级节点或者矿池,而这101个超级节点彼此的权利是完全相等的。DPOS有点像是议会制度或人民代表大会制度。优点是整个网络的能耗大大下降,网络运行成本更低;理论上更去中心化;缺点小散投票积极性不高,坏节点不能被即时处理,总是要经过一个选举才能清除坏节点。

PBFT:Practical Byzantine Fault Tolerance,实用拜占庭容错算法。(强一致性,适用私有链联盟链)

n是总投票人数,f是叛徒人数,由于多数者胜,所以只有当n-2f>f的情况下,将军才会做出正确的决定,即n>3f,n最小需要取3f+1。最终决定是由中心节点确定;

PAXOS

Paxos解决这一问题利用的是选举,少数服从多数的思想,只要2N+1个节点中,有N个以上同意了某个决定,则认为系统达到了一致;

Paxos看上去是一个无主的协议,但实际上在paxos的第一个阶段,就是一个leader抢夺战,每个主机在第一阶段都会有一个提案编号,这个提案编号越大,则优先级越高。Paxos第一阶段要获得主动权,另外还需要把数据确定,这样才能展开第二个阶段

RAFT

raft的第一阶段(选主)则不涉及到数据的问题,raft的第一个阶段直选主,因为leader一旦确定,那么数据也就随之确定了,因为raft的数据是单向的从leader向follower流动的。

(1)Leader在时。由Leader向Follower同步日志
(2)Leader挂掉了,选一个新Leader,Leader选举算法。

扫描二维码关注公众号,回复: 10793738 查看本文章

转:https://my.oschina.net/u/2322635/blog/1935994

发布了24 篇原创文章 · 获赞 47 · 访问量 26万+

猜你喜欢

转载自blog.csdn.net/nicajonh/article/details/83010305