Byzantine-Fault-Tolerance
PBFT 算法 - 我們如何知道有多少節點出現故障?
我正在閱讀這篇關於 PBFT的文章,但我無法理解如何在實踐中使用它。如果我們不知道有多少節點出現故障(我認為這是一個有效的假設),那麼我們如何計算程序相互發送消息的輪數?
連結的文章顯示了一個範例,
n = 7
在m = 2
該範例中執行兩輪消息傳遞,然後計算輸出值。但我們怎麼能一開始就知道m = 2
呢?算法本身可以在執行過程中弄清楚嗎?
和參數由實現
n
者m
在選擇使用算法時選擇。例如,我可能決定在 50 個節點上使用此算法,並選擇能夠容忍多達 4 個故障節點。因此,myn
是 50,mym
是 4。如果我需要設計一個系統來容忍各種不同的
n
值,我會在某處有一些程式碼,給定正在使用的實際節點數(n
值),選擇我希望算法的故障節點數能夠容忍(m
價值)。在所有情況下,都
n
必須知道。您必須知道系統中有多少個節點,否則您沒有系統。然後m
可以通過程式碼選擇,受算法限制。然後兩者n
和m
都是已知的。例如,您可能有一些程式碼讀取配置文件,該文件指定係統中其他節點的身份以及系統將容忍的故障節點的數量。然後使用該程式碼的人創建該配置文件並將其載入到所有節點中。現在你有了一個可用的系統。