提供共識服務的網絡節點,例如,使用Kafka或PBFT網絡
維護帳本的網絡節點,一般在Hyperledger Fabric中擔任背書或者記帳角色。架構
檢查交易的合法性,最終將交易提交到區塊鏈中。區塊鏈
Orderers & Peers & Comitter 三者之間關係以下圖所示:加密
Fabric中交易的處理過程spa
在整個交易過程當中,各個組件的主要功能以下:設計
客戶端應用使用SDK來跟Fabric網絡打交道。3d
首先,客戶端從CA獲取合法的身份證書來加入網絡內的應用通道。日誌
而後,將交易的提案發送給配置文件裏指定的背書節點(Endorser節點)blog
完成對交易提案的背書(目前主要是簽名)處理。排序
檢查是否合法,經過則模擬運行交易,對交易致使的狀態變化進行背書並返回結果給客戶端
僅負責排序。
爲網絡中全部合法交易進行全局排序,並將一批排序後的交易組合生成區塊結構。
Orderer通常不須要跟帳本和交易內容直接打交道。
負責維護區塊鏈和帳本結構。
該節點會按期地從Orderer獲取排序後的批量交易區塊結構,對這些交易進行落盤前的最終檢查。
檢查經過後執行合法的交易,將結果寫入帳本,同時構造新的區塊。
注意!同一個物理節點能夠僅做爲Committer角色運行,也能夠同時擔任Endorser和Committer這兩種角色。
負責網絡中全部證書的管理(分發、撤銷等),實現標準的PKI(公共密鑰基礎)架構。
上面只是在一個交易中,從節點的角度,來看交易的處理過程。然而,究竟有多少節點參與背書?多少節點來進行共識排序呢?在Fabric中,引入了通道的概念。
通常狀況下,一條區塊鏈網路的子鏈是按照「1個通道+ 1個帳本+ N個成員 」的基本組成。
通道是兩個或多個特定網絡成員之間的通訊的私有「子網」,用於進行須要數據保密的交易。在Fabric中,創建一個通道至關於創建了一個個子鏈。
建立通道是爲了限制信息傳播的範圍,是和某一個帳本關聯的。每一個交易都是和惟一的通道關聯的。這會明確地定義哪些實體(組織及其成員)會關注這個交易。
Order 服務提供Peer節點供訂閱的主題,每一個主題是一個通道。
peer能夠在訂閱多個通道,而且只能訪問訂閱通道上的交易。關於「訂閱-發佈主題」,在後面會詳細介紹。
帳本保存Orders提交經節點確認的交易記錄。
訪問和使用帳本的網絡節點。
基本上,一個鏈由1個通道+ 1個帳本+ N個成員組成。非鏈的成員沒法訪問該鏈上的交易。鏈的成員能夠由應用程序動態指定。
從關鍵詞「1個通道+ 1個帳本+ N個成員」能夠知道,要在Fabric區塊鏈網絡中,搭建一個子鏈,須要建立通道,利用通道將成員加入進來,由N個成員維護一個帳本,從而實現一個區塊鏈。
注意:
共識服務接收全部鏈的全部交易,所以保密性僅與peer而不是Orderers相關。
當共識服務由被許可網絡中的可信方和監管機構組成時,這樣是合理的,也就是說,這些交易做爲業務需求僅對他們可見。
另外一方面,若是應用程序不但願Orderers知道交易的內容,它必須利用其餘技術來隱藏敏感數據,例如哈希散列或加密。
共識服務做爲一個信任方存在,若是是由拜占庭容錯(BFT)共識協議實現(例如PBFT),能夠防止不可信的Orderers破壞帳本的一致性和阻礙系統可用性。
然而,如今尚未一種協議能夠在有不可信的Orderers存在的狀況下,提供多通道設計的同時提供數據保密性。
Fabric網絡-子鏈的拓撲關係圖
上圖解釋以下所示:
【1】。三條線,藍色實線,紅色實線,和橙色虛線,分別表明三個通道。
【2】。全部的通道,都鏈接了Ordering Service說明,共識服務接收全部鏈的全部交易。這一點,也說明了HyperLedger Fabric不是徹底的去中心化,而是多中心化。
【3】。peer1.1等節點,接入了多個通道,說明一個peer節點也能夠參與到多個channel中。每一個Channel之間是相互隔離,且是並行運行的。這一特性大大提升了系統的吞吐量。
從上圖能夠知道:
【1】。一個鏈由1個通道+ 1個帳本+ N個成員組成。
【2】。共識是由Ordering Service提供的。
【3】。應用程序指定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個成員」爲基本要素的子鏈!
參考網址:https://zhuanlan.zhihu.com/p/35349072