温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Hyperledger composer与其他网络互动的示例分析

发布时间:2021-12-06 15:15:40 来源:亿速云 阅读:135 作者:小新 栏目:互联网科技

这篇文章给大家分享的是有关Hyperledger composer与其他网络互动的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

Hyperledger Composer包含的功能可供业务网络用于访问另一个业务网络中记录的资产,参与者或交易。

1、启动Hyperledger Fabric网络

    必须启动Hyperledger Fabric网络。您可以使用开发环境中提供的简单Hyperledger Fabric网络,也可以使用您通过遵循Hyperledger Fabric文档构建的自己的Hyperledger Fabric网络。

    上一篇博客fabric-dev-servers 启动网络,用它简单的启动Hyperledger Fabric网络

    1.1 运行以下命令启动一个干净的Hyperledger Fabric

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

    1.2 删除您的钱包中可能存在的任何商业网络卡。忽略表示无法找到商业网卡的任何错误是安全的:

composer card delete -c PeerAdmin@hlfv1

    1.3 如果这些命令失败,则表示有以前版本的业务网卡,将不得不删除文件系统卡存储。

    rm -fr ~/.composer

    1.4 通过运行以下命令来创建对等管理卡

./createPeerAdminCard.sh

2、定义商业网络

    2.1 按照第10篇博客的第一步和第二步。这将是网络A.

    2.2 再次执行第一步和第二步,但创建一个名为业务网络other-tutorial-network。这将是网络B.

    2.3 交易逻辑需要在网络A中更新并且查询商业网络B中的资产,然后更新商业网络A中的资产的数量属性。

替换logic.js脚本文件的内容以更新事务处理器功能为以下内容

        /**
         * 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、部署业务网络

    3.1 使用以下命令安装并启动业务网络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 使用以下命令安装并启动业务网络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 要检查业务网络是否已成功部署,请运行以下命令以ping通业务网

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

4、创建资产

    4.1 在业务网络A中创建一个参与者。运行以下命令

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

    4.2 在业务网络A中创建资产

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 在业务网络B中创建一个参与者。运行以下命令

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

    4.4 在业务网络B中创建资产。运行以下命令。请注意不同的数量属性。

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、将网络A上的身份绑定到网络B上的参与者

    5.1 导出网络卡以获取凭证

composer card export -c networkA

    5.2 解压缩卡,您可能需要将networkA.card重命名为networkA.zip。

    5.3 将身份绑定到参与者。运行以下命令。

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

    5.4 导入卡

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网络以激活身份

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

    5.6 Ping网络以激活身份

composer network ping --card newNetworkB

6、查看资产数据

    6.1 查看资产以查看数量为250。

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

7、提交交易

    7.1 提交交易以查看在不同的业务网络上查询资产的效果。请注意,只能查询NetworkB,并且数量不会更改。

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、检查更新后的资产

    8.1 查看更新资产以检查数量是否已正确更新至500。

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

感谢各位的阅读!关于“Hyperledger composer与其他网络互动的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI