深度探索Hyperledger技術與應用之超級帳本的系統架構

image

區塊鏈的業務需求多種多樣,一些要求在快速達成網絡共識及快速確認區塊後,才能夠將區塊加入區塊鏈中。有一些能夠接受相對緩慢的處理時間,以換取較低級別的信任。各行各業在擴展性、可信度、合法性、工做流複雜度以及安全性等方面的需求和用途都不盡相同。咱們先來看一下在企業級區塊鏈系統中常見的模塊構成,如圖3-1所示。算法

image

從圖中能夠看到一些經常使用的功能模塊有:應用程序、成員管理、智能合約、帳本、共識機制、事件機制、系統管理等。縱軸表明用戶或者開發者更關心的內容,越往上表明用戶更關注,好比應用程序和錢包等,越靠下是開發者更關注的模塊,好比事件機制。而橫軸則是從時間的維度來看的,左邊是一開始關注的功能,直到完成全部的功能。數據庫

Hyperledger Fabric 1.0是一種通用的區塊鏈技術,其設計目標是利用一些成熟的技術實現分佈式帳本技術(Distributed Ledger Technology,DLT)。超級帳本採用模塊化架構設計,複用通用的功能模塊和接口。模塊化的方法帶來了可擴展性、靈活性等優點,會減小模塊修改、升級帶來的影響,能很好地利用微服務實現區塊鏈應用系統的開發和部署。Hyperledger Fabric 1.0設計有幾個特色:編程

**1)模塊插件化:**不少的功能模塊(如CA模塊、共識算法、狀態數據庫存儲、ESCC、VSCC、BCCSP等)都是可插拔的,系統提供了通用的接口和默認的實現,這知足了大多數的業務需求。這些模塊也能夠根據需求進行擴展,集成到系統中。安全

**2)充分利用容器技術:**不只節點使用容器做爲運行環境,鏈碼也默認運行在安全的容器中。應用程序或者外部系統不能直接操做鏈碼,必須經過背書節點提供的接口轉發給鏈碼來執行。容器給鏈碼運行提供的是安全沙箱環境,把鏈碼的環境和背書節點的環境隔離開,鏈碼存在安全問題也不會影響到背書節點。服務器

**3)可擴展性:**Hyperledger Fabric 1.0在0.6版本的基礎上,對Peer節點的角色進行了拆分,有背書節點(Endorser)、排序服務節點(Orderer)、記帳節點(Committer)等,不一樣角色的節點有不一樣的功能。節點能夠加入到不一樣的通道(Channel)中,鏈碼能夠運行在不一樣的節點上,這樣能夠更好地提高並行執行的效率和吞吐量。網絡

**4)安全性:**Hyperledger Fabric 1.0提供的是受權訪問的區塊鏈網絡,節點共同維護成員信息,MSP(Membership Service Provider)模塊驗證、受權了最終用戶後才能使用區塊鏈網絡的功能。多鏈和多通道的設計容易實現數據隔離,也提供了應用程序和鏈碼之間的安全通道,實現了隱私保護。架構

1

系統邏輯架構

下圖所示爲Hyperledger Fabric 1.0設計的系統邏輯架構圖。異步

image

上圖所示的系統邏輯架構圖是從不一樣角度來劃分的,上層從應用程序的角度,提供了標準的gRPC接口,在API的基礎之上封裝了不一樣語言的SDK,包括Golang、Node.js、Java、Python等,開發人員能夠利用SDK開發基於區塊鏈的應用。區塊鏈強一致性要求,各個節點之間達成共識須要較長的執行時間,也是採用異步通訊的模式進行開發的,事件模塊能夠在觸發區塊事件或者鏈碼事件的時候執行預先定義的回調函數。下面分別從應用程序和底層的角度分析應該關注的幾個要素。分佈式

一、應用程序角度ide

(1)身份管理

用戶註冊和登陸系統後,獲取到用戶註冊證書(ECert),其餘全部的操做都須要與用戶證書關聯的私鑰進行簽名,消息接收方首先會進行簽名驗證,才進行後續的消息處理。網絡節點一樣會用到頒發的證書,好比系統啓動和網絡節點管理等都會對用戶身份進行認證和受權。

(2)帳本管理

受權的用戶是能夠查詢帳本數據(ledger)的,這能夠經過多種方式查詢,包括根據區塊號查詢區塊、根據區塊哈希查詢區塊、根據交易號查詢區塊、根據交易號查詢交易,還能夠根據通道名稱獲取查詢到的區塊鏈信息。

(3)交易管理

帳本數據只能經過交易執行才能更新,應用程序經過交易管理提交交易提案(Proposal)並獲取到交易背書(Endorsement)之後,再給排序服務節點提交交易,而後打包生成區塊。SDK提供接口,利用用戶證書本地生成交易號,背書節點和記帳節點都會校驗是否存在重複交易。

(4)智能合約

實現「可編程的帳本」(Programmable Ledger),經過鏈碼執行提交的交易,實現基於區塊鏈的智能合約業務邏輯。只有智能合約才能更新帳本數據,其餘模塊是不能直接修改狀態數據(World State)的。

2.底層角度

下面的內容是從Hyperledger Fabric 1.0底層的角度來看,如何實現分佈式帳本技術,給應用程序提供區塊鏈服務。

(1)成員管理

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

(2)共識服務

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

(3)鏈碼服務

智能合約的實現依賴於安全的執行環境,確保安全的執行過程和用戶數據的隔離。Hyperledger Fabric採用Docker管理普通的鏈碼,提供安全的沙箱環境和鏡像文件倉庫。其好處是容易支持多種語言的鏈碼,擴展性很好。Docker的方案也有自身的問題,好比對環境要求較高,佔用資源較多,性能不高等,實現過程當中也存在與Kubernetes、Rancher等平臺的兼容性問題。

(4)安全和密碼服務

安全問題是企業級區塊鏈關心的問題,尤爲在關注國家安全的項目中。其中底層的密碼學支持尤爲重要,Hyperledger Fabric 1.0專門定義了一個BCCSP(BlockChain Cryptographic Service Provider),使其實現密鑰生成、哈希運算、簽名驗籤、加密解密等基礎功能。BCCSP是一個抽象的接口,默認是軟實現的國標算法,目前社區和較多的廠家都在實現國密的算法和HSM(Hardware Security Module)。

Hyperledger Fabric 1.0在架構上的設計具備很好的可擴展性,目前是衆多可見的區塊鏈技術中最爲活躍的,值得區塊鏈技術愛好者深刻研究。

2

網絡節點架構

節點是區塊鏈的通訊主體,是一個邏輯概念。多個不一樣類型的節點能夠運行在同一物理服務器上。有多種類型的節點:客戶端、Peer節點、排序服務節點和CA節點。下圖所示爲網絡節點架構圖。

image

接下來詳細地解釋圖3-3所示的不一樣節點的類型。

1.客戶端節點

客戶端或者應用程序表明由最終用戶操做的實體,它必須鏈接到某一個Peer節點或者排序服務節點上與區塊鏈網絡進行通訊。客戶端向背書節點(Endorser)提交交易提案(Transaction Proposal),當收集到足夠背書後,向排序服務廣播交易,進行排序,生成區塊。

2. Peer節點

全部的Peer節點都是記帳節點(Committer),負責驗證從排序服務節點區塊裏的交易,維護狀態數據和帳本的副本。部分節點會執行交易並對結果進行簽名背書,充當背書節點的角色。背書節點是動態的角色,是與具體鏈碼綁定的。每一個鏈碼在實例化的時候都會設置背書策略,指定哪些節點對交易背書後纔是有效的。也只有在應用程序向它發起交易背書請求的時候纔是背書節點,其餘時候就是普通的記帳節點,只負責驗證交易並記帳。

圖3-2所示的Peer節點還有一種角色是主節點(Leader Peer),表明的是和排序服務節點通訊的節點,負責從排序服務節點處獲取最新的區塊並在組織內部同步。能夠強制設置爲主節點,也能夠動態選舉產生。

在圖3-2 中還能夠看到,有的節點同時是背書節點和記帳節點,也能夠同時是背書節點、主節點和記帳節點,也能夠只是記帳節點。在後面的章節中,有的地方會用記帳節點表明普通的Peer節點。

3.排序服務節點

排序服務節點(Ordering Service Node或者Orderer)接收包含背書籤名的交易,對未打包的交易進行排序生成區塊,廣播給Peer節點。排序服務提供的是原子廣播(Atomic Broadcast),保證同一個鏈上的節點接收到相同的消息,而且有相同的邏輯順序。

排序服務的多通道(MultiChannel)實現了多鏈的數據隔離,保證只有同一個鏈的Peer節點才能訪問鏈上的數據,保護用戶數據的隱私。

排序服務能夠採用集中式服務,也能夠採用分佈式協議。能夠實現不一樣級別的容錯處理,目前正式發佈的版本只支持Apache Kafka集羣,提供交易排序的功能,只實現CFT(Crash Fault Tolerence,崩潰故障容錯),不支持BFT(Byzantine Fault Tolerance,拜占庭容錯)。

4. CA節點

CA節點是Hyperledger Fabric 1.0的證書頒發機構(Certificate Authority),由服務器和客戶端組件組成。CA節點接收客戶端的註冊申請,返回註冊密碼用於用戶登陸,以便獲取身份證書。在區塊鏈網絡上全部的操做都會驗證用戶的身份。CA節點是可選的,能夠用其餘成熟的第三方CA頒發證書。

下期預告:深度探索Hyperledger技術與應用之超級帳本的典型交易流程

image

深度探索區塊鏈

Hyperledger技術與應用

區塊鏈

張增駿,董寧,朱軒彤,陳劍雄  著

本書由超級帳本執行董事Brian Behlendorf領銜推薦,區塊鏈一線落地實踐團隊、Hyperleger會員智鏈骨幹團對撰寫。深刻講解Hyperledger Fabric 1.0的架構、執行邏輯、核心功能實現、從零部署,並以票據案例爲例,講解具體開發實踐,穿插開發所需的最佳實踐和遇到的問題解決。

機械工業

出版社

image

 華章科技是機械出版社的旗下品牌,出版了「計算機科學叢書」等近30個經典套系,在各個細分領域均處於領導地位,其中《Java編程思想》、《算法導論》、《編譯原理》、《數據挖掘:概念與技術》、《深刻理解計算機系統》、《深刻理解Java虛擬機》等著做猶如計算機圖書領域的璀璨明珠,長銷不衰!

本文內容節選自《深度探索區塊鏈:Hyperledger技術與應用》一書的第2章《超級帳本初體驗》。

本書做者:張增駿,董寧,朱軒彤,陳劍雄

感謝機械工業出版社華章分社的支持和分享。

如下是咱們的社區介紹,歡迎各類合做、交流、學習:)

image

相關文章
相關標籤/搜索