十二、區塊鏈學習-Hyperledger Fabric (基於release-1.0) 系統架構

參考書籍:《深度探索區塊鏈:Hyperledger技術與應用》 @著 張增駿 董寧 朱軒彤 陳劍雄

1. 概述

    Hyperledger Fabric 是一種通用的區塊鏈技術,設計目標是利用成熟的技術實現 分佈式賬本(Distributed Ledger Technology,DLT)。HyperLedger Fabric有以下的特點

  • 模塊化插件:很多的功能模塊是可插拔的(CA、共識算法、狀態數據庫存儲、ESCC、VSCC、BCCSP),提供提供了通用的接口,和默認的實現。通過接口也方便了拓展。
  • 充分利用容器技術:不僅是節點使用容器作爲運行環境,鏈碼也是在容器中運行的。應用程序和外部系統不能直接操作鏈碼,必須通過背書節點提供的接口轉發給鏈碼執行操作。因爲容器之間是隔離的 所以鏈碼也不會影響背書節點。
  • 可拓展性:在1.0的版本中 peer節點角色有 背書節點、排序服務節點、記賬節點、leader節點等。不同的角色有不同的功能,節點可以加入到不同的channel中,鏈碼可以運行在不同的節點上,這樣可以更好的提升執行的效率和吞吐量。
  • 安全性:Fabric提供的是帶有授權的區塊鏈網絡,節點間共同維護成員信息,MSP(Member Service Provider)驗證模塊 授權過的用戶才能使用區塊鏈網絡的功能。多鏈和多通道的設計可以實現數據的隔離,也提供了應用程序與鏈碼之間的安全通道,實現了隱私保護。

2. 系統邏輯架構

在這裏插入圖片描述
上圖是fabric1.0的系統邏輯架構圖。
fabric提供了標準的gRPC接口,在API的基礎上封裝了不同語言的SDK,區塊鏈強一致性的要求導致各個節點之間達成共識需要花費時間,所以應用程序採用異步通信的方式來開發,事件模塊可以在觸發區塊鏈事件或者鏈碼事件的時候執行預先定義好的回調函數。

2.1 從應用程序角度應該關注的要素

2.1.1 身份管理

用戶登記並註冊後,獲取到用戶的註冊證書(ECert),其他的所有操作都要與用戶證書關聯的私鑰進行簽名,消息接收方回先驗籤,再進一步處理消息。網絡節點同樣會用到證書,比如系統啓動和網絡節點的管理都會對用戶進行認證和授權。

2.1.2 賬本管理

授權的用戶是可以查詢賬本數據的,可以通過多種方式查詢。博客根據區塊號查詢、根據區塊哈希值查詢、根據交易號查詢 還可以根據通道名稱獲取查詢區塊信息

2.1.3 交易管理

賬本數據只有通過交易才能執行更新,應用程序通過交易管理提交交易提案(proposal)並獲取到交易背書(Endorsement),再給排序服務節點提交交易,然後排序服務節點將交易打包成區塊。SDK提供接口,利用用戶證書生產交易號,背書節點和記賬節點都會檢查是否有重複交易。

2.1.4 智能合約

實現“可編程的賬本”,通過Chaincode(鏈碼)執行提交交易。實現基於區塊鏈的智能合約業務邏輯,只有只能合約才能更新賬本數據,其他模塊不能直接修改數據。

2.2 從底層角度應該關注的要素

2.2.1 成員管理

MSP(Membership Service Provider)對成員管理進行了抽象,每個MSP都會建立一套根信任證書(Root of Trust Cerificate)體系,利用PKI(Public Key Infrastructure)對成員身份進行認證,驗證成員用戶提交請求的前面。結合Fabric-CA或者第三方CA系統,提供成員註冊功能,並對成員身份證書進行管理,例如,證書新增 、撤銷。註冊的證書分爲註冊證書(ECert)、交易證書(TCert)、和TLS證書,他們分別用於用戶身份、交易簽名 和 TLS傳輸。

2.2.2 共識服務

在分佈式環境下,要實現同一個鏈上的不同節點之間區塊的一致性,同事要保證區塊裏的交易有效和有序,共識機制分爲三個階段,客戶端向背書節點提交交易預案進行簽名背書,客戶端將背書後的交易提交給排序服務節點進行交易排序,排序服務節點生成區塊後廣播給記賬節點驗證交易,寫入本地賬本。網絡節點的P2P協議採用的是基於Gossip的數據分發,以同一組織爲傳播範圍來同步數據。提高傳輸效率。

2.2.3 鏈碼服務

只能合約的實現依賴於安全的執行環境,確保安全的執行過程和用戶數據的隔離。Fabric通過Docker來管理普通的鏈碼,確保了沙箱環境。支持多種語言編寫鏈碼。

2.2.4 安全和密碼服務

安全問題是企業級的區塊鏈所關心的問題,尤其是在關注國家安全的項目中,其底層的密碼學支持尤爲重要,Fabric定義了 BCCSP(Blockchain Cryptographic Service Provider),,使其實現 祕鑰生產、哈希運算、簽名驗籤、加密解密等功能。BCCSP是一個接口,其默認實現爲國標算法。

3 網絡節點架構

節點有多種類型,cli 、 peer 、order、ca

3.1 客戶端-cli (應用程序、SDK、命令行工具)

客戶端或者應用程序 是用戶操作的實體,它必須連接到一個peer節點或者一個orderer及誒單上與區塊鏈通訊。客戶端向背書節點提交交易預案當收集到足夠的背書後,向orderer節點提交交易。orderer節點進行交易排序,並打包成區塊廣播到網絡中供其他記賬節點驗證 記賬。

3.2 節點-peer (Anchor、Endorser、Committer)

所有的peer節點都是Committer(記賬)節點。負責驗證從排序服務節點獲取到的交易。
維護狀態數據和賬本副本。部分擁有背書角色的peer節點會對交易提案進行驗證、背書籤名。背書節點是動態的角色,與具體的鏈碼綁定。每個鏈碼示例化的時候會設定背書策略。指定哪些節點背書後 交易纔會有效。也只有在應用程序向它發起交易背書請求時它纔是背書節點,其他情況下 都是記賬節點。只負責交易驗證和記賬。
還有一種主節點(leader peer)。代表是和orderer節點通訊的節點。賦值從排序服務節點獲取最新的區塊數據並在組織內部同步。可以強制設置主節點 也可以動態選舉。
一個peer可以有多個角色共存

3.3 排序服務-orderer

排序服務節點(Ordering Service Provider或者Orderer) 接收包含背書籤名的交易。對未打包的交易進行排序生成區塊 廣播給peer節點驗證記賬。排序服務節點提供的是原子廣播。保證同一個連上的節點獲取到的信息是相同的。並且有相同的邏輯順序。
排序服務的多通道(MultiChannel)保證了數據的隔離,同一個鏈上的peer節點才能訪問連上的數據。
orderer節點早fabric1.0版本可以選擇solo和kafka兩種實現方式。

3.4 CA (可選)

CA節點是Fabric的證書頒發機構。有服務器和客戶端組成。CA節點接收客戶端發起的註冊申請,返回註冊密碼用於用戶登錄以便於獲取身份證書。在區塊鏈網絡上所有的操作都需要身份認證。CA是可選的,可以使用其他成熟的第三方CA頒發證書。

3.5 網絡拓撲

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章