一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

3天內(nèi)不再提示

超級賬本Fabric的架構(gòu)與設(shè)計

C語言專家集中營 ? 來源:未知 ? 作者:鄧佳佳 ? 2018-03-21 15:02 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

  • 解耦了原子排序環(huán)節(jié)與其他復雜處理環(huán)節(jié),消除了網(wǎng)絡(luò)處理瓶頸,提高可擴展性;

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

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

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

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

  • 引入系統(tǒng)鏈碼來實現(xiàn)區(qū)塊鏈系統(tǒng)的處理,支持可編程和第三方實現(xiàn)。

超級賬本Fabric的整體架構(gòu)如下圖所示。

Fabric整體架構(gòu)

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

層次化結(jié)構(gòu)提高了架構(gòu)的可擴展和可插拔性,方便開發(fā)者以模塊為單位進行開發(fā)。

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

示例交易處理過程

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

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

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

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

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

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

核心概念與組件

超級賬本Fabric采用了模塊化功能設(shè)計,整體的功能模塊結(jié)構(gòu)如下圖所示。

Fabric核心組件

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

  • 網(wǎng)絡(luò)層:面向系統(tǒng)管理人員。實現(xiàn)P2P網(wǎng)絡(luò),提供底層構(gòu)建區(qū)塊鏈網(wǎng)絡(luò)的基本能力,包括代表不同角色的節(jié)點和服務(wù);

  • 共識機制和權(quán)限管理:面向聯(lián)盟和組織的管理人員?;诰W(wǎng)絡(luò)層的連通,實現(xiàn)共識機制和權(quán)限管理,提供分布式賬本的基礎(chǔ);

  • 業(yè)務(wù)層:面向業(yè)務(wù)應用開發(fā)人員?;诜植际劫~本,支持鏈碼、交易等跟業(yè)務(wù)相關(guān)的功能模塊,提供更高一層的應用開發(fā)支持。

下面介紹網(wǎng)絡(luò)層相關(guān)組件的功能和作用。

網(wǎng)絡(luò)層相關(guān)組件

網(wǎng)絡(luò)層通過軟、硬件設(shè)備,實現(xiàn)了對分布式賬本結(jié)構(gòu)的連通支持,包括節(jié)點、排序者、客戶端等參與角色,還包括成員身份管理、Gossip協(xié)議等支持組件。

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

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

  • Committer(確認節(jié)點):負責檢查交易請求,執(zhí)行交易并維護區(qū)塊鏈和賬本結(jié)構(gòu);

  • Submitter(提交節(jié)點):負責接收交易,轉(zhuǎn)發(fā)給排序者,目前未單獨出現(xiàn)。

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

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

Peer節(jié)點相關(guān)數(shù)據(jù)結(jié)構(gòu)

排序者(Orderer),或稱為排序節(jié)點,負責對所收到的交易在網(wǎng)絡(luò)中進行全局排序。Orderer主要提供了Broadcast(srv ab.AtomicBroadcast_BroadcastServer) error和Deliver(srv ab.AtomicBroadcast_DeliverServer) error兩個接口。前者代表客戶端將數(shù)據(jù)(交易)發(fā)給Orderer,后者代表從Orderer獲取到排序后構(gòu)造的區(qū)塊結(jié)構(gòu)??蛻舳丝梢允褂胊tomicBroadcastClient結(jié)構(gòu)訪問這兩個接口。atomicBroadcastClient結(jié)構(gòu)如下圖所示,維持了一個gRPC的雙向通道。

atomicBroadcastClient結(jié)構(gòu)

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

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

客戶端是用戶和應用跟區(qū)塊鏈網(wǎng)絡(luò)打交道的橋梁??蛻舳酥饕▋纱舐毮埽?/p>

  • 操作Fabric網(wǎng)絡(luò):包括更新網(wǎng)絡(luò)配置、啟停節(jié)點等;

  • 操作運行在網(wǎng)絡(luò)中的鏈碼:包括安裝、實例化、發(fā)起交易調(diào)用鏈碼等。

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

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

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

在Fabric網(wǎng)絡(luò)中,節(jié)點會定期地利用Gossip協(xié)議發(fā)送它看到的賬本的最新的數(shù)據(jù),并對發(fā)送消息進行簽名認證。通過使用該協(xié)議,主要實現(xiàn)如下功能:

  • 通道內(nèi)成員的探測:新加入通道的節(jié)點可以獲知其他節(jié)點的信息,并發(fā)送Alive信息宣布在線;離線節(jié)點經(jīng)過一段時間后可以被其他節(jié)點感知。

  • 節(jié)點之間同步數(shù)據(jù):多個節(jié)點之間彼此同步數(shù)據(jù),保持一致性。另外,Leader節(jié)點從Orderer拉取區(qū)塊數(shù)據(jù)后,也可以通過Gossip傳播給通道內(nèi)其他、節(jié)點。


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

    關(guān)注

    14

    文章

    7814

    瀏覽量

    90921
  • 設(shè)計
    +關(guān)注

    關(guān)注

    4

    文章

    822

    瀏覽量

    70543
  • Fabric
    +關(guān)注

    關(guān)注

    0

    文章

    44

    瀏覽量

    7506
  • 架構(gòu)
    +關(guān)注

    關(guān)注

    1

    文章

    528

    瀏覽量

    25980

原文標題:超級賬本Fabric的架構(gòu)與設(shè)計

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

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

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

    Imagination 宣布與 NetSpeed 合作開發(fā)新的 Fabric 架構(gòu)技術(shù)

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

    超級賬本架構(gòu)分析

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

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

    Hyperledger超級賬本為Linux基金會協(xié)作的開源項目,旨在推進跨行業(yè)區(qū)塊鏈技術(shù)。
    發(fā)表于 07-03 16:40 ?1552次閱讀

    什么是超級賬本,其發(fā)展進展又如何

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

    阿里云成為Hyperledger超級賬本全球會員,發(fā)力區(qū)塊鏈生態(tài)建設(shè)

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

    超級賬本Hyperledger對區(qū)塊鏈的應用

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

    基于區(qū)塊鏈技術(shù)的智能商務(wù)平臺ElamaChain介紹

    超級賬本是在Linux基金主導下,為了推進產(chǎn)業(yè)間區(qū)塊鏈技術(shù)的發(fā)展組織的全球性開源項目。金融、銀行、物聯(lián)網(wǎng)、供應鏈、制造和技術(shù)領(lǐng)域的130多名成員正參與超級賬本
    發(fā)表于 05-10 11:51 ?1350次閱讀
    基于區(qū)塊鏈技術(shù)的智能商務(wù)平臺ElamaChain介紹

    如何利用超級賬本的功能來構(gòu)建一個應用程序

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

    Linux基金會主導的超級賬本項目發(fā)布了首個區(qū)塊鏈代碼

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

    什么是超級賬本

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

    基于區(qū)塊鏈技術(shù)的開源公鏈項目Hyperledger基金會介紹

    IBM是企業(yè)區(qū)塊鏈領(lǐng)域的重要參與者,其區(qū)塊鏈平臺以 Hyperledger Fabric 超級賬本為基礎(chǔ),為很多大企業(yè)比如沃爾瑪和安泰保險都開發(fā)過區(qū)塊鏈試點產(chǎn)品。
    發(fā)表于 02-03 12:40 ?1614次閱讀

    IBM 區(qū)塊鏈是真正的區(qū)塊鏈嗎

    IBM 是企業(yè)區(qū)塊鏈領(lǐng)域的重要參與者,其區(qū)塊鏈平臺以 Hyperledger Fabric 超級賬本為基礎(chǔ),為很多大企業(yè)比如沃爾瑪和安泰保險都開發(fā)過區(qū)塊鏈試點產(chǎn)品。
    發(fā)表于 02-05 11:03 ?2247次閱讀

    基于超級賬本的DNS協(xié)同防御體系

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

    Hyperledger Fabric開源區(qū)塊鏈分布式賬本

    fabric.zip
    發(fā)表于 04-22 09:17 ?1次下載
    Hyperledger <b class='flag-5'>Fabric</b>開源區(qū)塊鏈分布式<b class='flag-5'>賬本</b>