004/HyperLedger-Fabric(節點與channel關系)


HyperLedger:超級賬本項目

一。Fabric中的節點

1。節點術語

【1】。Orderers:

          提供共識服務的網絡節點,例如,使用Kafka或PBFT

【2】。Peers:

      維護賬本的網絡節點,通常在Hyperledger Fabric中擔任背書或者記賬角色。

【3】。Comitter:

      檢查交易的合法性,最終將交易提交到區塊鏈中。

2。Orderers & Peers & Comitter節點關系

Orderers & Peers & Comitter 三者之間關系如下圖所示:

                Fabric中交易的處理過程

在整個交易過程中,各個組件的主要功能如下:

【1】。客戶端(APP):

          客戶端應用使用SDK來跟Fabric網絡打交道。

          首先,客戶端從CA獲取合法的身份證書來加入網絡內的應用通道。

          然后,將交易的提案發送給配置文件里指定的背書節點(Endorser節點)

【2】。Endorser節點:

          完成對交易提案的背書(目前主要是簽名)處理。

          檢查是否合法,通過則模擬運行交易,對交易導致的狀態變化進行背書並返回結果給客戶端

【3】。Orderer節點:

          僅負責排序。

          為網絡中所有合法交易進行全局排序,並將一批排序后的交易組合生成區塊結構。

          Orderer一般不需要跟賬本和交易內容直接打交道。

【4】。Committer節點

          負責維護區塊鏈和賬本結構。

          該節點會定期地從Orderer獲取排序后的批量交易區塊結構,對這些交易進行落盤前的最終檢查。

          檢查通過后執行合法的交易,將結果寫入賬本,同時構造新的區塊。

          注意!同一個物理節點可以僅作為Committer角色運行,也可以同時擔任Endorser和Committer這兩種角色。

【5】。CA:

          負責網絡中所有證書的管理(分發、撤銷等),實現標准的PKI(公共密鑰基礎)架構。

二。Fabric中的通道

上面只是在一個交易中,從節點的角度,來看交易的處理過程。然而,究竟有多少節點參與背書?多少節點來進行共識排序呢?在Fabric中,引入了通道的概念。

一般情況下,一條區塊鏈網路的子鏈是按照“1個通道+ 1個賬本+ N個成員 ”的基本組成。

通道是兩個或多個特定網絡成員之間的通信的私有“子網”,用於進行需要數據保密的交易。在Fabric中,建立一個通道相當於建立了一個個子鏈。

創建通道是為了限制信息傳播的范圍,是和某一個賬本關聯的。每個交易都是和唯一的通道關聯的。這會明確地定義哪些實體(組織及其成員)會關注這個交易。

1。通道術語

【1】。通道:

         Order 服務提供Peer節點供訂閱的主題,每個主題是一個通道。

         peer可以在訂閱多個通道,並且只能訪問訂閱通道上的交易。關於“訂閱-發布主題”,在后面會詳細介紹。

【2】。賬本:

         賬本保存Orders提交經節點確認的交易記錄。

【3】。成員:

         訪問和使用賬本的網絡節點。

【4】。鏈:

         基本上,一個鏈由1個通道+ 1個賬本+ N個成員組成。非鏈的成員無法訪問該鏈上的交易。鏈的成員可以由應用程序動態指定。

從關鍵詞“1個通道+ 1個賬本+ N個成員”可以知道,要在Fabric區塊鏈網絡中,搭建一個子鏈,需要創建通道,利用通道將成員加入進來,由N個成員維護一個賬本,從而實現一個區塊鏈。

注意:

共識服務接收所有鏈的所有交易,因此保密性僅與peer而不是Orderers相關。 

當共識服務由被許可網絡中的可信方和監管機構組成時,這樣是合理的,也就是說,這些交易作為業務需求僅對他們可見。 

另一方面,如果應用程序不希望Orderers知道交易的內容,它必須利用其他技術來隱藏敏感數據,例如哈希散列或加密。

共識服務作為一個信任方存在,如果是由拜占庭容錯(BFT)共識協議實現(例如PBFT),可以防止不可信的Orderers破壞賬本的一致性和阻礙系統可用性。

然而,現在還沒有一種協議可以在有不可信的Orderers存在的情況下,提供多通道設計的同時提供數據保密性。

三。Fabric的拓撲結構

 

                                  Fabric網絡-子鏈的拓撲關系圖

上圖解釋如下所示:

【1】。三條線,藍色實線,紅色實線,和橙色虛線,分別代表三個通道。

【2】。所有的通道,都連接了Ordering Service說明,共識服務接收所有鏈的所有交易。這一點,也說明了HyperLedger Fabric不是完全的去中心化,而是多中心化。

【3】。peer1.1等節點,接入了多個通道,說明一個peer節點也可以參與到多個channel中。每個Channel之間是相互隔離,且是並行運行的。這一特性大大提高了系統的吞吐量。

從上圖可以知道:

【1】。一個鏈由1個通道+ 1個賬本+ N個成員組成。

【2】。共識是由Ordering Service提供的。

【3】。應用程序指定Peer節點的子集中架設通道。這些peer組成提交到該通道交易的相關者集合,而且只有這些peer可以接收包含相關交易的區塊,與其他交易完全隔離。

四。Fabric子鏈示意圖

下圖展示了多通道消息訂閱與共識服務,賬本之間的關系:

如上圖所示:

peer 1,2和N訂閱紅色通道,並共同維護紅色賬本;

peer 1和N訂閱藍色通道並維護藍色賬本;

類似地,peer 2和peer N在黑色通道上並維護黑色賬本。

在這個例子中,peer N在訂閱了所有通道,我們看到每個通道都有一個相關的賬本。

一般來說,我們稱不涉及所有peer的賬本為子賬本,而涉及所有peer的賬本另一種是系統賬本,即全賬本。

總結

在這里,我們理解了Fabric中的一個重要的概念,通道。以及一種重要的關系,通道和Peer節點的關系。

Hyperledger Fabric架構使用具有保證的發布-訂閱模式消息傳遞通道(如Kafka中的主題分區),這種發布-訂閱模式將共識服務與交易日志(賬本)進行了有效的分離

共識服務由稱為Orderers的網絡節點提供,並且賬本由Peer節點管理

從節點的角度來看,每個Peer節點連接到共識服務的一個或多個通道,就像發布-訂閱通信系統中的客戶端一樣。

在通道上廣播的交易按共識的順序排列(例如PBFT、kafka),訂閱通道的Peer節點接收到加密的區塊。

每個peer節點驗證區塊並將其提交到賬本,然后向應用程序提供其他使用賬本的服務。

從通道的節點來看,通道在眾多的節點中,選擇N個節點,加入到通道中,共同維護賬本。

以實現“1個通道+ 1個賬本+ N個成員”為基本要素的子鏈!

 

參考網址:https://zhuanlan.zhihu.com/p/35349072


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM