源自
提供共識服務的網路節點,例如,使用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...