Hyperledger Fabric是一個許可的區塊鏈架構(permissioned blockchain infrastructure)。其由IBM和Digital Asset最初貢獻給Hyperledger專案。它提供一個模塊化的架構,把架構中的節點、智能合約的執行 (Fabric項目中稱為”chaincode”) 以及可配置的共識和成員服務。 — wikipedia

基本元件介紹

Hyperledger Fabric中有以下各種基本元件:

Application:應用程式終端,交易請求的發起者。必須連到peer以進行操作。

Peer:區塊鏈網路基本上由peer組成,負責保存區塊鏈帳本(ledger)以及智能合約(chaincode)。一個peer可以存放多個ledger及chaincode。

Channel:一個用來達到私密通訊及交易的機制。加入channel的節點都需要維護一份相同的ledger,並且也只有加入channel的節點可以存取這份ledger,以此達到保護隱私的作用。

圖中Application A可以透過channel C與P1及P2溝通,其他peer無法存取L1。

Orderer:是一種特殊節點用來確保peers的ledger一致性,主要負責排序交易並且打包成區塊回傳給peer以加入區塊鏈(這部分後面會詳細解釋)。

簡易交易流程

  1. Application連接peer
  2. Peer發起提案(proposal) :查詢或更新帳本
    2.1 peer根據chaincode執行提案
    2.2 根據提案內容(查詢或更新帳本)產生提案回應
  3. 各peer回傳提案回應給Application。如果是query那麼到此就完成了,如果是update就繼續進行下一步
  4. Application收集各peer回傳的提案回應後建立一個transaction發給orderer要求排序
    4.1 orderer收集整個網路內的transaction並打包成區塊,然後把區塊送給所有peer
    4.2 peer收到區塊後會進行驗證,通過後就把區塊加到帳本上
  5. 更新完帳本後peer會產生一個event給A通知交易已經完成

詳細交易流程

Phase1: 提案

A1產生一個交易提案然後發給P1及P2,P1及P2各自依照S1執行產生R1及R2但這時並不會直接更新到帳本上,而是加上背書E1及E2然後回傳給A1,而當A1收到足夠的提案回應之後就完成了這個階段。

Phase2: 排序及打包

應用程式完成了phase1之後就會把交易送到orderer,在圖中看到許多應用程式把交易送到O1,由O1將這些交易排序,排序不一定是依照O1收到各交易的時間,但經過這步驟之後交易的順序就從此固定。當收集到的交易量達到某個大小(BatchSize)或超過某個時間(BatchTimeout)後,O1就會將這些交易打包成區塊並且發送給channel中的所有peer(沒有直接與O1連接的peer可以透過gossip protocol取得整個區塊鏈)。

Phase3: 驗證及發布

當O1把區塊發送到peer時,peer會進行驗證的動作。每個peer都會針對區塊中的每一個交易進行驗證。不同交易可能有不同的背書策略,所以每一個交易都需要經過完整的驗證。通過之後就可以進行把區塊加入帳本前與加入後的相容性檢查。最後才是正式加入帳本。然後產生一個event通知Application。

本文參考Hyperledger Fabric官方說明文件寫成