溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Hyperledger composer與其他網(wǎng)絡(luò)互動(dòng)的示例分析

發(fā)布時(shí)間:2021-12-06 15:15:40 來(lái)源:億速云 閱讀:144 作者:小新 欄目:互聯(lián)網(wǎng)科技

這篇文章給大家分享的是有關(guān)Hyperledger composer與其他網(wǎng)絡(luò)互動(dòng)的示例分析的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

Hyperledger Composer包含的功能可供業(yè)務(wù)網(wǎng)絡(luò)用于訪問(wèn)另一個(gè)業(yè)務(wù)網(wǎng)絡(luò)中記錄的資產(chǎn),參與者或交易。

1、啟動(dòng)Hyperledger Fabric網(wǎng)絡(luò)

    必須啟動(dòng)Hyperledger Fabric網(wǎng)絡(luò)。您可以使用開發(fā)環(huán)境中提供的簡(jiǎn)單Hyperledger Fabric網(wǎng)絡(luò),也可以使用您通過(guò)遵循Hyperledger Fabric文檔構(gòu)建的自己的Hyperledger Fabric網(wǎng)絡(luò)。

    上一篇博客fabric-dev-servers 啟動(dòng)網(wǎng)絡(luò),用它簡(jiǎn)單的啟動(dòng)Hyperledger Fabric網(wǎng)絡(luò)

    1.1 運(yùn)行以下命令啟動(dòng)一個(gè)干凈的Hyperledger Fabric

cd ~/fabric-dev-servers
./stopFabric.sh
./teardownFabric.sh
./downloadFabric.sh
./startFabric.sh

    1.2 刪除您的錢包中可能存在的任何商業(yè)網(wǎng)絡(luò)卡。忽略表示無(wú)法找到商業(yè)網(wǎng)卡的任何錯(cuò)誤是安全的:

composer card delete -c PeerAdmin@hlfv1

    1.3 如果這些命令失敗,則表示有以前版本的業(yè)務(wù)網(wǎng)卡,將不得不刪除文件系統(tǒng)卡存儲(chǔ)。

    rm -fr ~/.composer

    1.4 通過(guò)運(yùn)行以下命令來(lái)創(chuàng)建對(duì)等管理卡

./createPeerAdminCard.sh

2、定義商業(yè)網(wǎng)絡(luò)

    2.1 按照第10篇博客的第一步和第二步。這將是網(wǎng)絡(luò)A.

    2.2 再次執(zhí)行第一步和第二步,但創(chuàng)建一個(gè)名為業(yè)務(wù)網(wǎng)絡(luò)other-tutorial-network。這將是網(wǎng)絡(luò)B.

    2.3 交易邏輯需要在網(wǎng)絡(luò)A中更新并且查詢商業(yè)網(wǎng)絡(luò)B中的資產(chǎn),然后更新商業(yè)網(wǎng)絡(luò)A中的資產(chǎn)的數(shù)量屬性。

替換logic.js腳本文件的內(nèi)容以更新事務(wù)處理器功能為以下內(nèi)容

        /**
         * Track the trade of a commodity from one trader to another
         * @param {org.example.mynetwork.Trade} trade - the trade to be processed
         * @transaction
         */async function tradeCommodity(trade) {trade.commodity.owner = trade.newOwner;const otherNetworkData = await getNativeAPI().invokeChaincode('other-tutorial-network', ['getResourceInRegistry', 'Asset', 'org.example.mynetwork.Commodity', trade.commodity.tradingSymbol], 'composerchannel');                    const stringAsset = new Buffer(otherNetworkData.payload.toArrayBuffer()).toString('utf8');const asset = getSerializer().fromJSON(JSON.parse(stringAsset));trade.commodity.quantity = asset.quantity;const assetRegistry = await getAssetRegistry('org.example.mynetwork.Commodity');await assetRegistry.update(trade.commodity);}

    2.4 按照第10篇博客第三步。

3、部署業(yè)務(wù)網(wǎng)絡(luò)

    3.1 使用以下命令安裝并啟動(dòng)業(yè)務(wù)網(wǎng)絡(luò)A.

composer network install --card PeerAdmin@hlfv1 --archiveFile tutorial-network@0.0.1.bna
composer network start --networkName tutorial-network --networkVersion 0.0.1 --networkAdmin admin --networkAdminEnrollSecret adminpw --card PeerAdmin@hlfv1 --file networkA.card
composer card import --file networkA.card --card networkA

    3.2 使用以下命令安裝并啟動(dòng)業(yè)務(wù)網(wǎng)絡(luò)B.

composer network install --card PeerAdmin@hlfv1 --archiveFile other-tutorial-network@0.0.1.bna
composer network start --networkName other-tutorial-network --networkVersion 0.0.1 --networkAdmin admin --networkAdminEnrollSecret adminpw --card PeerAdmin@hlfv1 --file networkB.card
composer card import --file networkB.card --card networkB

    3.3 要檢查業(yè)務(wù)網(wǎng)絡(luò)是否已成功部署,請(qǐng)運(yùn)行以下命令以ping通業(yè)務(wù)網(wǎng)

composer network ping --card networkA
composer network ping --card network

4、創(chuàng)建資產(chǎn)

    4.1 在業(yè)務(wù)網(wǎng)絡(luò)A中創(chuàng)建一個(gè)參與者。運(yùn)行以下命令

composer participant add --card networkA -d '{"$class": "org.example.mynetwork.Trader", "tradeId": "bob@example.com", "firstName": "Bob", "lastName": "Jones"}'

    4.2 在業(yè)務(wù)網(wǎng)絡(luò)A中創(chuàng)建資產(chǎn)

composer transaction submit --card networkA -d '{"$class": "org.hyperledger.composer.system.AddAsset","registryType": "Asset","registryId": "org.example.mynetwork.Commodity", "targetRegistry" : "resource:org.hyperledger.composer.system.AssetRegistry#org.example.mynetwork.Commodity", "resources": [{"$class": "org.example.mynetwork.Commodity","tradingSymbol": "Ag","owner": "resource:org.example.mynetwork.Trader#bob@example.com","description": "a lot of gold", "mainExchange": "exchange", "quantity" : 250}]}'

    4.3 在業(yè)務(wù)網(wǎng)絡(luò)B中創(chuàng)建一個(gè)參與者。運(yùn)行以下命令

composer participant add --card networkB -d '{"$class": "org.example.mynetwork.Trader", "tradeId": "fred@example.com", "firstName": "Fred", "lastName": "Bloggs"}'

    4.4 在業(yè)務(wù)網(wǎng)絡(luò)B中創(chuàng)建資產(chǎn)。運(yùn)行以下命令。請(qǐng)注意不同的數(shù)量屬性。

composer transaction submit --card networkB -d '{"$class": "org.hyperledger.composer.system.AddAsset","registryType": "Asset","registryId": "org.example.mynetwork.Commodity", "targetRegistry" : "resource:org.hyperledger.composer.system.AssetRegistry#org.example.mynetwork.Commodity", "resources": [{"$class": "org.example.mynetwork.Commodity","tradingSymbol": "Ag","owner": "resource:org.example.mynetwork.Trader#fred@example.com","description": "a lot of gold", "mainExchange": "exchange", "quantity" : 500}]}'

5、將網(wǎng)絡(luò)A上的身份綁定到網(wǎng)絡(luò)B上的參與者

    5.1 導(dǎo)出網(wǎng)絡(luò)卡以獲取憑證

composer card export -c networkA

    5.2 解壓縮卡,您可能需要將networkA.card重命名為networkA.zip。

    5.3 將身份綁定到參與者。運(yùn)行以下命令。

composer identity bind --card networkB --participantId resource:org.hyperledger.composer.system.NetworkAdmin#admin --certificateFile ./networkA/credentials/certificate

    5.4 導(dǎo)入卡

composer card create -p ~/.composer/cards/networkB/connection.json --businessNetworkName other-tutorial-network -u admin -c ./networkA/credentials/certificate  -k ./networkA/credentials/privateKey -f newNetworkB.card

    5.5 Ping網(wǎng)絡(luò)以激活身份

composer card import --file newNetworkB.card --card newNetworkB

    5.6 Ping網(wǎng)絡(luò)以激活身份

composer network ping --card newNetworkB

6、查看資產(chǎn)數(shù)據(jù)

    6.1 查看資產(chǎn)以查看數(shù)量為250。

    composer network list --card networkA -r org.example.mynetwork.Commodity -a Ag

7、提交交易

    7.1 提交交易以查看在不同的業(yè)務(wù)網(wǎng)絡(luò)上查詢資產(chǎn)的效果。請(qǐng)注意,只能查詢NetworkB,并且數(shù)量不會(huì)更改。

composer transaction submit --card networkA -d '{"$class": "org.example.mynetwork.Trade", "commodity": "resource:org.example.mynetwork.Commodity#Ag", "newOwner": "resource:org.example.mynetwork.Trader#bobId"}'

8、檢查更新后的資產(chǎn)

    8.1 查看更新資產(chǎn)以檢查數(shù)量是否已正確更新至500。

    composer network list --card networkA -r org.example.mynetwork.Commodity -a Ag

感謝各位的閱讀!關(guān)于“Hyperledger composer與其他網(wǎng)絡(luò)互動(dòng)的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI