开发模式下的测试:简化链码的测试过程

2023-10-27

1、启动网络

        先打开终端1窗口(当前终端)

        为了确保系统中的Docker镜像文件是完整的,首先使用docker images命令查看Docker镜像信息(显示本地Docker Registry):

sudo docker images

在dev模式中,所需的必要镜像文件如下:

  • hyperledger/fabric-tools
  • hyperledger/fabric-orderer
  • hyperledger/fabric-peer
  • hyperledger/fabric-ccenv

关闭之前已经启动的网络环境:

sudo docker-compose -f docker-compose-cli.yaml down

为了能够使用dev模式,需要进人chaincode-docker-devmode目录:

cd ~/hyperledgerfabric/fabric-samples/chaincode-docker-devmode/

进人chaincode-docker-devmode目录下会发现与网络、通道、初始区块相关的所有内容。

例如:

  • docker-compose-.simple.yaml:网络启动依赖的配置文件。该配置文件指定了4个容器,分别为Orderer、Peer、CLI、Chaincode,各项的配置内容可以通过cat命令查看。
  • msp:网络环境的MSP,包含一系列的证书及私钥。
  • myc.block:代表通道配置块文件。
  • myc.tx:应用通道交易配置文件。
  • orderer.block:初始区块配置文件。

下面使用docker-compose-simple.yaml配置文件来启动网络:

sudo docker-compose -f docker-compose-simple.yaml up -d

上面的命令以docker-compose-simple.yaml启动了网络,并以开发模式启动Peer,另外
还启动了两个容器:

  • 一个Chaincode容器,用于链码环境;
  • 一个CLI容器,用于与链码进行交互。

命令执行后,终端输出如下信息:

  • Creating orderer
  • Creating peer
  • Creating chaincode
  • Creating cli

创建和连接通道的命令被嵌入CLI容器中,因此可以立即跳转到链码调用。

2、构建并启动链码

        网络启动成功后,下一步需要开发者自行对已经编写好的链码进行构建及启动,开启1个新的终端2窗口。

1、进入chaincode容器

Chaincode容器的作用是以简化的方式建立并启动链码:

sudo docker exec -it chaincode bash

2、编译

在终端窗口2中执行如下命令,进入 chaincode_example02/go/目录编译链码:

cd chaincode_example02/go/
go build

3、运行链码

启动链码

CORE_PEER_ADDRESS=peer:7052 CORE_CHAINCODE_ID_NAME=mycc:0 ./go
  • CORE_PEER_ADDRESS=peer:7052:这是一个环境变量,它指定了与链码交互的对等节点(peer)的地址和端口号。在这里,对等节点的地址被设置为peer,端口号为7052。

  • CORE_CHAINCODE_ID_NAME=mycc:0:这也是一个环境变量,它定义了链码的标识符。mycc是链码的名称,0表示链码的版本。链码的标识符在网络中必须是唯一的。

  • ./go:这是要执行的实际命令或二进制文件。在这种情况下,./go是一个可执行文件,用于启动Go语言链码容器。

在此阶段,链码与任何通道都没有关联。需要在后续步骤中使用“实例化”命令来完成。

4、调用链码

新建一个终端3 窗口

首先进入CLI容器

sudo docker exec -it cli bash

进入CLI容器后,执行相应命令安装实例化链码。

1、安装链码

peer chaincode install -p chaincodedev/chaincode/chaincode_example02/go -n mycc -v 0
  • peer chaincode install:这是用于在 Peer 节点上安装链码的命令。Peer 节点是 Hyperledger Fabric 网络中的节点,负责执行链码操作。
  • -p chaincodedev/chaincode/chaincode_example02/go:这是指定要安装的链码路径的参数。在这个例子中,链码位于 chaincodedev/chaincode/chaincode_example02/go 目录下。
  • -n mycc:这是指定链码的名称的参数。在这个例子中,链码的名称为 mycc
  • -v 0:这是指定链码的版本参数。在这个例子中,链码的版本为 0

 

安装链码时指定的链码名称与版本号必须与在终端2中注册的链码名称及版本号相同。

 

2、实例化链码

peer chaincode instantiate -n mycc -v 0 -c '{"Args":["init","a","100","b","200"]}' -C myc

3、查询链码

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

4、执行链码

peer chaincode invoke -n mycc -c '{"Args":["invoke","a","b","100"]}' -C myc

5、再次查询链码

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

1.net模式与dev模式有什么区别?


使用t模式,每次修改链码后想要测试时,需要对链码进行升级并重新实例化(或
重新安装再实例化),指定很多参数,给开发调试带来了很大的不便;而dv模式就简化
了这些过程。


2.CORE_PEER ADDRESS=peer:7052中的7052端口指的是什么,为什么不是7051?


7052是用于指定链码的专用监听地址及端口号,而7051是Peer节,点监听的网络端口。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

开发模式下的测试:简化链码的测试过程 的相关文章

随机推荐

  • App天气预报

    模仿墨迹天气的UI 实现南京天气的查询 涉及知识点 解析请求到的json数据 未来天气 天气图标的设置 时间算法 根据今天周几 判断明后天是周几 三元运算符 取模 下载相关天气的代码 查看 未来天气 在map里面添加图标 根据获取到的天气信
  • Unity热更新 ILRuntime 从零开始 委托 Delegate(四)

    小姐姐镇楼 便于通过图片查找文章 我们继续来一起看下ILRuntime的第三个案例 Delegate 委托 这是这一系列文章的总目录链接 有疑问的可以先看下之前的文章 Unity热更新 ILRuntime 从零开始 委托 Delegate
  • python确定指标权重_python 实现熵权法确定各指标的权重

    python 实现熵权法确定各指标的权重 熵权法是一种客观赋权方法 计算步骤如下 a 构建各年份各评价指标的判断矩阵 b 将判断矩阵进行归一化处理 得到归一化判断矩阵 c 根据熵的定义 根据各年份评价指标 可以确定评价指标的熵 d 定义熵权
  • Python Logging

    一 简介 Python的logging模块提供了一种灵活的方式来记录日志信息 使用logging模块 你可以将日志记录到文件 控制台 syslog等不同的目标中 还可以根据日志级别过滤日志信息 logging模块还支持多个日志处理器和多个日
  • Unix and perl primer for Biologists - Part2 :Advanced Unix- Reading Notes(U33-U36)

    U33 Match making search files to find lines that match a certain pattern The Unix command grep does this and much more T
  • 上海链节科技:区块链产业正在蓬勃发展

    2020年是区块链发展的关键之年 疫情加速了人类向数字世界迁移的步伐 这一年 区块链作为新技术基础设施被纳入 新基建 范围内 各地纷纷出台规划扶持区块链产业发展 这一年 我国率先在深圳和苏州进行了央行数字人民币的投放试验 多个省市都搭建了城
  • Fabric Kafka入门

    Hyperledger Fabric推荐Kafa用于生产环境 Kafa是一个分布式 具有水平伸缩能力 崩溃容错能力的日志系统 在Hyperledger Fabric区块链中可以有多个Kafka节点 使用zookeeper进行同步管理 本文将
  • SpringSecurity实现前后端分离登录授权详解

    在介绍完SpringSecurity实现前后端分离认证之后 然后就是SpringSecurity授权 在阅读本文章之前可以先了解一下作者的上一篇文章SpringSecurity认证SpringSecurity实现前后端分离登录token认证
  • 高德地图、使用vue-amap实现地图的点击地址和经纬度的转换并显示

    高德地图 使用vue amap实现地图的点击地址和经纬度的转换并显示 vue amap安装和使用 基于 Vue 2 0 和高德地图 ElementUI 1 npm 安装 npm install vue amap save CDN方式 2 m
  • 自学微信小程序开发第九天-关于分包

    自学微信小程序开发第九天 关于分包 分包前后的项目构成 分包的加载规则 文件分配 分包的配置定义 分包的一些原则 打包原则 引用原则 分包举例 独立分包 独立分包的应用场景举例 声明独立分包 进入独立分包页面 分包预下载 分包指的是把一个完
  • matplotlib绘制虚线_[Matplotlib习题]虚线绘图练习

    Matplotlib官方示例教程 第19课 自定义虚线样式的练习题 绘制2020年1月1日至今紫光国微收盘价和成交量加权平均价折线图 其中VWAP为虚线 1 import baostock as bs import matplotlib p
  • 在上海月薪一万的生活状态-IT男真实版

    在上海月薪一万的生活状态 IT男真实版 很多人问我上海收入多少才过的可以 实在没法给出准确范围 不过要是对自己有信心有理想的就来吧 都是两条腿一个脑袋 别人能的自己怎么也要试试对吧 不怕失败 就怕没勇气 当然这失败也要看你自己能否承受 是否
  • activeMQ概念问题

    1 Client Id JMS规定了两种Administered Object 即ConnnectionFactory和Destination 所以 万物伊始 我们得先将这两个东西从JNDI上拿下来 GenericSimpleMessage
  • 【Ant Design】表单Form常用方法

    Form useForm 通过 Form useForm 对表单数据域进行交互 用法 const form Form useForm 经 Form useForm 创建的 form 控制实例 常用方法如下 1 form setFieldsV
  • 人工智能的发展趋势

    第一个趋势是 全体IT巨头将重兵布局AI云服务 AI a a S 意思是人工智能即服务 将成为未来趋势 AI是未来 已经是不证自明的事实 新老IT巨头不仅在自身业务里积极运用人工智能 同时也在积极利用云计算平台将AI服务提供给第三方 从供给
  • 单位张量叉乘_內积&外积&叉积&张量积

    1 矩阵上标 1 AT T是transpose转置 2 A 1 1是inverse逆矩阵 3 A 广义逆矩阵 是逆矩阵的推广 奇异矩阵 行列式为0的方阵 和非方阵 没有逆矩阵 但可以有伪逆矩阵 广义逆定义 复矩阵Amxn Xnxmdddd满
  • Android开发规范:API接口通用设计规范

    我的新书 Android App开发入门与实战 已于2020年8月由人民邮电出版社出版 欢迎购买 点击进入详情 API接口设计系列文章 Android开发规范 API接口安全设计规范 Android开发规范 API接口通用设计规范 文章目录
  • 使用anaconda以及jupyter notebook过程中遇见的报错

    使用anaconda以及jupyter notebook过程中遇见的报错 一 this applications failed to start because no Qt platform 方法一 试过但没用 将D anaconda Li
  • msvcr71.dll丢失的解决方法

    msvcr71 dll文件对一些电脑软件 电脑游戏等程序的正常运行起到关键性作用 对于弹出缺少此类文件的弹窗 用户们很多时候也摸不着头脑 程序明明上次都能正常运行 突然就弹出缺少dll文件的提醒窗口 通过小编此次编辑的文章 用户们将可轻松解
  • 开发模式下的测试:简化链码的测试过程

    1 启动网络 先打开终端1窗口 当前终端 为了确保系统中的Docker镜像文件是完整的 首先使用docker images命令查看Docker镜像信息 显示本地Docker Registry sudo docker images 在dev模