1. 程式人生 > >Hyperledger fabric 1.0Beta網絡組成及構建流程

Hyperledger fabric 1.0Beta網絡組成及構建流程

負責 組成 proposal 安裝 style 客戶端 invoke install eat

一、fabric網絡結構(暫時不包括CA)

技術分享

  如上圖所示,在fabric網絡中,O表示Orderer,P代表Peer,EP代表Endorsing Peer(endorser),CC代表Chaincode以及Client、Channel、Ledger、Transaction,由它們組成了整個網絡,下面對每種元素進行介紹:

  Client:安裝在節點(Peer)處的客戶端,可以發起構建channel的請求,也可以創建和發起事務(transaction);它不能直接操作chaincode,必須通過peer。

  Peer:從orderer處獲取區塊用於維護當前狀態以及存儲在本地的帳本(ledger)。

  Transaction:部署事務(Deploy Transaction)用於生成新的chaincode;喚醒事務(Invoke Transaction)用於通過chaincode執行一次操作。

  Endorsing Peer:一種特殊的節點,在channel內部署chaincode的時候需定義好備書節點列表;在Client發起事務時,在備書節點上模擬該事務的執行並返回響應。

  Orderer:負責維護網絡中的多個channgel;負責接收Client通過備書策略後的事務消息,將事務進行排序放入block中,再傳遞給該channel中的所有peer。

  Channel:在網絡中的若幹個節點中組成的子網,用於隔絕子網與其它節點間的通信和信息共享,Peer可以屬於不同的channel。

  Orderer System Channel:是網絡中創建的第一個channel,channel能有多個,但Orderer System Channel有且只能有一個,它根據配置文件創建,對它具有讀權限可以看到所有生成的  channel,不推薦在該channel跑任何應用。

  Chaincode:是運行在peer上的一段程序,用於對當前狀態或帳本進行讀寫操作。

  Ledger:對channel中所有事務的執行結果的一個有序的、防篡改的記錄。

  Anchor Peer:屬於多個channel的節點。

  Leading Peer: channel中負責與orderer通信的節點。

二、網絡的構建流程

  1. 系統開始部署時,會根據channel配置文件自動生成orderer system channel,這是網絡中的第一個channel,channel上的節點都是Orderer;
  2. client發送createChannel消息結某個orderer來創建一個channel,order經過多重認證後生成一個配置模板,並將帶有這個新建channel配置的CONFIG事務發送至orderer system channel;
  3. client通過對orderer輪詢channel是否創建成功,若成功,通過該channel發送joinChannel消息邀請相應的節點加入到該channel中;
  4. client調用installChaincode將chaincode源碼存放位置及相關信息告知channel內的所有節點;
  5. chainCode實例化:client通過channel發送sendInstantiateProposal消息至備書節點,通過channel的備書策略決定是否通過;
  6. client將備書節點的簽名封裝在事務消息中,發送至orderer,由orderer封裝成block後發送至其它節點,其它節點收到收到block後判斷事務的有效性,若有效則完成實例化。

  (5,6的執行和事務的處理流程完全一樣,將在下一篇裏詳細講述)

Hyperledger fabric 1.0Beta網絡組成及構建流程