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)
交易出現問題