摘要:實用拜占庭容錯系統降低了拜占庭協議的運行復雜度,從指數級別降低到多項式級別,使拜占庭協議在分布式系統中應用成為可能。
拜占庭容錯系統簡介
原始的拜占庭容錯系統由于需要展示理論上的可行性而缺乏實用性。另外,算法的復雜度也是隨節點的增加而呈指數級增加。實用拜占庭容錯系統(Practical Byzantine Fault Tolerance, PBFT)降低了拜占庭協議的運行復雜度,從指數級別降低到多項式級別,使拜占庭協議在分布式系統中應用成為可能。
什么是實用拜占庭容錯系統實用拜占庭容錯系統是一類“狀態機”拜占庭系統(這里的狀態機可以理解為“系統狀態”,以區塊鏈記賬為例,系統每新增一個區塊,賬本就更新到一個新的狀態。前面講過,拜占庭容錯系統是一個強一致性協議,每次記賬后系統都會達成新的狀態。),要求系統所有節點共同維護一個狀態,所有節點采取的行動一致。
實用拜占庭容錯系統需要運行三類基本協議:
一致性協議:解決如何達成共識
檢查點協議:類似于操作系統的還原點
視圖更換協議:系統的每個服務器節點在同樣的配置信息下工作,該配置信息被稱為“視圖”。配置信息由主節點確定,主節點更換,視圖也隨之變化。
我們主要關注支持系統日常運行的一致性協議。
PBFT 的 一致性協議一致性協議至少包含請求(request)、序號分配(pre-prepare)、響應(reply)三個階段。根據協議設計的不同,可能包含相互交互(prepare) 、序號確認(commit)等階段。
PBFT系統通常假設故障節點個數為m個,而整個服務節點數為3m+1個。
上圖顯示了一個簡化的 PBFT 的協議通信模式,其中C為客戶端,N0~N3為服務節點,N0為主節點,N3為故障節點。協議的節本過程如下:
Request:客戶端發送請求,激活主節點的服務操作
當主節點接收請求后,啟動三階段的協議以向各從節點廣播請求
Pre-Prepare:主節點給請求賦值一個序列號n,廣播序號分配消息和請求消息,并構造PRE-PREPARE消息給各從節點
Prepare:從節點接收PRE-PREPARE消息,并向其他服務節點廣播PREPARE消息
Commit:各節點對視圖內的請求和次序進行驗證后,廣播COMMIT消息,執行收到的客戶端的請求并給客戶端以響應
Reply:客戶端等待來自不同節點的響應,若有m+1個響應相同,則該響應即為運算的結果
PBFT 演示在 n ≥ 3m + 1 的情況下一致性是可能解決的,其中,n為總節點數,m為惡意節點總數。我們模擬一下PBFT:
n = 4, m = 0
節點 | 得到數據 | 最終結果 |
---|---|---|
A | 1111 | 1 |
B | 1111 | 1 |
C | 1111 | 1 |
D | 1111 | 1 |
n = 4, m = 1
節點 | 得到數據 | 最終結果 |
---|---|---|
A | 1110 | 1 |
B | 1101 | 1 |
C | 1011 | 1 |
D | 0111 | 1 |
n = 4,m = 2
節點 | 得到數據 | 最終結果 |
---|---|---|
A | 1100 | NA |
B | 1001 | NA |
C | 0011 | NA |
D | 0110 | NA |
由此可以看出,實用拜占庭容錯系統能夠容納將近1/3的拜占庭節點。
實用拜占庭容錯系統在很多場景都有應用,在區塊鏈應用中,一般適合于對強一致性有要求的私有鏈和聯盟鏈場景。例如,在IBM主導的區塊鏈超級賬本項目中,實用拜占庭容錯系統是一個可選的共識協議。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/24192.html
摘要:課程概述本課程適合希望開發自己的專有區塊鏈的語言工程師,課程內容如下第一章課程簡介簡單介紹的定位特點以及對于開發者而言與以太坊的區別。課程地址區塊鏈開發詳解 簡介 tendermint是一個開源的完整的區塊鏈實現,可以用于公鏈或聯盟鏈,其官方定位 是面向開發者的區塊鏈共識引擎: showImg(https://segmentfault.com/img/remote/1460000016...
摘要:拜占庭故障是最嚴重最難處理的。在飛機發動機系統核電站和幾乎所有行為取決于大量傳感器結果的系統都需要拜占庭容錯。前面提到的算法,只要叛徒的數量不超過將軍的三分之一,就是拜占庭容錯。 showImg(https://segmentfault.com/img/bV6WtE?w=1080&h=870);區塊鏈本質上是去中心化的系統,由不同的成員計算機組成,這些成員的行為取決于它們的動機和它們可...
摘要:區塊鏈系統首先是一個分布式系統,分布式系統的核心問題包括一致性共識一致性問題一致性問題是分布式領域最為基礎也是最重要的問題。算法與算法問題是指分布式系統中存在故障,但不存在惡意節點的場景即可能消息丟失或重復,但無錯誤消息下的共識達成問題。 區塊鏈系統首先是一個分布式系統,分布式系統的核心問題包括一致性、共識 一致性問題 一致性問題是分布式領域最為基礎也是最重要的問題。如果分布式系統能實...
摘要:以太坊基金和以及在一起積極研究一個安全的去中心化的股權證明協議。總結在本文中,我們討論了工作量證明和股權證明,它們是實現了拜占庭容錯的共識算法,并在當今的區塊鏈系統中得到實際應用。 在第一部分中,我們討論了拜占庭將軍問題、如何實現拜占庭容錯以及他們與區塊鏈的關系。 在上一篇文章中提到的算法實際上就是實現拜占庭容錯的解決方案。但是,那個解決方案還不夠有效率,它的變型也是有限制的,即不到三...
摘要:比特幣和以太幣屬于一類區塊鏈,我們將其歸類為公共無許可的區塊鏈技術。例如,在單個企業中部署時,或由受信任的權威機構運作,完全拜占庭容錯的共識可能被認為是不必要的,并且對性能和吞吐量造成過度的拖累。 介紹 一般而言,區塊鏈是一個不可變的交易分類賬,維護在一個分布式對等節點網絡中。這些節點通過應用已經由共識協議驗證的交易來維護分類帳的副本,該交易被分組為包括將每個塊綁定到前一個塊的散列的塊...
閱讀 2567·2023-04-25 17:33
閱讀 647·2021-11-23 09:51
閱讀 2950·2021-07-30 15:32
閱讀 1394·2019-08-29 18:40
閱讀 1939·2019-08-28 18:19
閱讀 1464·2019-08-26 13:48
閱讀 2236·2019-08-23 16:48
閱讀 2274·2019-08-23 15:56