PDBFT共识算法¶
早期的公有链系统主要采用基于工作证明的共识机制。在这种机制下,硬件性能直接决定了计算能力,即成功生成块的能力。基于PoW的共识算法需要大量的计算能力,导致较低的TPS吞吐量,如Bitcoin提供的3到7个TPS。PoW算法也容易受到51%的攻击,因此用户在处理一个事务之前必须等待几个块确认。
为了克服这些问题,PCHAIN采用了一种新的共识机制——基于公平证明的PDBFT (proof of equity, PoE)。在PDBFT中,每个验证节点需要提前持有一定数量的令牌才能获得投票权,通过投票产生新的块来达成共识。与区块链联盟更安全的网络环境相比,公有链中的验证节点更容易受到攻击,可能会有恶意行为。这被称为拜占庭节点,表现出不确定或不可预测的行为。例如,它可能提出不合法的块,故意投反对票,或者向不同的节点发送不同的选票。拜占庭式的节点甚至可能在恶意的情况下协同工作。
这些行为影响了区块链网络的一致性,给公有链带来了很大的问题。目前,改进的基于PBFT的算法在行业中得到了广泛的应用,如Hyperledger Fabric 0.6、bulbft、Tendermint等。虽然PBFT协议可以解决拜占庭式容错问题,但以下问题限制了它在大型公有链中的应用:
PBFT假设验证节点集保持不变,但是在公有链中,验证节点应该能够更自由地加入和退出。
PBFT不会主动改变leader,只会在超时的情况下改变。一方面,领导者更容易受到攻击。另一方面,领导者可以有选择地打包一些事务,这样其他事务就无法执行。
在PBFT中,所有验证节点的投票需要通过广播传输到所有节点,因此总的通信开销为O(n2),这极大地限制了它在较大网络中的应用。
经过长期的研究和开发,PCHAIN团队提出了一种新的共识协议PDBFT,能够成功解决上述问题,适用于大型公有链。这一协商一致机制的主要特点包括:
定期替换验证节点集。这允许验证节点更自由地加入和退出机制。每个验证节点可以选择是否参加下一个纪元的验证节点集活动。所有下一个时代的确认者然后通过一致决定。新的验证节点集将在当前纪元结束后生效。
这使得攻击者变得更加困难。每次PDBFT达成共识后,无论是否达成共识或是否需要进行下一轮的共识,都要更换leader。新共识轮的领导者是根据前一个块的共识信息随机生成的,可以由其他验证节点进行验证。由于新leader的产生仅仅依赖于前一个区块的共识和当前共识的状态,所以没有节点提前知道下一个leader。因此,成功攻击的概率大大降低。
将选票从O(n2)传播到O(n)的通信成本降低。与向整个网络广播投票不同,每个验证节点将向当前领导人发送投票。在获得多数票(2/3+)后,领导者将通过聚合签名算法对它们进行聚合。聚合签名的大小与单个签名相同,并且每个验证节点都可以通过验证聚合签名来验证大多数节点是否正确投票。领导者最终将聚合广播给所有验证者,因此协议的通信开销减少到O(n)。这大大提高了协议的可扩展性,使大规模应用成为可能。