区块链技术 blockchain

PDBFT共识算法

2019-05-09  本文已影响1人  f34534e8684a

早期的公有链系统大多采用基于工作量证明(POW,proof of work)的共识机制,在这种机制下,硬件性能直接决定算力,也就是能成功生成区块的能力。基于POW的共识算法, 一方面会消耗大量算力,导致TPS不高,通常Bitcon的TPS为3-7。另一方面POW算法存在分叉的可能,例如50%攻击,这就使得用户需要等待较多的区块防止攻击。

为了克服上述问题,PCHAIN采用了全新的基于权益证明的PDBFT共识机制。在PDBFT中,每个validator需要预先抵押一定数量的代币(token)获得相应的投票权,然后通过投票达成共识以产生新的区块。相比雨联盟链较为安全的网络环境,公链中的validator更容易被攻击或者主动作恶,被称之为拜占庭节点,从而在行为上表现出更多的不确定性,比如,提出非法的区块,故意投反对票,给不同的节点发送不同的投票,甚至所有的拜占庭节点联合作恶等。这些行为都会影响到区块链网络的共识,对公链是不小的挑战。目前整个业界大都采用基于PBFT的改进算法以提升系统的性能, 如Hyperledger fabric 0.6、IstanbulBFT和Tendermint等。虽然PBFT协议能够解决拜占庭容错的问题,但是存在以下问题制约着它在大规模公链中的应用:

1、PBFT假设ValidatorSet是不变的,但在公链中,validator应该能够较为自由地加入和退出。

2、PBFT不会主动更换leader,只有发生超时才会进入换主机制。一方面leader更容易被攻击,另一方面leader可以进行选择打包,使得某些交易一直无法得到执行。

3、PBFT中,所有validator的投票都需要广播给所有节点,因此整体的通信开销是O(n2),这就极大限制了其在更大规模中网络中的应用。

PCHAIN团队经过长期研究和开发,提出了全新的共识协议-PDBFT,成功解决以上问题,使其更适合于大规模公链应用,主要特点包括如下方面:

1、定期更换ValidatorSet。使得validator能够较为自由的加入和退出,每个validator都可以选择是否参与下一个Epoch的ValidatorSet竞选,然后通过共识确定下一个Epoch的所有validator。新的ValidatorSet在当前Epoch结束后生效。

2、主动更换leader,使得针对leader的攻击变得更加困难。 PDBFT每一轮共识后,无论是否达成共识产生区块,都会更换leader。新一轮共识的leader由上一个区块的共识信息随机产生,且能够被其他validator验证。由于新的leader的产生仅仅依赖于前一个区块的共识和当前共识状态,因此没有节点提前获知下一个leader,使得攻击成功的概率大大降低。

3、将投票的通讯总量由O(n2)降低至O(n)。不同于全网广播投票,每个validator将投票发给当前的leader,leader收到 2f+1的投票后,通过聚合签名算法将其进行聚合。聚合后的签名的体积于单个签名相同,且各validator通过验证该聚合签名即可确认2f+1节点已经正确投票。Leader最后将聚合广播给所有validator,至此即可将协议的通信开销压缩至O(n), 从而大大提高了协议的扩展性,使得大规模应用成为可能。

上一篇 下一篇

猜你喜欢

热点阅读