链码的安装、实例化、查询、调用

news2024/10/1 5:38:51

目录

1、首先保证网络已经处于启动状态

 2、进入CLI容器

 3、检查当前节点已经加入到哪些通道中(刚进来,默认是 peer0.example.com)

链码的安装

1、检查通道名称是否设置正确

2、使用install安装链码

 3、实例化链码

 4、查詢链码

发起交易

查询交易

问题

1.链码安装在一个节点中还是安装在多个节点中?有什么区别?

2.链码执行查询与执行事务的流程相同吗?

 3.背书策略具体指的是什么?

4.如果在实例化链码时没有指定背书策略,那么会有节点进行背书吗?


1、首先保证网络已经处于启动状态

 使用docker ps 查看有6个节点在Up状态

具体参考我的另一篇博文:Hyperledger Fabric网络快速启动_FAFU_kyp的博客-CSDN博客

 2、进入CLI容器

sudo docker exec -it cli bash

 3、检查当前节点已经加入到哪些通道中(刚进来,默认是 peer0.example.com)

peer channel list

上面所示的输出内容,说明当前节点已成功加入一个名为mychannel的应用通道中。
Peer加入应用通道后,可以执行链码调用的相关操作,并进行测试。如果Peer节点没有加入通道中,则先将当前的Peer节点加人已创建的应用通道中。

链码的安装

调用链码处理交易之前必须将其部署到Peer节点上,实现步骤如下:
1)将其安装在指定的Peer节点上。
2)安装完成后对其进行实例化。

1、检查通道名称是否设置正确

echo CHANNEL_NAME

设置环境变量,指定应用通道名称为mychannel(因为我们创建的应用通道及当前的Peer节点加入的应用通道名称为mychannel):

没查到的话: export CHANNEL_NAME=mychannel   

2、使用install安装链码

 peer chaincode install -n mycc -v 1.0 -p github.com/chaincode/chaincode_example02/go/

这个命令是用于安装链码(chaincode)到Hyperledger Fabric网络中的对等节点。

以下是命令中使用的参数及其含义:

  • -n, --name mycc:指定链码的名称为mycc
  • -v, --version 1.0:指定链码的版本为1.0
  • -p, --path github.com/chaincode/chaincode_example02/go/:指定链码的路径,即链码源代码所在的路径。在这个示例中,链码位于github.com/chaincode/chaincode_example02/go/路径下。

该命令会将链码的源代码打包并安装到对等节点的链码环境中,使其准备好在网络中部署和执行。

注意:链码需要根据指定的背书策略(见实例化链码部分)安装在需要背书的所有Peer节点中。 

 3、实例化链码

peer chaincode instantiate -o orderer.example.com:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C $CHANNEL_NAME -n mycc -v 1.0 -c  '{"Args":["init","a","100","b","200"]}' -P "OR ('Org1MSP.peer','Org2MSP.peer')"

这个命令用于在Hyperledger Fabric网络中实例化链码(chaincode)。

以下是命令中使用的参数及其含义:

  • -o orderer.example.com:7050:指定要连接的Orderer节点的地址和端口。
  • --tls:使用TLS进行安全通信。
  • --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem:指定TLS根证书的文件路径。
  • -C $CHANNEL_NAME:指定要在哪个通道(channel)上实例化链码。$CHANNEL_NAME是一个环境变量,需要替换为你实际使用的通道名称。
  • -n mycc:指定要实例化的链码的名称为mycc
  • -v 1.0:指定要实例化的链码的版本为1.0
  • -c '{"Args":["init","a","100","b","200"]}':指定要传递给链码的初始化参数,以JSON格式提供。在这个示例中,传递了["init","a","100","b","200"]作为初始化参数。
  • -P "OR ('Org1MSP.peer','Org2MSP.peer')":指定链码的背书策略(endorsement policy)。在这个示例中,使用了一个OR条件,要求Org1MSP.peerOrg2MSP.peer中的任一节点进行背书。

该命令将在指定的通道上实例化指定版本的链码,并将初始化参数传递给链码的init函数进行初始化。

 4、查詢链码

peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","a"]}'

 5、调用链码

        如果要发起交易,则需要开启TLS验证并指定对应的证书路径,且在调用相应链码函数时须根据不同的实际情况指定相应的所需参数。

        使用invoke命令调用链码

  1. 发起交易

peer chaincode invoke -o orderer.example.com:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C $CHANNEL_NAME -n mycc -c '{"Args":["invoke","a","b","10"]}'

这个命令用于在Hyperledger Fabric网络中调用已实例化的链码(chaincode)。

以下是命令中使用的参数及其含义:

  • -o orderer.example.com:7050:指定要连接的Orderer节点的地址和端口。
  • --tls:使用TLS进行安全通信。
  • --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem:指定TLS根证书的文件路径。
  • -C $CHANNEL_NAME:指定要在哪个通道(channel)上调用链码。$CHANNEL_NAME是一个环境变量,需要替换为你实际使用的通道名称。
  • -n mycc:指定要调用的链码的名称为mycc
  • -c '{"Args":["invoke","a","b","10"]}':指定要传递给链码的调用参数,以JSON格式提供。在这个示例中,传递了["invoke","a","b","10"]作为调用参数。

该命令将在指定的通道上调用已实例化的链码,并将调用参数传递给链码的invoke函数执行相应的操作。

  1. 查询交易

        交易执行完毕之后,为了验证交易是否被正确执行,可以再次执行查询命令,根据输出的查询结果判断交易是否正确。
        执行查询a账户的命令,并查看输出结果:

peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","a"]}'

 执行成功则输出结果,如90。

问题

1.链码安装在一个节点中还是安装在多个节点中?有什么区别?

        在实际生产环境中,必须在应用通道上每一个要运行链码的背书节点上安装链码。
        其他未安装链码的节,点不能执行链码,但仍可以验证交易并提交到账本中。
        背书节点需要由联盟的成员共同指定,然后在实例化链码时指定背书策略,但链码的安装一定要在所有预先指定的背书Peer节,点中进行。


2.链码执行查询与执行事务的流程相同吗?

不相同,如果执行查询操作,则客户端接收到背书的交易提案响应后不会再将交易请求提交给Orderer节点。如果执行事务操作,则会执行完整的交易流程。

 3.背书策略具体指的是什么?

     背书策略是一种在实例化链码时指定由当前通道中的哪些成员节点进行背书签名的策略。

4.如果在实例化链码时没有指定背书策略,那么会有节点进行背书吗?

        如果在实例化链码时没有明确指定背书策略,则默认的背书策略是MSP标识DEFAULT成员的签名。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/710938.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

English Learning - L3 作业打卡 Lesson7 Day52 2023.6.27 周二

English Learning - L3 作业打卡 Lesson7 Day52 2023.6.27 周二 引言🍉句1: And that is when it dawned on me that I didn’t have to be 5,5 ft. anymore.成分划分弱读连读爆破语调 🍉句2: I could be as tall as I wanted, or as short as I wanted …

【电子学会】2023年05月图形化三级 -- 躲避陨石

文章目录 躲避陨石1. 准备工作2. 功能实现3. 设计思路与实现(1)角色、舞台背景设置a. 角色设置b. 舞台背景设置 (2)脚本编写a. 角色:Rocketshipb. 角色:Ball 4. 评分标准5. 知识块 躲避陨石 飞船在陨石乱飞…

MySQL数据库第一课 ---------安装

作者前言 欢迎小可爱们前来借鉴我的gtiee秦老大大 (qin-laoda) - Gitee.com 目录 虚拟环境虚拟环境 安装虚拟机 自主安装 简易安装 ———————————————————————————————————————— 虚拟环境虚拟环境 我们现在运行代码的环境是在 PyCharm…

大型语言模型作为属性化训练数据生成器

大型语言模型作为属性化训练数据生成器,提出一种使用多样化属性提示的数据生成方法,可以生成具有多样性和属性的训练数据,从而提高了模型的性能和数据生成的效率。 动机:大型语言模型(LLM)最近被用作各种自然语言处理(NLP)任务的…

从零开始——腾讯云服务器安装运行部署教程

一、腾讯云 1、购买腾讯云服务器 现在腾讯云服务器有优惠活动(大家可以在网上搜索各个服务器的优惠活动,有很多) 活动链接:上云精选_云服务器秒杀_开发者上云推荐-腾讯云 (tencent.com) 这里我选2G/2核/4M/50G轻量级服务器 这…

Linux基础服务6——Apache

文章目录 一、基本了解1.1 自带工具1.2 服务配置文件1.3 访问控制法则1.4 web相关的命令1.4.1 curl命令1.4.2 httpd命令 二、安装配置2.1 安装服务2.2 访问网页2.3 虚拟主机配置2.3.1 相同ip,不同端口2.3.2 相同端口,不同ip2.3.3 域名访问 三、https3.1 …

深度剖析 Linux 伙伴系统的设计与实现

目录 伙伴系统的核心数据结构 总结: 到底什么是伙伴 伙伴系统的内存分配原理 伙伴系统的内存回收原理 伙伴系统的实现 从 CPU 高速缓存列表中获取内存页 伙伴系统的核心数据结构 如上图所示,内核会为 NUMA 节点中的每个物理内存区域 zone 分配一个…

《计算机网络--自顶向下方法》第四章--网络层:数据平面

4.1网络层概述 每台路由器的数据平面的主要作用是从其输入链路向其输出链路转发数据报;控制平面的主要作用是协调这些本地路由器转发动作,使得数据报沿着源和目的地主机之间的路由器路径进行端到端传送 路由器具有截断的协议栈,即没有网络层…

[RISC-V]Milk-V开发板 i2c测试oled及波形输出

I2C3 引脚图 修改i2c3复用功能 build\boards\cv180x\cv1800b_sophpi_duo_sd\u-boot\cvi_board_init.c //I2C3 pin6 7 PINMUX_CONFIG(SD1_CMD, IIC3_SCL); PINMUX_CONFIG(SD1_CLK, IIC3_SDA);扫描I2C3上的设备 [rootcvitek]~# i2cdetect -y -r 3 0 1 2 3 4 5 6 7 8 9 a b c …

大数据Doris(五十四):BACKUP数据备份原理和语法

文章目录 BACKUP数据备份原理和语法 一、BACKUP数据备份原理 1、快照及快照上传 2、元数据准备及上传 二、BACKUP数据备份语法 BACKUP数据备份原理和语法 通过Doris数据导出的各种方式我们可以将Doris中的数据进行备份,除了export方式之外,Doris 还…

高压线路零序电流方向保护程序逻辑原理(二)

二、零序电流方向保护的采样中断服务程序 零序电流方向保护与其他微机保护的采样中断服务程序相同,均有电压求和自检和电流求和自检及相电流差突变量起动元件DI1。零序电流方向保护的采样中断服务程序中最突出的问题是通过3U。突变量元件来实现闭锁保护&#xff0c…

使用Dependency Walker和Process Explorer排查程序缺少ucrtbase.dll等运行时库以及报0xC000007B错误问题总结

目录 1、问题描述 2、分析软件问题的常用分析工具 3、使用Dependency Walker排查启动程序时报找不到ucrtbase.dll、vcruntime140.dll等运行时库的问题 3.1、使用Dependency Walker查看exe程序的库依赖关系,排查找不到ucrtbase.dll、vcruntime140.dll库问题 3.2…

华为OD机试真题 Python 实现【相对开音节】【2022Q4 100分】,附详细解题思路

一、题目描述 相对开音节构成的结构为辅音元音(aeiou)辅音(r除外)e,常见的单词有life,time,woke,coke,joke,note,nose,communicate,use,gate,same,late等。 给定一个字符串,以空格…

关于 Camera 产品的功能分析

1、问题背景 通过最近做的一些项目,发现 Tuning 一款 Camera 产品前,要考虑到的事情有很多,不是简单的点亮,按要求调完效果就结束了。 从目前的经验来看,准备工作做的越充分,后期遇到的问题也就越少。本文…

MQTT(三)MQTTX工具使用

MQTTX工具使用 MQTTX是一种开源的MQTT客户端工具,用于帮助开发人员测试和调试MQTT(Message Queuing Telemetry Transport)协议。MQTT是一种轻量级的消息传输协议,通常用于物联网设备和应用程序之间的通信。 MQTTX提供了一个用户…

MySQL中常用查看锁和事务的SQL语句

MySQL中常用查看锁和事务的SQL语句 当我们在使用MySQL数据库时,了解如何查看锁和事务的状态是非常重要的。这些信息可以帮助我们调试和优化数据库性能,以及解决并发访问的问题。在本博客中,我将介绍一些常用的MySQL查询语句,用于查…

文心一言 VS 讯飞星火 VS chatgpt (53)-- 算法导论6.2 5题

五、MAX-HEAPIFY的代码效率较高,但第 10 行中的递归调用可能例外,它可能使某些编译器产生低效的代码。请用循环控制结构取代递归,重写 MAX-HEAPIFY代码。 文心一言: 以下是使用循环控制结构取代递归调用的 MAX-HEAPIFY 代码&…

搜索引擎——倒排索引

搜索引擎——倒排索引 什么是倒排索引 倒排索引(Inverted Index)是一种用于快速查找文档的数据结构,常用于搜索引擎中。与正向索引(Forward Index)相反,倒排索引是基于单词或术语来组织文档的索引。 倒排…

【Andv】Andv图片上传组件:

文章目录 一、效果图:二、实现思路:三、实现代码:【1】components/AndvImageUpload/index.vue【2】main.js【3】使用: 一、效果图: 二、实现思路: 把andv的上传组件封装起来,并全局注册,这样别的页面不用引入就可以直接使用 三、实现代码: 【…

【复习《剑指Offer》13-17题】【每天40分钟,我们一起用50天刷完 (剑指Offer)】第十三天 13/50

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录)   文章字体风格: 红色文字表示&#…