共識算法

共識算法

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

基本信息

簡介

共識算法共識算法
分散式系統中,多個主機通過異步通信方式組成網路集群。在這樣的一個異步系統中,需要主機之間進行狀態複製,以保證每個主機達成一致的狀態共識。然而,異步系統中,可能出現無法通信的故障主機,而主機的性能可能下降,網路可能擁塞,這些可能導致錯誤信息在系統內傳播。因此需要在默認不可靠的異步網路中定義容錯協定,以確保各主機達成安全可靠的狀態共識。
利用區塊鏈構造基於網際網路的去中心化賬本,需要解決的首要問題是如何實現不同賬本節點上的賬本數據的一致性和正確性。這就需要借鑑已有的在分散式系統中實現狀態共識的算法,確定網路中選擇記賬節點的機制,以及如何保障賬本數據在全網中形成正確、一致的共識。

特點

在20世紀80年代出現的分散式系統共識算法,是區塊鏈共識算法的基礎。經典的拜占庭容錯技術(ByzantineFaultTolerance,BFT)是一類分散式計算領域的容錯技術。拜占庭假設是對現實世界的模型化,由於硬體錯誤、網路擁塞或中斷以及遭到惡意攻擊等原因,計算機和網路可能出現不可預料的行為。拜占庭容錯技術被設計用來處理這些異常行為,並滿足所要解決的問題的規範要求。
於是,拜占庭將軍問題的可以描述為:一個傳送命令的將軍要傳送一個命令給其餘n-1個將軍,使得:
IC1.所有忠誠的接收命令的將軍遵守相同的命令;
IC2.如果傳送命令的將軍是忠誠的,那么所有忠誠的接收命令的將軍遵守所接收的命令。
Lamport對拜占庭將軍問題的研究表明,當n>3m時,即叛徒的個數m小於將軍總數n的1/3時,通過口頭同步通信(假設通信是可靠的),可以構造同時滿足IC1和IC2的解決方案,即將軍們可以達成一致的命令。但如果通信是可認證、防篡改偽造的(如採用PKI認證,訊息簽名等),則在任意多的叛徒(至少得有兩個忠誠將軍)的情況下都可以找到解決方案。
而在異步通信情況下,情況就沒有這么樂觀。
Fischer-Lynch-Paterson定理證明了,只要有一個叛徒存在,拜占庭將軍問題就無解。翻譯成分散式計算語言,在一個多進程異步系統中,只要有一個進程不可靠,那么就不存在一個協定,此協定能保證有限時間內使所有進程達成一致。由此可見,拜占庭將軍問題在一個分散式系統中,是一個非常有挑戰性的問題。因為分散式系統不能依靠同步通信,否則性能和效率將非常低。因此尋找一種實用的解決拜占庭將軍問題的算法一直是分散式計算領域中的一個重要問題。

相關詞條

相關搜尋

熱門詞條

聯絡我們