日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

HyperLedger Fabric 交易流程

發(fā)布時(shí)間:2023/12/31 综合教程 33 生活家
生活随笔 收集整理的這篇文章主要介紹了 HyperLedger Fabric 交易流程 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

建站服務(wù)器

在生產(chǎn)環(huán)境中,一個(gè)最小的Fabric聯(lián)盟鏈網(wǎng)絡(luò)由4個(gè)結(jié)點(diǎn)組成,如下圖:

為了避免單點(diǎn)故障,進(jìn)行結(jié)構(gòu)冗余,每個(gè)節(jié)點(diǎn)的角色安排如下:

· 192.168.1.120 peer1, orderer1, zookeeper0, kafka0, ca1,

· 192.168.1.121 peer2, orderer2, zookeeper1, kafka1 ca2

· 192.168.1.122 peer3, zookeeper2, kafka2 ,ca3

· 192.168.1.122 peer4, kafka3 ca4, fabric瀏覽器

在Fabric中,本由一個(gè)節(jié)點(diǎn)處理的過(guò)程,在邏輯上被分解為不同的角色,每個(gè)角色承擔(dān)不同的功能;節(jié)點(diǎn)(Peer)分解為背書(shū)節(jié)點(diǎn)(Endorser peer)和提交節(jié)點(diǎn)(Committer peer),為了達(dá)到處理的順序性,提煉出排序(Orderer)角色,kafka是聯(lián)盟鏈中負(fù)責(zé)共享機(jī)制,zookeeper是個(gè)分布式應(yīng)用協(xié)調(diào)器,負(fù)責(zé)點(diǎn)到點(diǎn)數(shù)據(jù)傳輸,CA負(fù)責(zé)證書(shū)發(fā)放。 Fabric是應(yīng)用于聯(lián)盟鏈的場(chǎng)景,在處理每一筆交易時(shí),每個(gè)環(huán)節(jié)上需要對(duì)交易信息進(jìn)行權(quán)限校驗(yàn)。
Fabric交易流程圖如下所示:

交易過(guò)程詳細(xì)流程:
1) 應(yīng)用程序客戶(hù)端通過(guò)SDK調(diào)用證書(shū)服務(wù)(CA)服務(wù),進(jìn)行注冊(cè)和登記,并獲取×××?xí)?br /> 2) 應(yīng)用程序客戶(hù)端通過(guò)SDK向區(qū)塊鏈網(wǎng)絡(luò)發(fā)起一個(gè)交易提案(Proposal),交易提案把帶有本次交易要調(diào)用的合約標(biāo)識(shí)、合約方法和參數(shù)信息以及客戶(hù)端簽名等信息發(fā)送給背書(shū)(Endorser)節(jié)點(diǎn)。

3) 背書(shū)(Endorser)節(jié)點(diǎn)收到交易提案(Proposal)后,驗(yàn)證簽名并確定提交者是否有權(quán)執(zhí)行操作,同時(shí)根據(jù)背書(shū)策略模擬執(zhí)行智能合約,并將結(jié)果及其各自的CA證書(shū)簽名發(fā)還給應(yīng)用程序客戶(hù)端。

4) 應(yīng)用程序客戶(hù)端收到背書(shū)(Endorser)節(jié)點(diǎn)返回的信息后,判斷提案結(jié)果是否一致,以及是否參照指定的背書(shū)策略執(zhí)行,如果沒(méi)有足夠的背書(shū),則中止處理;否則,應(yīng)用程序客戶(hù)端把數(shù)據(jù)打包到一起組成一個(gè)交易并簽名,發(fā)送給Orderers。
5) Orderers對(duì)接收到的交易進(jìn)行共識(shí)排序,然后按照區(qū)塊生成策略,將一批交易打包到一起,生成新的區(qū)塊,發(fā)送給提交(Committer)節(jié)點(diǎn);
6) 提交(Committer)節(jié)點(diǎn)收到區(qū)塊后,會(huì)對(duì)區(qū)塊中的每筆交易進(jìn)行校驗(yàn),檢查交易依賴(lài)的輸入輸出是否符合當(dāng)前區(qū)塊鏈的狀態(tài),完成后將區(qū)塊追加到本地的區(qū)塊鏈,并修改世界狀態(tài)。

還有一個(gè)關(guān)于Fabric聯(lián)盟鏈交易理解的說(shuō)明:

這個(gè)示例中包含客戶(hù)A和B,在進(jìn)行蘿卜買(mǎi)賣(mài)。他們各自有一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn),通過(guò)節(jié)點(diǎn)他們發(fā)送交易并和賬本進(jìn)行交互。

首先,假設(shè)必要的條件:

該流程假設(shè)通道已建立并正常運(yùn)行。用戶(hù)已注冊(cè)并使用組織認(rèn)證授權(quán)(CA)登記,同時(shí)獲得必要的加密材料來(lái)進(jìn)行網(wǎng)絡(luò)驗(yàn)證。

鏈碼(包含一組代表蘿卜市場(chǎng)初始狀態(tài)的鍵值對(duì))被安裝在節(jié)點(diǎn)上并在通道上進(jìn)行實(shí)例化。鏈碼包含定義交易指令集合的邏輯和達(dá)成一致的蘿卜價(jià)格。設(shè)置一項(xiàng)針對(duì)鏈碼的背書(shū)策略,表明節(jié)點(diǎn)A和B都必須對(duì)任何交易進(jìn)行背書(shū)。

1. 客戶(hù)A發(fā)起交易

客戶(hù)A發(fā)出蘿卜購(gòu)買(mǎi)請(qǐng)求。請(qǐng)求目標(biāo)節(jié)點(diǎn)A和B,分別代表客戶(hù)A和B。背書(shū)策略表明兩個(gè)節(jié)點(diǎn)必須為任何交易進(jìn)行背書(shū),因而請(qǐng)求被發(fā)送到節(jié)點(diǎn)A和B。

接下來(lái)構(gòu)建交易提案。一個(gè)以可用SDK(node, java, python)為支撐的應(yīng)用利用有效的API來(lái)生成交易提案。這項(xiàng)提案作為調(diào)用鏈碼功能的請(qǐng)求來(lái)完成數(shù)據(jù)到賬本的讀取和/或?qū)懭耄礊橘Y產(chǎn)寫(xiě)入新的鍵值對(duì))。SDK有兩個(gè)作用:把交易提案包裝成合適架構(gòu)格式的庫(kù)(基于gRPC的協(xié)議緩沖);使用用戶(hù)的加密證書(shū)來(lái)創(chuàng)建交易提案的唯一簽名。

2. 背書(shū)節(jié)點(diǎn)驗(yàn)證簽名&執(zhí)行交易

背書(shū)節(jié)點(diǎn)使用MSP驗(yàn)證簽名并確定請(qǐng)求者是否被合理授權(quán)進(jìn)行提案的操作(使用通道ACL)。背書(shū)節(jié)點(diǎn)以交易提案憑證為輸入,基于當(dāng)前狀態(tài)的數(shù)據(jù)庫(kù)執(zhí)行來(lái)生成交易結(jié)果,輸出包括反饋值、讀取集合和寫(xiě)入集合。截止現(xiàn)在賬本還未進(jìn)行更新。這些值的集合,背書(shū)節(jié)點(diǎn)的簽名以及是/否的背書(shū)聲明一同作為“提案反饋”被傳輸回到SDK,SDK對(duì)應(yīng)用消耗的載荷進(jìn)行解析。

3. 審查提案反饋

應(yīng)用對(duì)背書(shū)節(jié)點(diǎn)簽名進(jìn)行驗(yàn)證,比較提案反饋(鏈接到包含載荷代理的術(shù)語(yǔ)條款)來(lái)決定是否一致,指定的背書(shū)策略是否被執(zhí)行(即節(jié)點(diǎn)A和B都進(jìn)行了背書(shū))。這種架構(gòu)可以保證即使一個(gè)應(yīng)用選擇不進(jìn)行反饋審查或者轉(zhuǎn)發(fā)了沒(méi)有背書(shū)的交易,背書(shū)策略依然會(huì)被節(jié)點(diǎn)執(zhí)行并在驗(yàn)證提交階段維持。

4. 客戶(hù)組合交易背書(shū)

應(yīng)用對(duì)交易提案進(jìn)行廣播,以“交易信息”對(duì)訂購(gòu)服務(wù)實(shí)現(xiàn)反饋。交易包含讀/寫(xiě)集合,背書(shū)節(jié)點(diǎn)簽名和通道ID。訂購(gòu)服務(wù)不讀取交易細(xì)節(jié),只是從網(wǎng)絡(luò)中所有通道接收交易,根據(jù)每個(gè)通道按時(shí)間順序調(diào)用,創(chuàng)建每個(gè)通道的交易區(qū)塊。

5. 交易驗(yàn)證和提交

交易區(qū)塊被發(fā)布到通道中的所有節(jié)點(diǎn)。區(qū)塊中的交易被驗(yàn)證來(lái)確保背書(shū)策略被執(zhí)行并且賬本的讀取集合變量沒(méi)有發(fā)生變化,因?yàn)樽x取集合是執(zhí)行交易生成的。區(qū)塊中的交易被標(biāo)記為有效或無(wú)效。

6. 賬本更新

每個(gè)節(jié)點(diǎn)都把區(qū)塊追加到通道的鏈中,對(duì)每項(xiàng)有效交易,寫(xiě)入集合被提交到當(dāng)前狀態(tài)的數(shù)據(jù)庫(kù)。發(fā)出事務(wù)通知客戶(hù)端應(yīng)用,交易(調(diào)用)被永久追加到鏈中以及交易是有效或者無(wú)效的。

總結(jié)

以上是生活随笔為你收集整理的HyperLedger Fabric 交易流程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。