主流区块链共识算法

1.PoW 工作量证明算法

矿工根据难度系数值,进行随机数运算找到符合条件的解,找到解的旷工即获得记账权。

特点:耗费巨大计算资源,最终体现为电力资源的浪费。

2.POS 股权证明算法

根据股权占比来决定记账权,即股权占比最高的节点获得记账权 。

PoS基于网络参与者目前所持有的数字货币的数量和时间进行利益分配,是一种对货币所有权的证明,PoS依赖于其区块链自身的代币,在不同的代币系统,PoS算法往往有不同的表达形式。

###2.DPOS 股权授权证明算法

授权股份证明算法(Delegated proof-of-stake, DPoS).DPoS共识的基本思路类似于“董事会决策”,即系统中每个节点可以将其持有的股份权益作为选票授予一个代表,获得票数最多且愿意成为代表的前N个节点将进入“董事会”,按照既定的时间表轮流对交易进行打包结算、并且签署(即生产)新区块.如果说 PoW 和 PoS 共识分别是 “算力为王” 和 “权益为王” 的记账方式 的话, DPoS 则可以认为是 “民主集中式” 的记账方式, 其不仅能够很好地解决 PoW 浪费能源和联合挖 矿对系统的去中心化构成威胁的问题, 也能够弥补 PoS 中拥有记账权益的参与者未必希望参与记账的缺点, 其设计者认为 DPoS 是当时最快速、最高效、最去中心化和最灵活的共识算法.

股份授权证明机制(DPOS,Delegated Proof of stake)又称为“股东代表机制”,将拥有一定数量的 代币的每个节点看作为股东,各个节点根据持有的代币的数量做出定量的投票,最后选出定量的节点。这些节点作为代表,轮流生成区块,同时其代表们 也会收到等同于一个平均水平的 区块所包含交易费的10%作为报酬。如果一些代表在生成区块的过程中发现了问题,股东将会重新投票,并选取新 的代表进行替换。

代表EOS。

3.PBFT 实用拜占庭容错算法

参考博客:https://blog.csdn.net/jfkidear/article/details/81275974

PBFT算法由于每个副本节点都需要和其他节点进行P2P的共识同步,因此随着节点的增多,性能会下降的很快,但是在较少节点的情况下可以有不错的性能,并且分叉的几率很低。PBFT主要用于联盟链,但是如果能够结合类似DPOS这样的节点代表选举规则的话也可以应用于公联,并且可以在一个不可信的网络里解决拜占庭容错问题,TPS应该是远大于POW的。

PBFT论文地址:http://pmg.csail.mit.edu/papers/osdi99.pdf

将拜占庭将军问题根据常见的工作上的问题进行简化:假设将军中没有叛军,信使的信息可靠但有可能被暗杀的情况下,将军们如何达成一致性决定?出现Paxos和Raft两种共识算法

4.Paxos

角色介绍

  • Client

    请求发起者。系统外部角色

  • Proposer

    接收client的请求,向集群提出提议。起到冲突调节的作用。

  • Acceptor

    提议投票和接受者,只在形成法定人数(多数派)时,提议才会最终被接受。

  • Learner

    提议接受者,备份,对集群一致性没有影响(不参与投票)

步骤和阶段

  • Prepare

    Proposer提出一个提案,编号为N,此N大于这个Proposer之前提出的提案编号,请求acceptors的quorum接受。

  • Promise

    如果N大于此proposer之前接收的任何提案的编号则接受,否则拒绝。

  • Accept

    如果达到了多数派,proposer会发出accept请求,此请求包含提案编号N,以及提案内容。

  • Accepted

    如果此proposer在此期间没有收到任何编号大于N的提案,则接受此提案内容,否则忽略。

###5.Raft

角色定义

  • Leader
  • Follower
  • Candidate

参考文章:https://www.jianshu.com/p/8e4bbe7e276c

###总结各共识算法的特点

算法 特点
PBFT 达成共识速度快,适用于节点少的分布式系统
DPOS 要求系统有代表权益的代币,而且由于权益的争夺,会极大减少代币的流动性