什麼是拜佔庭將軍問題?

中級7/30/2024, 2:11:07 AM
區塊鏈與拜佔庭將軍問題有着密切的聯系。區塊鏈網路是一種分布式網路,其節點就像拜佔庭將軍一樣,需要在不可靠的網路環境中達成交易和數據的共識。

拜佔庭是古代東羅馬帝國的首都,它曾經是世界上最強大、最富有的城市之一。但是,由於地域廣闊,拜佔庭經常遭受外敵侵略和內部叛亂。爲了保衛邊境,拜佔庭派出了多支軍隊,由不同的將軍指揮。將軍之間如何達成信息一致性成了最大問題。
而區塊鏈與拜佔庭將軍問題有着密切的聯系。區塊鏈網路是一種分布式網路,其節點就像拜佔庭將軍一樣,需要在不可靠的網路環境中達成交易和數據的共識。

兩軍問題

兩軍問題是拜佔庭問題的一個特例。
兩軍問題及其無解性證明最早是由E.A. Akkoyunlu、K.Ekanadham和R.V.Huber於1975年在聯合發表的論文《網路通信設計的約束與權衡》(Some Constraints and Trade-offs In The Design of Network Communications)中首次提出。
1978年,JimGray在《數據庫操作系統筆記》書中將這個問題正式命名爲“兩軍問題” (Two General’s Problem)。原本是用來分析在一個不可靠的通信鏈路上試圖通過通信以達成一致是存在問題的,後來常被用於闡述分布式系統的一致性和共識問題。

問題定義
A國的兩支軍隊,分別由兩個將軍領導,正在準備攻擊B國的一支軍隊。B國的這支軍隊被包圍在一個山谷裏,A國的兩只軍隊A1和A2分別駐扎在山谷兩邊的山頭上,但從A1駐扎地到A2駐扎地,只有唯一的一條山道,且必須經過山谷。同時,B軍的數量和作戰能力比A1軍和A2軍的任意一支都要強(A軍知道,B軍不知道),A國的任意一支軍隊單獨去進攻B軍,都會被B軍擊敗,從而讓B軍逃掉,但只要A1軍與A2軍聯合攻擊,就可以戰勝B軍。
[圖片]
問題:是否可以想出一種能讓A國的兩支軍隊的將軍達成同時攻擊約定的算法,該算法可包含發送和接收處理消息?

說答案:經典的兩軍問題是無解的,不存在一個能確保A國軍隊成功協商一致攻擊B國的協議。但在一定的容忍條件下,可以通過一種相對可靠的方式解決大多數問題,例如TCP協議中建立連接的“三次握手”機制。

拜佔庭將軍問題

拜佔庭將軍問題是由2013年度圖靈獎得主萊斯利·蘭波特(Leslie Lamport)在1982年發表的論文《拜佔庭將軍問題》(The Byzantine Generals Problem)中首次提出。拜佔庭將軍問題描述了如何在存在惡意行爲(如消息被篡改)的情況下實現分布式系統的一致性。
拜佔庭帝國的幾支軍隊將敵城包圍,每支軍隊都由一名將軍指揮。拜佔庭的軍隊之間只能通過通信兵相互傳達消息。在觀察敵情之後後,根據敵城的軍事力量,拜佔庭將軍們都得出相同的結論,只有超過半數的拜佔庭軍隊共同發起進攻,才能攻破城池,取得勝利。

因此,所有的拜佔庭軍隊必須制定一個聯合行動計劃,要麼共同進攻,要麼共同撤退。
但是,情報部門已經知道這些拜佔庭軍隊的將軍中存在叛徒,將試圖破壞忠誠的將軍們達成一致的聯合行動計劃。同時,雖然拜佔庭軍隊的通信兵一定能不被敵方截獲且確保送達消息,但是通信兵中也可能存在叛徒,可能在傳信過程中篡改或僞造消息,也可能丟失消息。

問題求解
如果將拜佔庭問題中的攻城軍隊的將軍數量對應爲分布式系統的節點數量,可以將符合拜佔庭問題條件的分布式系統稱爲”拜佔庭系統”,
在拜佔庭系統中任意兩個節點之間的通信是保證可達的,可以得出以下結論:
對於一個拜佔庭系統,如果系統總節點數爲Z,表示叛變將軍的不可靠節點數爲X,只有當Z≥3X+1時,可由基於拜佔庭客容錯(BFT)類算法的協議保證系統的一致性。

在實際的系統中,一般把由於系統故障導致節點不響應的情兄歸類爲“非拜佔庭錯誤(Crash Fault)”,把節點僞造或篡改信息進行惡意響應的情況歸類爲“拜佔庭錯誤(Byzantine Fault)”。

共識算法分類

區塊鏈系統是一種分布式系統,特別是像比特幣、以太坊等公有鏈系統,由大量高度分散且彼此不信任的網路節點構成,區塊鏈共識機制就是以共識算法爲核心,確保區塊鏈系統就某個事物始終能達成數據一致且不產生分叉。
目前,根據共識算法容錯類型的不同,可以將共識算法分爲非拜佔庭容錯類(CFT,Crash Fault Tolerance)算法和拜佔庭容錯類(BFT,ByzantineFault Tolerance)算法。

非拜佔庭容錯類共識算法

對於分布式系統,非拜佔庭容錯類共識算法能在節點發生系統故障或非計劃停機等非拜佔庭錯誤時,確保整個分布式系統的可靠性;但是,當系統中存在惡意節點僞造或篡改數據等行爲時,非拜佔庭容錯算法無法保證系統的可靠性。
因此,非拜佔庭容錯類共識算法主要用於實現封閉的、系統節點都受控的企業吸分布式系統,如某企業構建的內部分布式應用集羣系統或分布式存儲系統。非拜佔庭容錯類共識算法中最有代表性的包括PaxoS算法與Raft算法。

拜佔庭容錯類共識算法

拜佔庭容錯類共識算法能允許分布式系統節點發生任何類型的錯誤但錯誤節點數量不超過一定比例時,確保整個分布式系統的可靠性。簡單的說,只要分布式系統的故障 (由於非拜佔庭錯誤或拜佔庭錯誤導致)節點數與系統總節點數相比,小於一定比例,拜佔庭容錯類共識算法就能保證分布式系統的可靠性。
由於像比特幣、以太坊等區塊鏈系統中,存在大量彼此不信任的網路節點,不排除有惡意節點企圖僞造或篡改系統數據,因此,拜佔庭容錯類共識算法是區塊鏈共識機制主要採用的共識算法。拜佔庭容錯類共識算法中最有代表性的包括PBFT實用拜佔庭容錯算法、PoW工作量證明算法、PoS權益證明算法等。

* 本情報はGate.ioが提供または保証する金融アドバイス、その他のいかなる種類の推奨を意図したものではなく、構成するものではありません。
* 本記事はGate.ioを参照することなく複製/送信/複写することを禁じます。違反した場合は著作権法の侵害となり法的措置の対象となります。

什麼是拜佔庭將軍問題?

中級7/30/2024, 2:11:07 AM
區塊鏈與拜佔庭將軍問題有着密切的聯系。區塊鏈網路是一種分布式網路,其節點就像拜佔庭將軍一樣,需要在不可靠的網路環境中達成交易和數據的共識。

拜佔庭是古代東羅馬帝國的首都,它曾經是世界上最強大、最富有的城市之一。但是,由於地域廣闊,拜佔庭經常遭受外敵侵略和內部叛亂。爲了保衛邊境,拜佔庭派出了多支軍隊,由不同的將軍指揮。將軍之間如何達成信息一致性成了最大問題。
而區塊鏈與拜佔庭將軍問題有着密切的聯系。區塊鏈網路是一種分布式網路,其節點就像拜佔庭將軍一樣,需要在不可靠的網路環境中達成交易和數據的共識。

兩軍問題

兩軍問題是拜佔庭問題的一個特例。
兩軍問題及其無解性證明最早是由E.A. Akkoyunlu、K.Ekanadham和R.V.Huber於1975年在聯合發表的論文《網路通信設計的約束與權衡》(Some Constraints and Trade-offs In The Design of Network Communications)中首次提出。
1978年,JimGray在《數據庫操作系統筆記》書中將這個問題正式命名爲“兩軍問題” (Two General’s Problem)。原本是用來分析在一個不可靠的通信鏈路上試圖通過通信以達成一致是存在問題的,後來常被用於闡述分布式系統的一致性和共識問題。

問題定義
A國的兩支軍隊,分別由兩個將軍領導,正在準備攻擊B國的一支軍隊。B國的這支軍隊被包圍在一個山谷裏,A國的兩只軍隊A1和A2分別駐扎在山谷兩邊的山頭上,但從A1駐扎地到A2駐扎地,只有唯一的一條山道,且必須經過山谷。同時,B軍的數量和作戰能力比A1軍和A2軍的任意一支都要強(A軍知道,B軍不知道),A國的任意一支軍隊單獨去進攻B軍,都會被B軍擊敗,從而讓B軍逃掉,但只要A1軍與A2軍聯合攻擊,就可以戰勝B軍。
[圖片]
問題:是否可以想出一種能讓A國的兩支軍隊的將軍達成同時攻擊約定的算法,該算法可包含發送和接收處理消息?

說答案:經典的兩軍問題是無解的,不存在一個能確保A國軍隊成功協商一致攻擊B國的協議。但在一定的容忍條件下,可以通過一種相對可靠的方式解決大多數問題,例如TCP協議中建立連接的“三次握手”機制。

拜佔庭將軍問題

拜佔庭將軍問題是由2013年度圖靈獎得主萊斯利·蘭波特(Leslie Lamport)在1982年發表的論文《拜佔庭將軍問題》(The Byzantine Generals Problem)中首次提出。拜佔庭將軍問題描述了如何在存在惡意行爲(如消息被篡改)的情況下實現分布式系統的一致性。
拜佔庭帝國的幾支軍隊將敵城包圍,每支軍隊都由一名將軍指揮。拜佔庭的軍隊之間只能通過通信兵相互傳達消息。在觀察敵情之後後,根據敵城的軍事力量,拜佔庭將軍們都得出相同的結論,只有超過半數的拜佔庭軍隊共同發起進攻,才能攻破城池,取得勝利。

因此,所有的拜佔庭軍隊必須制定一個聯合行動計劃,要麼共同進攻,要麼共同撤退。
但是,情報部門已經知道這些拜佔庭軍隊的將軍中存在叛徒,將試圖破壞忠誠的將軍們達成一致的聯合行動計劃。同時,雖然拜佔庭軍隊的通信兵一定能不被敵方截獲且確保送達消息,但是通信兵中也可能存在叛徒,可能在傳信過程中篡改或僞造消息,也可能丟失消息。

問題求解
如果將拜佔庭問題中的攻城軍隊的將軍數量對應爲分布式系統的節點數量,可以將符合拜佔庭問題條件的分布式系統稱爲”拜佔庭系統”,
在拜佔庭系統中任意兩個節點之間的通信是保證可達的,可以得出以下結論:
對於一個拜佔庭系統,如果系統總節點數爲Z,表示叛變將軍的不可靠節點數爲X,只有當Z≥3X+1時,可由基於拜佔庭客容錯(BFT)類算法的協議保證系統的一致性。

在實際的系統中,一般把由於系統故障導致節點不響應的情兄歸類爲“非拜佔庭錯誤(Crash Fault)”,把節點僞造或篡改信息進行惡意響應的情況歸類爲“拜佔庭錯誤(Byzantine Fault)”。

共識算法分類

區塊鏈系統是一種分布式系統,特別是像比特幣、以太坊等公有鏈系統,由大量高度分散且彼此不信任的網路節點構成,區塊鏈共識機制就是以共識算法爲核心,確保區塊鏈系統就某個事物始終能達成數據一致且不產生分叉。
目前,根據共識算法容錯類型的不同,可以將共識算法分爲非拜佔庭容錯類(CFT,Crash Fault Tolerance)算法和拜佔庭容錯類(BFT,ByzantineFault Tolerance)算法。

非拜佔庭容錯類共識算法

對於分布式系統,非拜佔庭容錯類共識算法能在節點發生系統故障或非計劃停機等非拜佔庭錯誤時,確保整個分布式系統的可靠性;但是,當系統中存在惡意節點僞造或篡改數據等行爲時,非拜佔庭容錯算法無法保證系統的可靠性。
因此,非拜佔庭容錯類共識算法主要用於實現封閉的、系統節點都受控的企業吸分布式系統,如某企業構建的內部分布式應用集羣系統或分布式存儲系統。非拜佔庭容錯類共識算法中最有代表性的包括PaxoS算法與Raft算法。

拜佔庭容錯類共識算法

拜佔庭容錯類共識算法能允許分布式系統節點發生任何類型的錯誤但錯誤節點數量不超過一定比例時,確保整個分布式系統的可靠性。簡單的說,只要分布式系統的故障 (由於非拜佔庭錯誤或拜佔庭錯誤導致)節點數與系統總節點數相比,小於一定比例,拜佔庭容錯類共識算法就能保證分布式系統的可靠性。
由於像比特幣、以太坊等區塊鏈系統中,存在大量彼此不信任的網路節點,不排除有惡意節點企圖僞造或篡改系統數據,因此,拜佔庭容錯類共識算法是區塊鏈共識機制主要採用的共識算法。拜佔庭容錯類共識算法中最有代表性的包括PBFT實用拜佔庭容錯算法、PoW工作量證明算法、PoS權益證明算法等。

* 本情報はGate.ioが提供または保証する金融アドバイス、その他のいかなる種類の推奨を意図したものではなく、構成するものではありません。
* 本記事はGate.ioを参照することなく複製/送信/複写することを禁じます。違反した場合は著作権法の侵害となり法的措置の対象となります。
今すぐ始める
登録して、
$100
のボーナスを獲得しよう!