如何通俗的理解IBM區塊鏈技術HyperLedger fabric中的共識演算法PBFT 拜占庭容錯 ?

時間 2021-05-13 00:43:49

1樓:炳坤

通俗的回答只能往往都非常表面,樓主的問題都相當專業啊,很難通俗地回答。。

通俗的答案是這樣的(實在抱歉,對於那些想像看電影一樣看答案的人,我覺得實在必要這樣去解釋):

先了解什麼是共識:

簡化的純去中心化的區塊鏈網路

這個區塊鏈系統有不同的服務節點(Node/Miner)組成,節點可能失敗或惡意

不同的客戶端可能在不同的地方發起交易,可能同時或者不同時

節點之間的通訊可能延時或者失敗,網路可以分片

系統本身是封閉和自洽的,唯一的輸入是交易,一的輸出是交易導致的資料庫的變更(賬號對應的餘額等。

共識的目的是,在沒有可靠的全域性時鐘,節點和網路不可靠的情況下,讓系統中的節點對輸入和輸出達成一致

再看看什麼是拜占庭:

錯誤模型有許多種(更多細節可以看這裡),包括Byzantine failures, omission failures, crash failures,fail-stop failures等,拜占庭作為最限制放得最寬的一類,節點可以延時、丟棄甚至篡改資料報,可以向不同節點發衝突的包(這點對於PBFT很重要)。

總而言之,PBFT就是在存在<1/3拜占庭節點的情況下達成共識。

在以上的基礎上,對於想更好地理解PBFT的人,無論是區塊鏈領域的還是有關傳統的後台開發,我覺得理解以下兩個問題非常重要:

為什麼需要收集兩次簽名?試想網路被partition的情況,事實上沒有哪個確定性(deterministic)的演算法是可以在少於兩次互動之內達成共識的,這是推敲liveness和correctness的關鍵。

view在這裡是什麼角色?邏輯時鐘,這跟RAFT的term(任期)是乙個道理,這是分布式系統最基礎不過的工具了,具體地請看這裡。

2樓:yousleepfirst

題主解釋了為什麼需要prepare,我想問一下為什麼需要commit,我的意思是,如果不要commit,直接在第一輪相互通訊之後直接根據大多數來執行,會有什麼問題?

3樓:施勇

最近在研究,看他的文件,我的理解就是所有的交易都交給order節點排序,類似於多進一出的乙個佇列。排完序再寫入賬本。說的可能不對。等我研究我文件,再來補充吧,先占個坑

4樓:

說說我的理解。

假設總節點數是N,f是有問題節點的數量,那麼,為了抵消(或者理解為抗衡、對抗)這個f個有問題的節點,至少也需要f個正常的節點吧,但是由於網路中存在不響應的情況,有可能這f個正常的節點完全不響應(也就是說沒有收到這f個正常的節點訊息),那麼剩下的正常而且又響應的節點數量(我們就簡單稱它為A)就是:A = N-f-f(第乙個f是有問題的節點數,第二個f是不響應的正常節點數),而要得到正確的共識結果,那麼這個收到的正常節點數A要比錯誤的節點數f大,也就是N-f-f>f,也就是N>3f,也就是總節點數至少是3f+1.

5樓:蔣雨辰

寫乙個通俗易懂理解PBFT拜占庭容錯的回答。

拜占庭容錯是一種共識演算法,即如何使遠距離通訊的人們對乙個提案達成一致意見。

與普通的共識演算法(例如,majority wins,即超過一半人贊成即有效)不同的是,PBFT可以容忍投票的人中產生叛徒或者不響應

舉個合適的例子,我是乙個愚昧的國王,沒有自己的判斷力,我不知道應該對敵國進攻還是投降好。我有一些大臣,我希望聽從他們的意見做出決定,但是他們現在都離我很遠,我只能通過飛鴿傳書的方式告知他們目前的問題,得到他們的選擇。然而,可能出現大臣叛變,故意提出相反的觀點(錯誤的節點),也可能出現鴿子在傳輸過程中飛錯了,我沒有得到該大臣的選擇(網路堵塞)。

PBFT可以保證如果我有3f+1的大臣的話,即使其中有f個大臣叛變或者沒有響應,我依然可以得出共識的正確結果。

這裡乙個核心問題就是,為什麼有f個節點未響應或出錯時,為了保證系統的正常,我需要總共有3f+1個節點進行投票。

同樣用國王的例子,假設除了我(國王)一共有n個大臣,我知道其中有f個大臣是叛徒或者未響應,所以我一定要能從n-f個大臣的回應中進行判斷(如果上述f個大臣都是未響應)。然而由於是飛鴿傳書(非同步傳輸),所以當我陸續收到n-f個傳來的訊息後,我並不知道之後是否還會有新的訊息傳來。因為如果f個有問題的大臣都是未響應,那麼我將不會收到新的訊息,如果其中有大臣是叛徒,我之後還會收到訊息,但作為國王的現在不知道是哪種情況,卻需要立刻作出進攻還是投降的判斷。

最壞的情況下,剩下的f個大臣都是好人,只是鴿子飛得慢我還沒收到訊息,也就是說我收到訊息的n-f的大臣中有f個大臣都是叛徒,即f個叛徒和n-2f個好人。由於多數者勝,所以只有當n-2f>f的情況下,作為國王的我會做出正確的決定,即n>3f,n最小需要取3f+1。

這也就是為什麼PBFT能保證有3f+1節點投票時,允許f個節點未響應或者出現故障投相反票。

6樓:hyperledger

(1)從全網節點擊舉出乙個主節點(Leader),新區塊由主節點負責生成。

(2)每個節點把客戶端發來的交易向全網廣播,主節點將從網路收集到需放在新區塊內的多個交易排序後存入列表,並將該列表向全網廣播。

(3)每個節點接收到交易列表後,根據排序模擬執行這些交易。所有交易執行完後,基於交易結果計算新區塊的雜湊摘要,並向全網廣播。

(4)如果乙個節點收到的2f(f為可容忍的拜占庭節點數)個其它節點發來的摘要都和自己相等,就向全網廣播一條commit訊息。

(5)如果乙個節點收到2f+1條commit訊息,即可提交新區塊及其交易到本地的區塊鏈和狀態資料庫。

如何理解區塊鏈的智慧型合約?

KJ Kan Jia 與其說區塊鏈的智慧型合約,不如說目前大家理解的都是以太坊的智慧型合約。可以說以太坊創造了智慧型合約。智慧型合約是區塊鏈上的一段程式,沒有智慧型合約,區塊鏈還是區塊鏈。比較扯的是很多鏈為了讓自己有智慧型合約,於是移植了相容以太坊的智慧型合約功能。實際上以太坊上的智慧型合約幾乎不會...

區塊鏈技術有哪些?應用前景如何?

TokenPocket錢包 區塊鏈技術的核心是分布式賬本 非對稱加密 共識機制和智慧型合約。目前區塊鏈在各個行業都已應用。但區塊鏈技術同時也面臨很多挑戰,一是其去中心化的概念受到現行觀念 制度的約束,二是在技術層面,區塊鏈還要更加突破性的完善,三是競爭性的技術挑戰,人類發展的技術有很多,哪種技術很高...

區塊鏈技術對審計行業衝擊有多大,區塊鏈下的審計應該怎麼做呢

憂鬱的大寶貝 區塊鏈的特點是去中心化,集體維護和不可篡改。通過加密解密技術,提高互信機制。短期來看,區塊鏈可以增加獲取審計證據的有力程度,降低獲取審計證據的成本,提高審計效率。隨著區塊鏈技術的發展,審計人才需求從純財會知識轉向為計算機,資訊科技,人工智慧等跨學科人才。長遠來看,區塊鏈技術成熟將會解決...