iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 13
0
Blockchain

區塊鏈開發(Blockchain/DLT Application Development)系列 第 13

Hyperledger Fabric:系統架構

  • 分享至 

  • xImage
  •  

節點架構

Fabric 中有兩種類型節點(Peer)。

  • Peer:可部署 chaincode,對賬本進行讀寫操作,同時兼具以下角色
    • Endorser:背書節點
    • Committer:提交節點
  • Orderer:排序節點,對交易進行排序,將交易批次組合成區塊,發給 Peer 節點
    • 共識機制:不同的傳輸層模式
      • Solo:便於開發測試的單一中心化服務
      • Kafca/Zookeeper:分佈式訊息佇列服務
      • sBFT:簡易拜占庭容錯(Byzantine Fault Tolerant, BFT)
    • Channel:一個群組間的共享通信通道
      • 訊息傳播模式:
        • broadcast:向群組中的所有的節點廣播(broadcast)訊息
        • deliver:向群組中的特定節點傳遞(deliver)訊息
      • 支援通道:發布/訂閱(Publish/Subscribe)設計模式
      • 隱私交易(Private Transaction):實現不同群組間的交易資料隔離與保密

https://ithelp.ithome.com.tw/upload/images/20181028/20103635SmAq78mIqA.png

通信通道

通道(Channel)以群組為概念:
不同群組提供不同的商業服務,不同組織可以節點為單位,選擇參與不同的業務。

  • 通道(Channel)將節點(Peer)、賬本(Ledger)切分為群組。
  • 資料僅在通道(Channel)內共享(Share),通道(Channel)之間的用戶和資料是隔離的。
  • 而同一個節點可註冊(Subscribe)不同的通道(Channel)。

交易流程

  1. Enroll
    • 客戶端(Client):使用用戶帳號向節點(Peer)註冊(Enroll)
      • 取得用戶憑證(Keys)
  2. Proposal
    • 客戶端(Client):提出交易提案(Proposal),傳送背書節點(Endorser)
      • 建立交易提案(Propose)
        • 交易內容:合約識別(ID) - Hash Value、合約方法(Method)和參數
        • 數位簽章:使用用戶帳號的加密憑證產生
      • 將交易提案序列化,如 gRPC 的 Protocol Buffers,以便發送
      • 將交易提案發送給一個或多個節點(Peer)
    • 背書節點(Endorser):模擬執行交易,將結果回傳客戶端
      • 收到交易提案後,驗證數位簽章,確認用戶權限
      • 執行交易,產生交易結果:讀寫操作後的資料變更集合、傳回值
      • 回傳資訊給客戶端:交易結果、背書結果"Yes/No"和節點的簽章
  3. Submit Transaction
    • 客戶端:透過一般節點(Peer)將交易廣播到排序節點(Orderer)
      • 驗證背書節點簽章,比較各背書節點傳回的交易結果是否一致
      • 將傳回的交易結果組成資料集,加上簽章,發送給背書節點(Endorser)
  4. Relay
    • 背書節點(Endorser):將訊息廣播發送給排序節點(Orderers)
  5. Batch
    • 排序節點(Orderers):共識驗證,交易排序,產生區塊
      • 進行共識驗證、交易排序,以批次交易的資料集合產生區塊
      • 使用 deliver API 傳遞訊息給提交節點(Committer)
    • 提交節點(Committer):寫入區塊鏈,更新 Key/Value 資料庫
      • 驗證批次交易的輸入輸出狀態,與提交的區塊狀態是否相符
        • 多版本平行控制(Multi-Version Concurrency Control, MVCC)
      • 驗證完成後更新帳本(Ledger)資料
        • 區塊寫入區塊鏈
        • 更新狀態(State)資料庫 - Key/Value

https://ithelp.ithome.com.tw/upload/images/20181028/20103635Db29EJPp8M.png

事件(Event)

目前目前程式碼開發,區分為 3 個類型,各由不同物件觸發。

  • Chaincode:鏈碼
    • System Chaincode 系統鏈碼
      • ESCC 決定如何進行背書
      • VSCC 決定定事件的有效性
  • Configuracon:通道(Channel)定義
  • Custom:自訂鏈碼

系統鏈碼:可更換,影響系統行為及流程,如背書及驗證方法。

  • cscc:設定(Configuration System Chaincode, CSCC)
  • lscc:生命週期(Lifecycle System Chaincode, LSCC)
  • escc:背書(Endorser System Chaincode, ESCC)
  • vscc:驗證(Validator System Chaincode, VSCC)
  • qscc:查詢(Query System Chaincode, QSCC)

上一篇
Hyperledger Fabric
下一篇
Hyperledger Fabric:環境建置
系列文
區塊鏈開發(Blockchain/DLT Application Development)30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言