BFT技術即拜占庭容錯技術,是一類分布式計算領域的容錯技術。名稱拜占庭是一個泛指,它代表著計算機領域,在這個領域內會有很多問題,如硬件錯誤、網絡擁堵或中斷以及遭到惡意攻擊等等,造成計算機網絡可能出現的混亂。BFT技術就是為了使混亂狀態達到一致性。 拜占庭將軍問題 BFT技術的由來源于一個叫拜占庭將軍問題。 拜占庭位于如今的土耳其的伊斯坦布爾,是東羅馬帝國的首都,由于當時拜占庭羅馬帝國國土遼闊,每支軍隊的駐地分隔很遠,將軍們只能靠信使傳遞消息。發生戰爭時,將軍們必須制訂統一的行動計劃。然而,這些將軍中有叛徒,叛徒希望通過影響統一行動計劃的制定與傳播,破壞忠誠的將軍們一致的行動計劃。因此,將軍們必須有一個預定的方法協議,使所有忠誠的將軍能夠達成一致,而且少數幾個叛徒不能使忠誠的將軍做出錯誤的計劃。也就是說,拜占庭將軍問題的實質就是要尋找一個方法,使得將軍們能在一個有叛徒的非信任環境中建立對戰斗計劃的共識,拜占庭問題就此形成。 拜占庭將軍問題(Byzantine Generals Problem),首先由Leslie Lamport與另外兩人在1982年提出,很簡單的故事模型,卻困擾了計算機科學家們數十年。 我們將拜占庭將軍問題簡化一下,所有忠誠的將軍都能夠讓別的將軍接收到自己的真實意圖,并最終一致行動;而形式化的要求就是,“一致性”與“正確性”。 一致性:每個忠誠的將軍必須收到相同的命令值vi(vi是第i個將軍的命令) 正確性:如果第i個將軍是忠誠的,那么他發送的命令和每個忠誠將軍收到的vi相同。 Lamport對拜占庭將軍的問題的研究表明,當n>3m時,即叛徒的個數m小于將軍總數的n的1/3時,通過口頭同步通信(假設通信是可靠的),可以構造同時滿足“一致性”和“正確性”的解決方法,即將軍們可以達成一致的命令。 BFT理論算法 BFT即拜占庭容錯系統,英文全稱是Byzantine Fault Tolerance,是一種理論上解決拜占庭問題的方法,并非實用,不過基于BFT理論延伸出了其他共識機制。 區塊鏈網絡的記賬共識和拜占庭將軍的問題是相似的。參與共識記賬的每一個節點相當于將軍,節點之間的消息傳遞相當于信使,某些節點可能由于各種原因而產生錯誤的信息傳遞給其他節點。通常這些發生故障的節點被稱為拜占庭節點,而正常的節點即為非拜占庭節點。 假設分布式系統擁有n臺節點,并假設整個系統拜占庭節點不超過m臺(n≥3m+1),拜占庭容錯系統需要滿足如下兩個條件: 所有非拜占庭節點使用相同的輸入信息,產生同樣的結果。在區塊鏈系統中,可以理解為,隨機數相同、區塊算法相同、原賬本相同的時候,計算結果相同。 如果輸入的信息正確,那么所有非拜占庭節點必須接收這個消息,并計算相應的結果。在區塊鏈系統中,可以理解為,非拜占庭節點需要對客戶的請求進行計算并生成區塊。 另外,拜占庭容錯系統需要達成如下兩個指標: 安全性:任何已經完成的請求都不會被更改,它可以在以后請求看到。在區塊鏈系統中,可以理解為,已經生成的賬本不可篡改,并且可以被節點隨時查看。 活性:可以接受并且執行非拜占庭客戶端的請求,不會被任何因素影響而導致非拜占庭客戶端的請求不能執行。在區塊鏈系統中,可以理解為,系統需要持續生成區塊,為用戶記賬,這主要靠挖礦的激勵機制來保證。 在分析拜占庭問題的時候,假設信道是可信的。拓展開來,在拜占庭容錯系統,普遍采用的假設條件包括: 拜占庭節點的行為可以是任意的,拜占庭節點之間可以共謀; 節點之間的錯誤是不相關的; 節點之間通過異步網絡連接,網絡中的消息可能丟失、亂序并延時到達,但大部分協議假設消息在有限的時間里能傳達到目的地; 節點之間傳遞的信息,第三方可以嗅探到,但是不能篡改、偽造信息的內容和破壞信息的完整性。 文章來源:MAC多原鏈(www.),如有侵權請聯系刪除 |
|