HyperLedger Fabric基本概念

2021-10-25 06:22:11 字數 2938 閱讀 9249

源自

提供共識服務的網路節點,例如,使用kafka或pbft

維護賬本的網路節點,通常在hyperledger fabric中擔任背書或者記賬角色。

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

orderers & peers & comitter 三者之間關係如下圖所示:

fabric中交易的處理過程

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

客戶端應用使用sdk來跟fabric網路打交道。

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

然後,將交易的提案傳送給配置檔案裡指定的背書節點(endorser節點)

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

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

僅負責排序。

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

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

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

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

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

注意!同乙個物理節點可以僅作為committer角色執行,也可以同時擔任endorser和committer這兩種角色。

負責網路中所有證書的管理(分發、撤銷等),實現標準的pki(公共金鑰基礎)架構。

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

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

通道是兩個或多個特定網路成員之間的通訊的私有「子網」,用於進行需要資料保密的交易。在fabric中,建立乙個通道相當於建立了乙個個子鏈。

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

order 服務提供peer節點供訂閱的主題,每個主題是乙個通道。

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

賬本儲存orders提交經節點確認的交易記錄。

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

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

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

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

另一方面,如果應用程式不希望orderers知道交易的內容,它必須利用其他技術來隱藏敏感資料,例如雜湊雜湊或加密。

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

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

fabric網路-子鏈的拓撲關係圖

上**釋如下所示:

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

。所有的通道,都連線了ordering service說明,共識服務接收所有鏈的所有交易。這一點,也說明了hyperledger fabric不是完全的去中心化,而是多中心化。

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

從上圖可以知道:

。乙個鏈由1個通道+ 1個賬本+ n個成員組成。

。共識是由ordering service提供的。

。應用程式指定peer節點的子集中架設通道。

這些peer組成提交到該通道交易的相關者集合,而且只有這些peer可以接收包含相關交易的區塊,與其他交易完全隔離。

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

如上圖所示:

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個成員」為基本要素的子鏈!

Fabric private data基本概念

fabric private data利用sidedb來儲存私有資料,相當於在通道之上又提供了一層更細粒度的資料隱私保護機制。本文將介紹fabric private data的引入目的 基本概念與應用場景。目前在hyperledger fabric中實現資料隱私的方法是使用通道。但是官方並不孤立為了...

Fabric private data基本概念

fabric private data利用sidedb來儲存私有資料,相當於在通道之上又提供了一層更細粒度的資料隱私保護機制。本文將介紹fabric private data的引入目的 基本概念與應用場景。目前在hyperledger fabric中實現資料隱私的方法是使用通道。但是官方並不孤立為了...

Elasticsearch上手 幾個基本概念

elasticsearch的說明文件中,基本概念 basic concepts 一節中提到了一些術語,結合實踐經驗,嘗試重新理解一下。上面的文件包含了三個字段 user post date和message 我將其理解為文件的型別,如果非要對應到資料庫的概念上,那就是相當於mysql的表結構或者mon...