Hyperledger Fabric學習筆記01-系統邏輯架構
- 2020 年 1 月 22 日
- 筆記
本系列學習筆記以閱讀《深度探索區塊鏈:Hyperledger Fabric技術與應用》一書的筆記為藍本,故默認Hyperledger Fabric 1.0,期間可能會追加最新版本的內容,到時會在裡面註明。這是一個邊看邊寫的系列,有興趣的也可以先自行購買此書學習。
Hyperledger Fabric 1.0是一種通用的區塊鏈技術,其設計目的是利用一些成熟的技術實現分散式賬本技術(Distributed Ledger Techonlogy DLT)。
超級賬本採用模組化架構設計,復用通用的功能模組和介面。
模組化的方法帶來了可擴展性、靈活性等優勢,會減少模組修改、升級帶來的影響,能很好地利用微服務實現區塊鏈應用系統的開發和部署。
Hyperledger Fabric 1.0設計的幾個特點:
特點 |
說明 |
---|---|
模組插件化 |
1.很多的功能模組(如CA模組、共識演算法、狀態資料庫存儲、ESCC、VSCC、BCCSP等)都是可插拔的,系統提供了通用的介面和默認的實現,這滿足了大多數業務的需求。 2.這些模組也可以通過需求進行擴展,集成到系統中。 |
充分利用容器技術 |
1.不僅節點使用容器做為運行環境,鏈碼也默認運行在安全的容器中。 2.應用程式或者外部系統不能直接操作鏈碼,必須通過背書節點提供的介面轉發給鏈碼來執行。 |
可擴展性 |
Hyperledger Fabric 1.0在0.6版本的基礎上,對Peer節點的角色進行了拆分,有背書節點(Endorser)、排序服務節點(Orderer)、記賬節點(Committer)等,不同角色的節點有不同的功能。 節點可以加入到不同的通道(Channel)中,鏈碼可以運行在不同的節點上,這樣可以更好地提升並行執行的效率和吞吐量。 |
安全性 |
Hyperledger Fabric 1.0提供的是授權訪問的區塊鏈網路,節點共同維護成員資訊,MSP(Membership Service Provider)模組驗證、授權了最終用戶後才能使用區塊鏈網路的功能。 多鏈和多通道的設計容易實現數據隔離,也提供了應用程式和鏈碼之間的安全通道,實現了隱私保護。 |
系統邏輯架構
下圖是 Hyperledger Fabric 1.0設計的系統邏輯架構圖:

該圖是從不同角度來劃分的:上層從應用層程式的角度,提供了標準的gRPC介面,在API的基礎上封裝了不同語言的SDK,包括Golang、Node.js、Java、Python等,開發人員可以利用SDK開發基於區塊鏈的應用。
區塊鏈強一致性要求各個節點之間達成共識需要較長的執行時間,也是採用非同步通訊模式進行開發的,事件模組可以在觸發區塊事件或者鏈碼事件的時候執行預先定義的回調函數。
應用程式角度
1.身份管理
- 用戶註冊和登錄系統後,獲取到用戶註冊證書(ECert),其他所有的操作都需要與用戶證書關聯的私鑰進行簽名。
- 消息接收方首先會進行簽名驗證,才進行後續的消息處理。
- 網路節點同樣會收到頒發的證書,比如系統啟動和網路節點管理等都會對用戶身份進行認證和授權。
2.賬本管理
授權的用戶是可以查詢賬本數據(ledger)的,這可以通過多種方式查詢,包括:根據區塊號查詢區塊、根據區塊哈希查詢區塊、根據交易號查詢區塊、根據交易號查詢交易、還可以根據通道名稱獲取查詢到的區塊鏈資訊。
3.交易管理
賬本數據只能通過交易執行才能更新,應用程式通過交易管理提交交易提案(Proposal)並獲取到交易背書(Endorsement)以後,再給排序服務節點提交交易,然後打包生成區塊。
SDK提供介面,利用用戶證書本地生成交易號,背書節點和記賬節點都會校驗是否存在重複交易。
4.智慧合約
實現「可編程的交易賬本」(Programmable Ledger),通過鏈碼執行提交的交易,實現基於區塊鏈的智慧合約業務邏輯。
只有智慧合約才能更新賬本數據,其他模組是不能直接修改狀態數據(World State)的。
底層角度
從1.0底層的角度來看,如何實現分散式賬本技術,給應用程式提供區塊鏈服務:
1.成員管理
MSP(Membership Service Provider)對成員管理進行了抽象。
每個MSP都會建立一套根信任證書(Root of Truest Certificate)體系,利用PKI(Public Key Infrastructure)對成員身份進行認證,驗證成員用戶提交交易請求的簽名。
結合Fabric-CA或者第三方CA系統,提供成員註冊功能,並對成員身份證書進行;管理,例如證書新增和撤銷。
註冊的證書分為註冊證書(ECert)、交易證書(TCert)和TLS證書(TLS Cert),它們分別用於用戶身份、交易簽名和TLS傳輸。
2.共識服務
在分散式節點環境下,要實現同一個鏈上不同節點區塊的一致性,同時要確保區塊里的交易有效和有序。
共識機制由3個階段完成:
- 客戶端向背書節點提交交易案進行簽名背書;
- 客戶端將背書後的交易提交給排序服務節點進行交易排序,生成區塊和排序服務;
- 之後廣播給記賬節點驗證交易後寫入本地賬本。
網路節點的P2P協議採用的是基於Gossip的數據分發,以同一組織為傳播範圍來同步數據,提升網路傳輸的效率。
3.鏈碼服務
智慧合約的實現依賴於安全和執行環境,確保安全的執行過程和用戶數據的隔離。
Fabric採用Docker管理普通的鏈碼,提供安全的沙箱環境和鏡像文件倉庫。
其好處是容易支援多種語言的鏈碼,擴展性很好。
Docker方案的也有不足,如:對環境要求較高,佔用資源較多,性能不高等,實現過程也存在與Kubernetes、Rancher等平台的兼容性問題。
4.安全和密碼服務
Fabric 1.0專門定義了一個BCCSP(BlockChain Cryptographic Service Provider),使其實現秘鑰生成、哈喜運算、簽名驗簽、加密解密等基礎功能。
BBSCP是一個抽象介面,默認是軟視線的國標演算法,目前社區和較多的廠商都在實現國密的演算法和HSM(Hardware Security Module)。