區塊鏈知識分享——共識算法

區塊鏈知識分享——共識算法

SCRY.INFO

區塊鏈架構是一種分佈式的架構。其部署模式有公共鏈、聯盟鏈、私有鏈三種,對應的是去中心化分佈式系統、部分去中心化分佈式系統和弱中心分佈式系統。

分佈式系統中,多個主機通過異步通信方式組成網絡集群。在這樣的一個異步系統中,需要主機之間進行狀態複製,以保證每個主機達成一致的狀態共識。然而,異步系統中,可能出現無法通信的故障主機,而主機的性能可能下降,網絡可能擁塞,這些可能導致錯誤信息在系統內傳播。因此需要在默認不可靠的異步網絡中定義容錯協議,以確保各主機達成安全可靠的狀態共識。

利用區塊鏈構造基於互聯網的去中心化賬本,需要解決的首要問題是如何實現不同賬本節點上的賬本數據的一致性和正確性。

這就需要借鑑已有的在分佈式系統中實現狀態共識的算法,確定網絡中選擇記賬節點的機制,以及如何保障賬本數據在全網中形成正確、一致的共識。

在 20 世紀 80 年代出現的分佈式系統共識算法,是區塊鏈共識算法的基礎。經典的拜占庭容錯技術(Byzantine Fault Tolerance,BFT)是一類分佈式計算領域的容錯技術。拜占庭假設是對現實世界的模型化,由於硬件錯誤、網絡擁塞或中斷以及遭到惡意攻擊等原因,計算機和網絡可能出現不可預料的行為。拜占庭容錯技術被設計用來處理這些異常行為,並滿足所要解決的問題的規範要求。

於是,拜占庭將軍問題的可以描述為:一個發送命令的將軍要發送一個命令給其餘 n-1 個將軍,使得:

IC1.所有忠誠的接收命令的將軍遵守相同的命令;

IC2.如果發送命令的將軍是忠誠的,那麼所有忠誠的接收命令的將軍遵守所接收的命令。

Lamport 對拜占庭將軍問題的研究表明,當 n>3m 時,即叛徒的個數 m 小於將軍總數 n 的 1/3 時,通過口頭同步通信(假設通信是可靠的),可以構造同時滿足 IC1 和 IC2 的解決方案,即將軍們可以達成一致的命令。但如果通信是可認證、防篡改偽造的(如採用 PKI認證,消息簽名等),則在任意多的叛徒(至少得有兩個忠誠將軍)的情況下都可以找到解決方案。

而 在 異 步 通 信 情 況 下 , 情 況 就 沒 有 這 麼 樂 觀 。

Fischer-Lynch-Paterson 定理證明了,只要有一個叛徒存在,拜占庭將

軍問題就無解。翻譯成分佈式計算語言,在一個多進程異步系統中,只要有一個進程不可靠,那麼就不存在一個協議,此協議能保證有限時間內使所有進程達成一致。由此可見,拜占庭將軍問題在一個分佈式系統中,是一個非常有挑戰性的問題。因為分佈式系統不能依靠同步通信,否則性能和效率將非常低。因此尋找一種實用的解決拜占庭將軍問題的算法一直是分佈式計算領域中的一個重要問題。


分享到:


相關文章: