• <option id="cacee"><noscript id="cacee"></noscript></option>
  • <table id="cacee"><noscript id="cacee"></noscript></table>
  • <td id="cacee"></td>
  • <option id="cacee"></option>
  • <table id="cacee"></table>
  • <option id="cacee"><option id="cacee"></option></option>
  • <table id="cacee"><source id="cacee"></source></table><td id="cacee"><rt id="cacee"></rt></td>
    <option id="cacee"><option id="cacee"></option></option>
     找回密碼
     立即注冊

    掃一掃,登錄網站

    首頁 自媒體 查看內容
    • 3330
    • 0
    • 分享到

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

    2018-4-27 14:14

    來源: HiBlock-Net

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

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

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



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


     


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


    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設計的系統邏輯架構圖。

     


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


    1、應用程序角度


    (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節點。下圖所示為網絡節點架構圖。



    接下來詳細地解釋圖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頒發證書。

    版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。
    相關新聞
    發表評論

    請先 注冊/登錄 后參與評論

      回頂部
    • <option id="cacee"><noscript id="cacee"></noscript></option>
    • <table id="cacee"><noscript id="cacee"></noscript></table>
    • <td id="cacee"></td>
    • <option id="cacee"></option>
    • <table id="cacee"></table>
    • <option id="cacee"><option id="cacee"></option></option>
    • <table id="cacee"><source id="cacee"></source></table><td id="cacee"><rt id="cacee"></rt></td>
      <option id="cacee"><option id="cacee"></option></option>
      妖精视频