美文网首页区块链社会学井英俱乐部
什么情况会导致拜占庭共识失败

什么情况会导致拜占庭共识失败

作者: 沛文沛语 | 来源:发表于2018-11-29 21:16 被阅读14次

与 PoW 不同的是,BFT出块候选是一个协作的过程,期间至少涉及 O(n^2) 的通讯复杂度,而 PoW 在出块竞争过程中无须任何通讯代价。基于 BFT 的协作过程将不会导致分叉,也不需要消耗稀缺资源(算力或者Coin Age),但是由于这个协作的过程涉及到相当多的数据通讯,所以这个过程无法在全网候选,验证并签名的过程无法在全网展开。这就是为什么 BFT 类算法一定会涉及到一个委员会的构建过程,并且验证签名只在一个小范围里面发生,剩下的人相信他们就好了。最近出现的很多基于 BFT 的公链项目,比如 Algorand,在如何安全公平的选出这个委员会方面做了很多工作,虽然这些工作对系统性能的提升没有直接关系。

BFT 类算法的投票通常是有权重的,以规避女巫攻击 (Sybil Attack)。而这个权重多与参与者的权益相关,和PoS的精神类似,进而现在很多人将 BFT 的这类投票算法称为了 PoS 算法。而事实上,BFT 类共识算法和一开始提出的 PoS 算法(例如 Peercoin)是本质不同的机制。

上面我们提到,不同的 BFT 类算法其具体选定出块节点以及委员会成员的过程和系统的性能关系不大。和 PoW/PoS 类似,其吞吐性能同样决定于每次出块的大小,以及出块的周期。在 BFT 系统中,如果想要允许每次出块比较大,就需要出块的周期也比较大,从而大概率保证新出的块及其委员会的签名数据在委员会内部完全传播。如果这个传播不充分,将可能导致委员会成员无法达成 2/3 以上的投票,进而使得委员会内部验证并签名过程超时,最终在本出块的周期内出块失败。-王嘉平


如果把共识节点都部署在云服务器上,那么如果云服务商出了网络故障,那么区块链网络就会受到影响。这个异步网络是有一定的时间限制的,故障导致通信超过这个时间就容易无法出块。因此对于区块链节点的部署最好是物理上分布式的,即便选择云服务器也要选择不同区域,不同品牌的,确保足够的冗余度。

相关文章

网友评论

    本文标题:什么情况会导致拜占庭共识失败

    本文链接:https://www.haomeiwen.com/subject/hnpsqqtx.html