2f+1=正常节点
3f + 1=总节点
PBFT算法的核心理论是n>=3f+1
n是系统中的总节点数,f是允许出现故障的节点数。换句话说,如果这个系统允许出现f个故障,那么这个系统必须包括n个节点,才能解决故障。
PBFT容忍无效或者恶意节点数:f,为了保障整个系统可以正常运转,需要有2f+1个正常节点,系统的总节点数为:|R| = 3f + 1。也就是说,PBFT算法可以容忍小于1/3个无效或者恶意节点,
只要有不少于(2*f+1)个非恶意节点正常工作,该系统就能达成一致性,如:7个节点的系统中允许2个节点出现拜占庭错误。
注: n是节点的总数 f是出问题的节点数
如下图所示:
我们通过杀掉节点的进程来模拟问题节点
总共7个节点出现一个问题节点
交易正常
总共7个节点出现2个问题节点
交易正常
总共7个节点出现3个问题节点(杀了3个节点,结果全部显示异常,应该是webase的bug)
交易出现问题
来源:oschina
链接:https://my.oschina.net/u/4348489/blog/4640218