Hyperledger Fabric的邏輯架構是什麼樣的?
0 導言
前面我們已經講述了環境搭建的相關內容,接下來我們花幾篇文章來講一講一些概念和原理性的東西。首先我們來看一看Fabric的邏輯架構是什麼樣的?
上圖所示的邏輯結構圖是從不同角度來劃分的,上層從應用程式的角度,提供了標準的gRPC介面,在API的基礎之上封裝了不同語言的SDK,包括go、node.js、java、python等,開發人員可以利用SKD開發基於區塊鏈的應用。
區塊鏈強一致性要求各個節點之間達成共識需要較長的執行時間,應用程式也是採用非同步通訊的模式進行開發的,事件模組可以在觸發區塊事件或者鏈碼事件的時候執行預先定義的回撥函式。
下面分別從應用程式(紅字部分)
1 從應用程式角度
1.1 身份管理
聯盟鏈考慮到商業應用對安全、隱私、監管、審計、效能的需求,提高准入門檻,成員必須被許可才能加入網路。Fabric成員管理服務為整個區塊鏈網路提供身份管理、隱私、保密和可審計的服務。成員管理服務通過公鑰基礎設施PKI和去中心化共識機制使得非許可的區塊鏈變成許可制的區塊鏈。。
1.2 賬本管理
授權的使用者是可以查詢賬本資料 的,這可以通過多種方式查詢,包括:
- 根據區塊號查詢區塊
- 根據區塊雜湊查詢區塊
- 根據交易號查詢區塊
- 根據交易號查詢交易
- 根據通道名稱查詢區塊鏈資訊
1.3 交易管理
賬本資料只能通過交易執行才能更新,應用程式通過交易管理提交提案(Proposal),並獲取到交易背書(Endorsement)以後,再給排序服務節點為(order)提交交易,然後打包生成區塊。SDK提供介面,利用使用者證書本地生成交易號,背書節點和記賬節點都會校驗是否存在重複交易。
1.4 智慧合約
實現“可程式設計的賬本” ,能過鏈碼執行提交的交易,實現基於區塊鏈的智慧合約業務邏輯。只有智慧合約才能更新賬本資料,其他模組不是直接修改狀態資料(world state)。
2 從底層角度
2.1 成員管理
MSP(Member Service Provider)對成員管理進行了抽象,主要為成員服務模組,包括會員註冊,身份保護、內容保密、交易審計等功能。可以使用可插拔的Fabric-CA模組或第三方的CA來代替。
2.2 共識服務
負責節點間共識管理、賬本的分散式計算、賬本的儲存及節點間的P2P協議功能的實現,是區塊鏈的核心組成部分,為區塊鏈的主體功能提供了底層技術支撐
2.3 鏈碼服務
提供了一系列介面,為智慧合約實現提供了方便。還有安裝、執行、部署提供了環境。智慧合約的實現依賴於安全的執行環境,確保安全的執行過程和使用者資料的隔離。Fabric採用Docker管理普通的鏈碼,提供安全的沙箱環境和映象檔案倉庫,可支援多種語言的鏈碼。
2.4 安全和密碼服務
安全問題是企業級區塊鏈關係的問題,Hyperledger Fabric專門定義了一個BCCSP(BlockChain Cryptographic Service Provider),使其實現金鑰生成、雜湊運算、簽名驗籤、加密解密等基礎功能。
3 fabric邏輯架構設計上的幾個特點
3.1 模組外掛化
很多功能模組(如CA模組、共識演算法、狀態資料庫儲存、ESCC、VSCC、BCCSP等)都是可插拔的,系統 提供了通用的介面和預設的實現,這滿足了大多數的業務需求。這些模組也可以根據需求進行擴充套件,整合到系統 中。
3.2 充分利用容器技術
不僅節點使用容器作為執行環境,鏈碼也預設執行在安全的容器中。應用程式或者外部系統不能直接操作鏈碼,必須通過背書節點提供的介面轉發給鏈碼來執行。容器給鏈碼執行提供的是安全沙箱環境,把鏈碼的環境和背書節點的環境隔離開,鏈碼存在安全問題也不會影響到背書節點。
3.3 可擴充套件性
Hyperledger Fabric1.0後,節點的角色進行了不同的拆分,有主節點(Leader)、背書節點(Endorser)、記賬節點(Committer)、排序服務節點(Orderer)等,不同角色的節點有不同的功能。節點可以加入不同的通道(Channel)中,鏈碼可以執行在不同的節點上,這樣可以更好的提升並行執行的效率和吞吐量。
3.4 安全性
Hyperledger Fabric提供的是授權訪問的區塊鏈網路,節點共同維護成員資訊,MSP(Member Service Provide)模組驗證、授權了終端使用者後才能使用區塊鏈網路的功能。多鏈和多通道的設計容易實現資料隔離,也提供了應用程式和鏈碼之間的安全通道,實現了隱私保護。
4 總結
Hyperledger Fabric採用模組化架構設計,利用通用的功能模組和介面。模組化的方法帶來了可擴充套件性、靈活性等優勢,會減少模組修改、升級帶來的影響,能很好的利用微服務實現區塊鏈應用系統 的開發和部署。
5 參考資料
注意:本篇文章大部分內容 來自《深度探索區塊鏈:Hyperledger技術與應用》(作者:張增駿,董寧,朱軒彤,陳劍雄 著 出版社:機械工業出版社)這本書