那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

超級賬本Fabric的架構與設計

C語言專家集中營 ? 來源:未知 ? 作者:鄧佳佳 ? 2018-03-21 15:02 ? 次閱讀

超級賬本Fabric項目自誕生之日起就吸引了全球眾多企業的密切關注,已經先后發布了兩個大的版本,0.6實驗版本(2016年9月)和1.0正式版本(2017年7月)。

目前,超級賬本Fabric架構上核心特性主要包括:

  • 解耦了原子排序環節與其他復雜處理環節,消除了網絡處理瓶頸,提高可擴展性;

  • 解耦交易處理節點的邏輯角色為背書節點(Endorser)、確認節點(Committer),可以根據負載進行靈活部署;

  • 加強了身份證書管理服務,作為單獨的Fabric CA項目,提供更多功能;

  • 支持多通道特性,不同通道之間的數據彼此隔離,提高隔離安全性;

  • 支持可拔插的架構,包括共識、權限管理、加解密、賬本機制都模塊,支持多種類型;

  • 引入系統鏈碼來實現區塊鏈系統的處理,支持可編程和第三方實現。

超級賬本Fabric的整體架構如下圖所示。

Fabric整體架構

Fabric為應用提供了gRPC API,以及封裝API的SDK供應用調用。應用可以通過SDK訪問Fabric網絡中的多種資源,包括賬本、交易、鏈碼、事件、權限管理等。應用開發者只需要跟這些資源打交道即可,無需關心如何實現。其中,賬本是最核心的結構,記錄應用信息,應用則通過發起交易來向賬本中記錄數據。交易執行的邏輯通過鏈碼來承載。整個網絡運行中發生的事件可以被應用訪問,以觸發外部流程甚至其他系統。權限管理則負責整個過程中的訪問控制。賬本和交易進一步地依賴核心的區塊鏈結構、數據庫、共識機制等技術;鏈碼則依賴容器、狀態機等技術;權限管理利用了已有的PKI體系、數字證書、加解密算法等諸多安全技術。底層由多個節點組成P2P網絡,通過gRPC通道進行交互,利用Gossip協議進行同步。

層次化結構提高了架構的可擴展和可插拔性,方便開發者以模塊為單位進行開發。

超級賬本Fabric根據交易過程中不同環節的功能,在邏輯上將節點角色解耦為Endorser和Committer,讓不同類型節點可以關注處理不同類型的工作負載。典型的交易處理過程如下圖所示。

示例交易處理過程

在整個交易過程中,各個組件的功能主要為:

  • 客戶端(App):客戶端應用使用SDK來跟Fabric網絡打交道。首先,客戶端從CA獲取合法的身份證書來加入到網絡內的應用通道。發起正式交易前,需要先構造交易提案(Proposal)提交給Endorser進行背書(通過EndorserClient提供的ProcessProposal(ctx context.Context, signedProp *pb.SignedProposal)(*pb.ProposalResponse,error)接口);客戶端收集到足夠(背書策略決定)的背書支持后可以利用背書構造一個合法的交易請求,發給Orderer進行排序(通過BroadcastClient提供的Send(env *cb.Envelope)error接口)處理。客戶端還可以通過事件機制來監聽網絡中消息,來獲知交易是否被成功接收。命令行客戶端的主要實現代碼在peer/chaincode目錄下。

  • Endorser節點:主要提供ProcessProposal(ctx context.Context,signedProp *pb.SignedProposal)(*pb.ProposalResponse,error)方法(代碼在core/endorser/endorser.go文件)供客戶端調用,完成對交易提案的背書(目前主要是簽名)處理。收到來自客戶端的交易提案后,首先進行合法性和ACL權限檢查,檢查通過則模擬運行交易,對交易導致的狀態變化(以讀寫集形式記錄,包括所讀狀態的鍵和版本,所寫狀態的鍵值)進行背書并返回結果給客戶端。注意網絡中可以只有部分節點擔任Endorser角色。主要代碼在core/endorser目錄下;

  • Committer節點:負責維護區塊鏈和賬本結構(包括狀態DB、歷史DB、索引DB等)。該節點會定期地從Orderer獲取排序后的批量交易區塊結構,對這些交易進行落盤前的最終檢查(包括交易消息結構、簽名完整性、是否重復、讀寫集合版本是否匹配等)。檢查通過后執行合法的交易,將結果寫入賬本,同時構造新的區塊,更新區塊中BlockMetadata[2](TRANSACTIONS_FILTER)記錄交易是否合法等信息。同一個物理節點可以僅作為Committer角色運行,也可以同時擔任Endorser和Committer這兩種角色。主要實現代碼在core/committer目錄下;

  • Orderer:僅負責排序。為網絡中所有合法交易進行全局排序,并將一批排序后的交易組合生成區塊結構。Orderer一般不需要跟賬本和交易內容直接打交道。主要實現代碼在orderer目錄下。對外主要提供Broadcast(srv ab.AtomicBroadcast_BroadcastServer)error和Deliver(srv ab.AtomicBroadcast_DeliverServer)error兩個RPC方法(代碼在orderer/server.go文件);

  • CA:負責網絡中所有證書的管理(分發、撤銷等),實現標準的PKI架構。主要代碼在單獨的fabric-ca項目中。CA在簽發證書后,自身不參與到網絡中的交易過程。

核心概念與組件

超級賬本Fabric采用了模塊化功能設計,整體的功能模塊結構如下圖所示。

Fabric核心組件

超級賬本Fabric面向不同的開發人員提供了不同層面的功能,自下而上可以分為三層:

  • 網絡層:面向系統管理人員。實現P2P網絡,提供底層構建區塊鏈網絡的基本能力,包括代表不同角色的節點和服務;

  • 共識機制和權限管理:面向聯盟和組織的管理人員。基于網絡層的連通,實現共識機制和權限管理,提供分布式賬本的基礎;

  • 業務層:面向業務應用開發人員。基于分布式賬本,支持鏈碼、交易等跟業務相關的功能模塊,提供更高一層的應用開發支持。

下面介紹網絡層相關組件的功能和作用。

網絡層相關組件

網絡層通過軟、硬件設備,實現了對分布式賬本結構的連通支持,包括節點、排序者、客戶端等參與角色,還包括成員身份管理、Gossip協議等支持組件。

節點(Peer)的概念最早來自P2P分布式網絡,意味著在網絡中擔任一定職能的服務或軟件。節點功能可能是對等一致的,也可能是分工合作的。在超級賬本Fabric網絡中,Peer意味著在網絡中負責接受交易請求、維護一致賬本的各個fabric-peer實例。這些實例可能運行在裸機、虛擬機甚至容器中。節點之間彼此通過gRPC消息進行通信。按照功能角色劃分,Peer可以包括三種類型:

  • Endorser(背書節點):負責對來自客戶端的交易提案進行檢查和背書;

  • Committer(確認節點):負責檢查交易請求,執行交易并維護區塊鏈和賬本結構;

  • Submitter(提交節點):負責接收交易,轉發給排序者,目前未單獨出現。

這些角色是功能上的劃分,彼此并不相互排斥。一般情況下,網絡中所有節點都具備Committer功能;部分節點具有Endorser功能;Submitter功能則往往集成在客戶端(SDK)進行實現。

Peer節點相關的主要數據結構包括PeerEndpoint和endorserClient。前者代表一個Peer節點在網絡中的接入端點;后者實現EndorserClient接口,代表連接到Peer節點的客戶端句柄,提供對Endorser角色實現的ProcessProposal(ctx context.Context,signedProp *pb.SignedProposal)(*pb.ProposalResponse, error)方法的訪問。如下圖所示。

Peer節點相關數據結構

排序者(Orderer),或稱為排序節點,負責對所收到的交易在網絡中進行全局排序。Orderer主要提供了Broadcast(srv ab.AtomicBroadcast_BroadcastServer) error和Deliver(srv ab.AtomicBroadcast_DeliverServer) error兩個接口。前者代表客戶端將數據(交易)發給Orderer,后者代表從Orderer獲取到排序后構造的區塊結構。客戶端可以使用atomicBroadcastClient結構訪問這兩個接口。atomicBroadcastClient結構如下圖所示,維持了一個gRPC的雙向通道。

atomicBroadcastClient結構

Orderer可以支持多通道。不同通道之間彼此隔離,通道內交易相關信息將僅發往加入到通道內的Peer(同樣基于gRPC消息),從而提高隱私性和安全性。在目前的設計中,所有的交易信息都會從Orderer經過,因此,Orderer節點在網絡中必須處于可靠、可信的地位。

從功能上看,Orderer的目的是對網絡中的交易分配全局唯一的序號,實際上并不需要交易相關的具體數據內容。因此為了進一步提高隱私性,發往Orderer的可以不是完整的交易數據,而是部分信息,比如交易加密處理后的結果,或者僅僅是交易的Hash值、Id信息等。這些改進設計會降低對Orderer節點可靠性和安全性的需求。社區目前也已經有了一些類似的設計討論(參考FAB-1151:Side DB-Private Channel Data)。

客戶端是用戶和應用跟區塊鏈網絡打交道的橋梁。客戶端主要包括兩大職能:

  • 操作Fabric網絡:包括更新網絡配置、啟停節點等;

  • 操作運行在網絡中的鏈碼:包括安裝、實例化、發起交易調用鏈碼等。

這些操作需要跟Peer節點和Orderer節點打交道。特別是鏈碼實例化、交易等涉及到共識的操作,需要跟Orderer交互,因此,客戶端往往也需要具備Submitter的能力。網絡中的Peer和Orderer等節點則對應提供了gRPC遠程服務訪問接口,供客戶端進行調用。目前,除了基于命令行的客戶端之外,超級賬本Fabric已經擁有了多種語言的SDK。這些SDK封裝了對底層gRPC接口的調用,可以提供更完善的客戶端和開發支持,包括Node.JsPythonJava、Go等多種實現。

CA節點(Fabric-CA)負責對Fabric網絡中的成員身份進行管理。Fabric網絡目前采用數字證書機制來實現對身份的鑒別和權限控制,CA節點則實現了PKI服務,主要負責對身份證書進行管理,包括生成、撤銷等。需要注意的是,CA節點可以提前簽發身份證書,發送給對應的成員實體,這些實體在部署證書后即可訪問網絡中的各項資源。后續訪問過程中,實體無須再次向CA節點進行請求。因此,CA節點的處理過程跟網絡中交易的處理過程是完全解耦開的,不會造成性能瓶頸。

Fabric網絡中的節點之間通過Gossip協議來進行狀態同步和數據分發。Gossip協議是P2P領域的常見協議,用于進行網絡內多個節點之間的數據分發或信息交換。由于其設計簡單,容易實現,同時容錯性比較高,而被廣泛應用到了許多分布式系統,例如Cassandra采用它來實現集群失敗檢測和負載均衡。Gossip協議的基本思想十分簡單,數據發送方從網絡中隨機選取若干節點,將數據發送過去;接收方重復這一過程(往往只選擇發送方之外節點進行傳播)。這一過程持續下去,網絡中所有節點最終(時間復雜度為節點總個數的對數)都會達到一致。數據傳輸的方向可以是發送方發送或獲取方拉取。

在Fabric網絡中,節點會定期地利用Gossip協議發送它看到的賬本的最新的數據,并對發送消息進行簽名認證。通過使用該協議,主要實現如下功能:

  • 通道內成員的探測:新加入通道的節點可以獲知其他節點的信息,并發送Alive信息宣布在線;離線節點經過一段時間后可以被其他節點感知。

  • 節點之間同步數據:多個節點之間彼此同步數據,保持一致性。另外,Leader節點從Orderer拉取區塊數據后,也可以通過Gossip傳播給通道內其他、節點。


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 網絡
    +關注

    關注

    14

    文章

    7599

    瀏覽量

    89247
  • 設計
    +關注

    關注

    4

    文章

    818

    瀏覽量

    69951
  • Fabric
    +關注

    關注

    0

    文章

    44

    瀏覽量

    7309
  • 架構
    +關注

    關注

    1

    文章

    519

    瀏覽量

    25551

原文標題:超級賬本Fabric的架構與設計

文章出處:【微信號:C_Expert,微信公眾號:C語言專家集中營】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    阿里云容器服務區塊鏈解決方案全新升級 支持Hyperledger Fabric v1.1

    解決方案第一時間同步升級,在v1.1新功能的基礎上,提供了彈性裸金屬服務器(神龍)、內置容器化Explorer、集成阿里云日志服務等方面的增強。作為全球開源區塊鏈領域影響最為廣泛的項目之一,超級賬本近日
    發表于 04-03 15:07

    Imagination 宣布與 NetSpeed 合作開發新的 Fabric 架構技術

    Imagination Technologies 宣布,將與片上網絡 (on-chip network) 技術和工具 供應商NetSpeed Systems合作,為最先進的SoC (系統單芯片) 設計提供下一代的 Fabric 架構解決方案。
    發表于 01-11 14:25 ?2828次閱讀

    超級賬本架構分析

    Fabric整體架構 Fabric為應用提供了gRPC API,以及封裝API的SDK供應用調用。應用可以通過SDK訪問Fabric網絡中的多種資源,包括
    發表于 09-28 14:20 ?0次下載
    <b class='flag-5'>超級</b><b class='flag-5'>賬本架構</b>分析

    Julian Gordon:2018年是超級賬本和區塊鏈進入全盛時期的一年

    Hyperledger超級賬本為Linux基金會協作的開源項目,旨在推進跨行業區塊鏈技術。
    發表于 07-03 16:40 ?1500次閱讀

    什么是超級賬本,其發展進展又如何

    超級賬本(Hyperledger)項目,將嘗試在商業世界中標準化和民主化區塊鏈。超級賬本不是讓公司們自己解決問題,而是結合跨行業的知識,允許企業構建可滿足特定需求的定制區塊鏈。
    發表于 10-23 11:13 ?2386次閱讀

    阿里云成為Hyperledger超級賬本全球會員,發力區塊鏈生態建設

    2018年12月12日在瑞士巴塞爾的2018Hyperledger全球峰會上,阿里云正式加入Hyperledger超級賬本項目并成為標準會員。阿里云將會與Hyperledger社區共同推進全球區塊鏈
    發表于 12-24 16:59 ?416次閱讀

    超級賬本Hyperledger對區塊鏈的應用

    Hyperledger對傳統區塊鏈模型進行了革新,其中包括管理參與者的訪問許可權。換句話說,Hyperledger 是有權限的共享賬本。Hyperledger為身份識別、審核及隱私提供了一個安全、健康的模型,從而縮短運算周期,實現有效擴展,應對業內各種運用要求。
    發表于 01-02 10:30 ?1353次閱讀
    <b class='flag-5'>超級</b><b class='flag-5'>賬本</b>Hyperledger對區塊鏈的應用

    基于區塊鏈技術的智能商務平臺ElamaChain介紹

    超級賬本是在Linux基金主導下,為了推進產業間區塊鏈技術的發展組織的全球性開源項目。金融、銀行、物聯網、供應鏈、制造和技術領域的130多名成員正參與超級賬本
    發表于 05-10 11:51 ?1234次閱讀
    基于區塊鏈技術的智能商務平臺ElamaChain介紹

    如何利用超級賬本的功能來構建一個應用程序

    如果您一直在研究超級賬本,那么您可能已經接觸過利用了線上超級賬本網絡的教程,比如carauction-network(可以在超級
    發表于 06-19 10:58 ?1135次閱讀

    Linux基金會主導的超級賬本項目發布了首個區塊鏈代碼

    Linux基金會(Linux Foundation)主導的超級賬本項目(Hyperledger Project)發布了大型企業可以用來搭建軟件的首個區塊鏈代碼。 包括IBM、思科(Cisco
    發表于 07-03 14:52 ?1463次閱讀

    什么是超級賬本

    Hyperledger(超級賬本)是 Linux 基金會 2015 年發起的推進區塊鏈數字技術和交易驗證的開源項目,其創建的目的是為了支持多種商業環境的應用。
    發表于 12-05 10:49 ?5395次閱讀

    基于區塊鏈技術的開源公鏈項目Hyperledger基金會介紹

    IBM是企業區塊鏈領域的重要參與者,其區塊鏈平臺以 Hyperledger Fabric 超級賬本為基礎,為很多大企業比如沃爾瑪和安泰保險都開發過區塊鏈試點產品。
    發表于 02-03 12:40 ?1482次閱讀

    IBM 區塊鏈是真正的區塊鏈嗎

    IBM 是企業區塊鏈領域的重要參與者,其區塊鏈平臺以 Hyperledger Fabric 超級賬本為基礎,為很多大企業比如沃爾瑪和安泰保險都開發過區塊鏈試點產品。
    發表于 02-05 11:03 ?2061次閱讀

    基于超級賬本的DNS協同防御體系

    鏈整合多方資源共同對抗網絡攻擊,并利用超級賬本的通道架構和背書策略實現隱私保護,促進網絡信息共享。分析結果表明,該協同防御體系在數據層面和業務層面均具有較強的安全性,為解決域名行業安全問題提供了借鑒作用。
    發表于 05-28 11:15 ?12次下載

    Hyperledger Fabric開源區塊鏈分布式賬本

    fabric.zip
    發表于 04-22 09:17 ?1次下載
    Hyperledger <b class='flag-5'>Fabric</b>開源區塊鏈分布式<b class='flag-5'>賬本</b>
    蓝盾百家乐官网平台| 百家乐官网高手心得| 巴登娱乐城开户| 百家乐科学打法| 百家乐官网免费改| 克拉克百家乐官网试玩| 德州扑克qq| 悍马百家乐的玩法技巧和规则| 金宝博百家乐官网娱乐城| 棋牌评测| 悍马百家乐的玩法技巧和规则| 大家旺百家乐娱乐城| 线上百家乐官网的玩法技巧和规则| 百家乐官网下注平台| 德州扑克比大小| 威尼斯人娱乐开户| 澳门百家乐规则视频| 玩百家乐官网的玩法技巧和规则| 百家乐官网手机投注平台| 2013现金棋牌游戏| 大发888下载 大发888游戏平台| 海王星百家乐的玩法技巧和规则| 长乐坊百家乐娱乐城| 百家乐官网真人游戏娱乐| 百家乐官网真人百家乐官网皇冠开户 | 真人百家乐新开户送彩金| 回力百家乐官网的玩法技巧和规则| 百家乐官网玩法开户彩公司| 黔西县| 博九娱乐场| 百家乐群11889| 百家乐出千大全| 888百家乐的玩法技巧和规则| 百家乐赌博技巧论坛| 百家乐网址皇冠现金网| 做生意摆什么好招财| 十三张百家乐官网的玩法技巧和规则 | 网络百家乐官网电脑| 专业百家乐官网筹码| 百家乐官网的视频百家乐官网| 百家乐官网中P代表|