一、工作量证明(PoW)
1.概念: 工作量证明涉及到大量矿工挖矿,如果网络的分布式节点达成共识并且确认矿工提供的块哈希是有效的工作证明,则工作量证明共识算法确保该矿工仅能够验新区块里的交易并将其添加到区块链。
2.优点:
完全的去中心化
3.缺点:
依赖机器进行运算并获取记账权的过程造成了巨大的资源消耗。每次达成共识需要全网共同参与计算,性能效率较低。容易被算力控制。
二、权益证明(PoS)
1.概念:
权益证明共识算法用一种机制来取代工作量证明的挖矿,期中区块根据参与者的质押的币而验证。每个区块的验证者(也称为铸造者或者铸币者)由本身的加密货币投资决定,而不是分配的算力数量。每个权益证明系统可以以不同的方式来实现该算法,但是通常来说,区块链由随机的选举过程保护,该过程考虑了节点的财富、币龄(币被锁定或者是质押的时间)以及随机因素。
2.优点:
它根据每个节点所占代币的比例和时间,等比例的降低挖矿难度,从而加快找到随机数的速度。在一定程度上缩短了共识达成的时间,不再需要大量消耗能源去挖矿。
3.缺点:
没有完全解决挖矿导致的问题,仍存在被攻击可能导致分叉。
三、股份授权证明(DPoS机制)
1.概念:
DPoS机制类似于董事会投票,持币人选出一定数量的节点,进行代理验证和记账。
2.优点:
同步确认的节点越来越少,其速度也会越来越快。
3.缺点:
弱去中心化,也没有摆脱对代币的依耐。
四、PBTF算法及实现
1.概念:
PBFT 共识分为三个过程,分别是预准备、准备、提交,其中后两个过程通信复杂度为 O(n^2),当节点数过多时,PBFT 的效率会急剧下降,因此,PBFT 通常应用在节点数较少的联盟链中。
从发起请求到最终收到reply,中间的共识过程需要经过3个阶段:
pre-prepare:primary收到请求,生成新区块并广播
prepare:所有replica收到区块后,广播区块验证结果,同时等待接收超过2/3的节点的广播
commit:收到2/3的节点广播或者超时后,再次发送广播,同时再次等待接收超过2/3的节点的广播
各共识方法对比如下: