什麼是拜占庭容錯?
中本聰在 2008 年建立了比特幣,他將該網路構建為一個強大的分散式點對點模型,無需任何中介機構維護。從那時起,許多數字貨幣被建立,它們遵循相同的系統,其中所有節點共享相同的資訊(區塊鏈的相同副本),並且任何節點都可以安全地與網路中的任何其他節點通訊,因為它們知道它們顯示的是相同的資料。
拜占庭容錯 (BFT) 是區塊鏈技術面臨的最具挑戰性的問題之一。加密貨幣網路的所有參與者都需要定期就區塊鏈的當前狀態達成一致或達成共識。網路中至少 (2/3) 二分之二或更多可靠且誠實的節點使其成為一個可靠的網路。如果超過一半的節點惡意行事,那麼系統將面臨 51% 攻擊,這將在另一篇文章中討論。
加密貨幣中拜占庭容錯的概念是,即使某些節點無法響應或給出惡意值來誤導網路,也能根據工作量證明就特定區塊達成協議或共識的功能。BFT 的主要目標是在存在一些故障節點的情況下保護系統。這也有助於減少故障節點的影響。
拜占庭將軍問題
拜占庭容錯的概念源於拜占庭將軍問題,該問題由 Leslie Lamport、Robert Shostak 和 Marshall Pease 於 1982 年在微軟研究院的一篇論文中解釋。
想象一下,拜占庭軍隊的一些師駐紮在敵方城市外,每個師由自己的將軍指揮。將軍們只能透過信使相互通訊。在觀察敵人後,他們必須決定一個共同的行動計劃。但是,一些將軍可能是叛徒,試圖阻止忠誠的將軍達成協議。將軍們必須決定何時進攻城市,但他們需要軍隊中的大多數人同時進攻。將軍們必須有一個演算法來保證 (a) 所有忠誠的將軍都決定相同的行動計劃,以及 (b) 少數叛徒不能導致忠誠的將軍採取錯誤的計劃。忠誠的將軍將按照演算法所說的去做,但叛徒可以做任何他們想做的事情。演算法必須保證條件 (a),無論叛徒做什麼。忠誠的將軍不僅應該達成協議,還應該就合理的計劃達成一致。
在點對點網路中,共識是透過忠誠和無故障節點的一致同意實現的。當所有節點重複傳入訊息時,就會實現拜占庭容錯的基礎。如果一個節點重複傳入訊息,則表示它沒有故障或惡意。如果所有接收者都重複傳入訊息,則網路排除了拜占庭節點的問題。
拜占庭節點 是暴君節點,它可以撒謊或故意誤導網路中的其他節點,以及參與共識協議的節點。因此,協議應該凌駕於惡意節點的非法干預之上,並且應該完美地執行,儘管存在這些拜占庭節點。
拜占庭故障可以分為兩類 -
節點確實存在技術錯誤,並且停止工作或響應。
另一個是任意節點故障。在任意節點故障的情況下,節點可能無法返回結果或故意響應誤導性結果。它也可能向系統的不同部分丟擲不同的結果以誤導系統。
拜占庭容錯是加密貨幣網路克服這些挑戰的方式。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP