前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hyperledger Fabric 2.x 动态更新智能合约

Hyperledger Fabric 2.x 动态更新智能合约

作者头像
陶陶技术笔记
发布2022-02-25 09:55:24
3970
发布2022-02-25 09:55:24
举报
文章被收录于专栏:陶陶技术笔记陶陶技术笔记

一、说明

在上一篇文章中分享了智能合约的安装与使用,如果业务有变更代码需要修改怎么办呢?本文分享如何对已安装的合约进行版本更新。

二、环境准备

区块链网络安装:《Hyperledger Fabric 2.x 环境搭建》

智能合约安装:《Hyperledger Fabric 2.x 自定义智能合约》

执行以下命令,可以看到已安装的合约信息:

代码语言:javascript
复制
peer lifecycle chaincode queryinstalled

三、重新打包代码

重新把最新的合约源代码打包:

代码语言:javascript
复制
peer lifecycle chaincode package mycc.tar.gz --path /opt/app/my-fabric-chaincode-java --lang java --label mycc

四、重新安装合约

再次分别为 peer0.org1peer0.org2 两个机构安装合约:

代码语言:javascript
复制
peer lifecycle chaincode install mycc.tar.gz

执行以下命令,重新查看已安装的合约信息:

代码语言:javascript
复制
peer lifecycle chaincode queryinstalled

可以发现新增加了一条 Label 名称相同 Package ID 不一样的记录:

五、重新审批

再次分别为 peer0.org1peer0.org2 两个机构审批合约:

代码语言:javascript
复制
peer lifecycle chaincode approveformyorg \
  -o localhost:7050 \
  --ordererTLSHostnameOverride orderer.example.com \
  --tls \
  --cafile ${MSP_PATH}/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem \
  --channelID mychannel \
  --name mycc \
  --version 1.1 \
  --package-id mycc:ecd2abc60ea098508aeefc135d8838787e9c1e3b8e411386a23ca56b7dfed758 \
  --sequence 2
  • 「package-id」 需填入新安装的 Package ID
  • 「sequence」 因为是审批第二个合约,所以需要填 2
  • 「version」 只是标识符,可改可不改

执行以下命令,检查节点审批状态:

代码语言:javascript
复制
peer lifecycle chaincode checkcommitreadiness --channelID mychannel --name mycc --version 1.1 --sequence 2 --output json

返回:

代码语言:javascript
复制
{
 "approvals": {
  "Org1MSP": true,
  "Org2MSP": true
 }
}

六、重新提交

执行以下命令,向通道提交合约:

代码语言:javascript
复制
peer lifecycle chaincode commit \
  -o localhost:7050 \
  --ordererTLSHostnameOverride orderer.example.com \
  --tls \
  --cafile ${MSP_PATH}/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem \
  --channelID mychannel \
  --name mycc \
  --peerAddresses localhost:7051 \
  --tlsRootCertFiles ${MSP_PATH}/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt \
  --peerAddresses localhost:9051 \
  --tlsRootCertFiles ${MSP_PATH}/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt \
  --version 1.1 \
  --sequence 2

需要把 「sequence」「version」 改为审批时的值

七、查看已提交合约

执行一下命令:

代码语言:javascript
复制
peer lifecycle chaincode querycommitted --channelID mychannel --name mycc --output json

可以看到现在通道 mychannel 名字为 mycc 的合约已经更新为 1.1 版本:

代码语言:javascript
复制
{
 "sequence": 2,
 "version": "1.1",
 "endorsement_plugin": "escc",
 "validation_plugin": "vscc",
 "validation_parameter": "EiAvQ2hhbm5lbC9BcHBsaWNhdGlvbi9FbmRvcnNlbWVudA==",
 "collections": {},
 "approvals": {
  "Org1MSP": true,
  "Org2MSP": true
 }
}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-02-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 陶陶技术笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、说明
  • 二、环境准备
  • 三、重新打包代码
  • 四、重新安装合约
  • 五、重新审批
  • 六、重新提交
  • 七、查看已提交合约
相关产品与服务
区块链
云链聚未来,协同无边界。腾讯云区块链作为中国领先的区块链服务平台和技术提供商,致力于构建技术、数据、价值、产业互联互通的区块链基础设施,引领区块链底层技术及行业应用创新,助力传统产业转型升级,推动实体经济与数字经济深度融合。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档