
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
4.1.4 共识算法分类
从传统分布式一致性算法的缓慢发展到现如今区块链共识算法的百花齐放,共识算法的发展已经走过了四十年左右的时光。不同共识算法的侧重点不同,它们所面临的问题、环境也不同。本节将从如下几个角度对共识算法进行分类。
1. 容错类型
根据是否能够容忍拜占庭错误,可以将共识算法分为两类。
• 拜占庭容错共识算法:PBFT、PoW、PoS、DPoS。
• 非拜占庭容错共识算法:Paxos、RAFT。
是否能够容忍拜占庭错误标志着该算法是否能够应用到低信任的网络。通常来说,在公有链环境中必须使用拜占庭容错算法,而在联盟链中可以根据联盟参与方之间的信任程度进行选择。
2. 算法确定性
根据算法确定性,可以将共识算法分为两类。
• 确定性共识算法:Paxos、RAFT、PBFT。
• 概率性共识算法:PoW、部分PoS。
确定性共识指共识决策一旦达成,就不存在回退的可能,这一类共识算法通常是传统分布式一致性算法及其改进版本;概率性共识指已经达成的共识决策在未来有一定的概率会被回退,这个概率随着时间的推移会趋于0,这一类共识算法通常是应用在公有链上的区块链共识算法。
3. 选主策略
根据选主策略,可以将共识算法分为两类。
• 选举类共识算法:RAFT、PBFT。
• 证明类共识算法:PoW、PoS。
选举类共识指通过投票选择出块节点,同一个节点可以连续多轮作为出块节点存在,这一类共识算法通常是传统分布式一致性算法及其改进版本;证明类共识指出块节点需要通过某种方式证明自己具备某种能力,从而获得出块权,这一类共识算法通常每轮的出块节点都不相同,从而保证出块权的公平性,通常应用在公有链上。