溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何理解HyperLeger Fabric共識機制

發(fā)布時間:2021-11-17 16:26:24 來源:億速云 閱讀:478 作者:柒染 欄目:軟件技術

這篇文章將為大家詳細講解有關如何理解HyperLeger Fabric共識機制,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

HyperLeger Fabric開發(fā)(四)——HyperLeger Fabric共識機制

一、Fabric共識過程

1、Fabric共識過程

Fabric區(qū)塊鏈的網(wǎng)絡節(jié)點本質上是互相復制的狀態(tài)機,節(jié)點之間需要保持相同的賬本狀態(tài)。為了實現(xiàn)分布式節(jié)點的一致性,各個節(jié)點需要通過共識過程,對賬本狀態(tài)的變化達成一致性的認同。
Fabric區(qū)塊鏈的共識過程包括3個階段:背書、排序和校驗。

2、背書

在背書(endorsement)階段中,背書節(jié)點對客戶端發(fā)來的交易提案進行合法性校驗,然后模擬執(zhí)行鏈碼得到交易結果,最后根據(jù)設定的背書邏輯判斷是否支持該交易提案。如果背書邏輯決定支持交易提案,會把交易提案簽名后發(fā)回給客戶端。
客戶端通常需要根據(jù)鏈碼的背書策略,向一個或者多個成員的背書節(jié)點發(fā)出背書請求。背書策略會定義需要哪些節(jié)點背書交易才有效,例如需要5個成員的背書節(jié)點中至少3個同意;或者某個特殊身份的成員支持等??蛻舳酥挥性谑占銐蚨嗟谋硶?jié)點的交易提案簽名,交易才能被視為有效。

3、排序

排序(ordering)階段就是由排序服務對交易進行排序,確定交易之間的時序關系。排序服務把一段時間內收到的交易進行排序,然后把排序后的批量交易打包成數(shù)據(jù)塊(區(qū)塊),再把區(qū)塊廣播給通道中的成員。采用排序共識方式,各個成員收到的是一組發(fā)生順序相同的交易,從而保證了所有節(jié)點的數(shù)據(jù)一致性。
Fabric 1.0中的排序服務支持可插拔的架構,除了提供的SOLO和Kafka 模式外,用戶可以添加第三方的排序服務。SOLO是單機模式,僅適合開發(fā)測試中使用。Kafka模式是基于Kafka開源的分布式數(shù)據(jù)流平臺,具有高擴展性和容錯能力,適合用在生產(chǎn)系統(tǒng)。Kafka模式只提供了CFT類型的容錯能力,即僅可對節(jié)點的一般故障失效容錯,缺乏對節(jié)點故意作惡的行為進行容錯的能力。
排序服務是共識機制中重要的一環(huán),所有交易都要通過排序服務的排序才可以達成全網(wǎng)共識,因此排序服務要避免成為網(wǎng)絡上的性能瓶頸。

4、校驗

校驗(Validation)階段是確認節(jié)點對排序后的交易進行一系列的檢驗,包括交易數(shù)據(jù)的完整性檢查、是否重復交易、背書簽名是否符合背書策略的要求、交易的讀寫集是否符合多版本并發(fā)控制MVCC(Multiversion Concurrency Control)的校驗等。當交易通過了所有校驗后,將被標注為合法并寫入賬本中。因為所有的確認節(jié)點都按照相同的順序檢驗交易,并且把合法的交易依次寫入賬本中,因此不同確認節(jié)點的狀態(tài)能夠始終保持一致。

二、Fabric共識機制

1、Fabric共識模式

在所有Peer節(jié)點中,交易信息必須按照一致的順序寫入賬本(區(qū)塊鏈的一致性基本原則)。例如,比特幣通過POW機制競爭記賬權,由最先完成數(shù)學難題的節(jié)點獲取記賬權并生成區(qū)塊,決定本區(qū)塊中的信息順序,并廣播給全網(wǎng)所有節(jié)點,以此來達成賬本的共識。而Hyperledger Fabric采用了更加靈活、高效的共識算法,以適應企業(yè)場景下對高TPS的要求。目前,Hyperledger Fabric有三種交易排序算法:Solo、Kafka、SBFT。
Solo:只有一個排序服務節(jié)點負責接收交易信息并排序,是最簡單的一種排序算法,一般用于開發(fā)測試環(huán)境中。Solo共識模式屬于中心化的處理方式,不支持拜占庭容錯。
Kafka:Kafka是Apache的一個開源項目,主要提供分布式的消息處理/分發(fā)服務,每個Kafka集群由多個服務節(jié)點組成。Hyperledger Fabric利用Kafka對交易信息進行排序處理,提供高吞吐、低延時的處理能力,并且在集群內部支持節(jié)點故障容錯,但不支持拜占庭容錯。
SBFT:簡單拜占庭算法,支持拜占庭容錯的可靠排序算法,包括容忍節(jié)點故障以及一定數(shù)量的惡意節(jié)點。目前,Hyperledger Fabric社區(qū)正在開發(fā)SBFT算法。

2、Solo共識模式

Solo共識模式指網(wǎng)絡環(huán)境中只有一個排序節(jié)點,從Peer節(jié)點發(fā)送來的消息由一個排序節(jié)點進行排序和產(chǎn)生區(qū)塊;由于排序服務只有一個排序節(jié)點為所有Peer節(jié)點服務,沒有高可用性和可擴展性,不適合用于生產(chǎn)環(huán)境,通常用于開發(fā)和測試環(huán)境。Solo共識模式調用時序圖如下:
如何理解HyperLeger Fabric共識機制
Solo共識模式調用過程說明:
   A、Peer節(jié)點通過gPRC連接排序服務,連接成功后,發(fā)送交易信息。
   B、排序服務通過Recv接口,監(jiān)聽Peer節(jié)點發(fā)送過來的信息,收到信息后進行數(shù)據(jù)區(qū)塊處理。
   C、排序服務根據(jù)收到的消息生成數(shù)據(jù)區(qū)塊,并將數(shù)據(jù)區(qū)塊寫入賬本(Ledger)中,返回處理信息。
   D、Peer節(jié)點通過deliver接口,獲取排序服務生成的區(qū)塊數(shù)據(jù)。

3、Kafka共識模式

如何理解HyperLeger Fabric共識機制
共識集群由多個排序服務節(jié)點(OSN)和一個Kafka集群組成。排序節(jié)點之間不直接通信,僅僅與Kafka集群通信。
在排序節(jié)點的實現(xiàn)里,通道(Channel)在Kafka中是以主題topic的形式隔離。
每個排序節(jié)點內部,針對每個通道都會建立與Kafka集群對應topic的生產(chǎn)者及消費者。生產(chǎn)者將排序節(jié)點收到的交易發(fā)送到Kafka集群進行排序,在生產(chǎn)的同時,消費者也同步消費排序后的交易。

關于如何理解HyperLeger Fabric共識機制就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI