1. 程式人生 > >區塊鏈基礎知識系列 第四課Hyperledger fabric 1.0網路組成及構建流程

區塊鏈基礎知識系列 第四課Hyperledger fabric 1.0網路組成及構建流程

一、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的執行和事務的處理流程完全一樣,將在下一篇裡詳細講述)