Protocol-Design

為什麼使用簡單簽名/投票的 BFT 協議不起作用?

  • July 5, 2019

PBFT 和大多數共識算法比簡單的投票方案更複雜。通過簡單投票,我的意思是:我們要求所有節點簽署他們的本地狀態副本並將這個簽署的消息發送給所有其他節點。然後每個節點從所有其他節點收集消息,如果超過 t < n 個節點同意相同的狀態,則接受該狀態。

有很多方法可以實現上述方案(例如,每個節點單獨簽名,或使用門檻值簽名),這似乎比其他協議(例如 PBFT)簡單得多(其中需要指定領導者)。

因此,我只能假設投票不能直接產生安全的 BFT 協議,但我的問題是——為什麼會這樣?投票達成的共識在哪里中斷?

BFT 的目的是實現拜占庭容錯,而不是加密安全。事實上,一些 BFT 論文中根本沒有密碼學。您可以設計一個安全的投票方案,但這並不能自動使其容忍拜占庭式的失敗。

通常,這些算法尋求在一定數量的故障中實現活躍性(數據的最終一致性)和安全性,這些前提都不存在於您的投票範例中。如果您可以通過您的協議保證即使存在一定數量的拜占庭節點(t < n),該協議也可以就一致的狀態達成共識,那麼您剛剛創建了一個 BFT 協議。

沒有領導者,誰來決定投票的內容?如果每個人都同意問題是什麼,那麼剩下的就是簽署答案併計算選票。pBFT 實現的是對交易進行排序——不僅同意交易發生,而且同意交易發生的順序。一旦知道了領導者(他接下來所說的就是下一筆交易),仍然需要三輪投票來確保每個人都與他一致。實際上兩輪就足夠了,但需要第三輪以確保該過程在選出新的領導者之前結束。

引用自:https://crypto.stackexchange.com/questions/57989