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

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节,点监听的网络端口。

猜你喜欢

转载自blog.csdn.net/djklsajdklsajdlk/article/details/131548499
今日推荐