fabric2.4.9链码生命周期与部署

本文档详细介绍了在Fabric2.4.9环境下,如何进行链码的生命周期管理,包括打包、安装、批准和调用链码的步骤。首先,通过网络命令创建通道并设置监控工具logspout。接着,对链码进行打包,并在org1和org2两个组织的peer上安装。然后,批准链码定义并提交到通道。最后,调用链码进行初始化和查询操作,完成链码的部署流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

fabric2.4.9链码生命周期与部署

前提完成了前两章的内容,本章节内容基于官网,如有更详细需求请登陆fabric官网。
环境搭建
测试网络

1. 关停并重启网络

./network.sh down
./network.sh up createChannel

通过createchannel命令创建了名字为mychannel的通道,其中包括两个通道成员org1,org2,该命令还将属于每个组织的peer加入到通道中,如果成功会看到以下内容
在这里插入图片描述

2. 设置logspout

此步骤不是必须的但是可以监控智能合约的日志,新建一个窗口输入下面命令,配好后随着后续操作会有反映。

cd fabric-samples/test-network
cp ../commercial-paper/organization/digibank/configuration/cli/monitordocker.sh
./monitordocker.sh fabric_test

3. 打包链码

顾名思义,将写好的链码打包为压缩文件。

  • 下载链码需要的依赖
cd fabric-samples/asset-transfer-basic/chaincode-go
GO111MODULE=on go mod vendor //安装go.mod中的依赖
  • 将二进制文件加入到cli路径
export PATH=${PWD}/../bin:$PATH
  • 使用peer version 命令测试是否成功
    在这里插入图片描述
  • 创建链码包
peer lifecycle chaincode package basic.tar.gz --path ../asset-transfer-basic/chaincode-go/ --lang golang --label basic_1.0

可以看到出现了红色的包

可以看到出现了红色的包
参数:

  • –lang 指定链码语言为go
  • –path 指定链码位置
  • – label 指定链码标签,该标签将在安装链码后标识

4. 安装链码包

链码需要安装在每个peer上,我们要在系统给出的两个节点中安装链码

  • 将org1设置为环境变量
export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_LOCALMSPID="Org1MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
export CORE_PEER_ADDRESS=localhost:7051
  • peer上安装链码
peer lifecycle chaincode install basic.tar.gz

如果成功,如下所示
在这里插入图片描述

  • 切换到org2
export CORE_PEER_LOCALMSPID="Org2MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp
export CORE_PEER_ADDRESS=localhost:9051
  • 安装链码
peer lifecycle chaincode install basic.tar.gz

5. 批准链玛定义

安装后,需要根据策略进行批准,需要packageid 使用以下命令查询

peer lifecycle chaincode queryinstalled

在这里插入图片描述

  • 将刚才查询到的ID粘贴到下面命令,此命令表示该包加入环境变量
export CC_PACKAGE_ID=basic_1.0:d29562b85321d821cc02fddff4366e54b9bdbfa5d51647b5613141dd4d947b9e
  • 批准包
peer lifecycle chaincode approveformyorg -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --channelID mychannel --name basic --version 1.0 --package-id $CC_PACKAGE_ID --sequence 1 --tls --cafile "${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem"
peer lifecycle chaincode approveformyorg -o localhost:7050:启动peer节点上的chaincode生命周期管理器。
--ordererTLSHostnameOverride orderer.example.com:指定orderer节点的主机名,以便与特定orderer节点通信。
--channelID mychannel:指定使用的通道ID。
--name basic --version 1.0 --package-id $CC_PACKAGE_ID --sequence 1:指定chaincode的名称、版本、包ID和序列号。
--tls:启用TLS加密连接。
--cafile "${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem":指定信任锚点文件的路径,该文件包含可信的CA证书。

在这里插入图片描述

  • 切换到org1
export CORE_PEER_LOCALMSPID="Org1MSP"
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
export CORE_PEER_ADDRESS=localhost:7051
  • 批准链码
peer lifecycle chaincode approveformyorg -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --channelID mychannel --name basic --version 1.0 --package-id $CC_PACKAGE_ID --sequence 1 --tls --cafile "${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem"

  • 检查通道成员是否已经批准相同的链码定义
peer lifecycle chaincode checkcommitreadiness --channelID mychannel --name basic --version 1.0 --sequence 1 --tls --cafile "${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem" --output json

生成一个json映射

在这里插入图片描述

  • 将链码定义提交到通道
peer lifecycle chaincode commit -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --channelID mychannel --name basic --version 1.0 --sequence 1 --tls --cafile "${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem" --peerAddresses localhost:7051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" --peerAddresses localhost:9051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt"

在这里插入图片描述

peer lifecycle chaincode commit -o localhost:7050:启动peer节点上的chaincode生命周期管理器。
–ordererTLSHostnameOverride orderer.example.com:指定orderer节点的主机名,以便与特定orderer节点通信。
–channelID mychannel:指定使用的通道ID。
–name basic --version 1.0 --sequence 1:指定chaincode的名称、版本和序列号。
–tls:启用TLS加密连接。
–cafile “{PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem”:指定信任锚点文件的路径,该文件包含可信的CA证书。
–peerAddresses localhost:7051 --tlsRootCertFiles “${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt”:指定peer节点的地址和tls根证书文件的路径。

  • 命令确认链代码已经提交到通道上
peer lifecycle chaincode querycommitted --channelID mychannel --name basic --cafile "${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem"

在这里插入图片描述

6. 调用链码

  • 首先调用初始化链码
peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile "${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem" -C mychannel -n basic --peerAddresses localhost:7051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" --peerAddresses localhost:9051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt" -c '{"function":"InitLedger","Args":[]}'

在这里插入图片描述

  • 在来一个查询
peer chaincode query -C mychannel -n basic -c '{"Args":["GetAllAssets"]}'

在这里插入图片描述* 删除logspout工具

docker stop logspout
docker rm logspout
  • 关闭网络
./network.sh down

完成!最后总结一下

链码生命周期复习如下:

将链码打包 -》 安装在不同组织上 -》 各自批准 -》 将批准提交到通道上 -》可以调用链码。

后面还有升级链码功能,请移步到官网文档自行观看。
fabric文档

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值