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

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

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

大?。?/span>0.9 MB 人氣: 2017-09-28 需要積分:2

  Fabric整體架構(gòu)

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

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

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

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

  示例交易處理過程

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

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

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

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

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

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

非常好我支持^.^

(0) 0%

不好我反對(duì)

(0) 0%

超級(jí)賬本架構(gòu)分析下載

相關(guān)電子資料下載

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?