您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費注冊]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>java源碼下載>

超級賬本架構分析

大小:0.9 MB 人氣: 2017-09-28 需要積分:2

  Fabric整體架構

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

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

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

  超級賬本架構分析

  示例交易處理過程

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

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

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

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

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

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

非常好我支持^.^

(0) 0%

不好我反對

(0) 0%

超級賬本架構分析下載

相關電子資料下載

      發(fā)表評論

      用戶評論
      評價:好評中評差評

      發(fā)表評論,獲取積分! 請遵守相關規(guī)定!

      ?