-
Hyperledger Fabric 2.x 动态更新智能合约
一、说明
在上一篇文章中分享了智能合约的安装与使用,如果业务有变更代码需要修改怎么办呢?本文分享如何对已安装的合约进行版本更新。
二、环境准备
区块链网络安装:《Hyperledger Fabric 2.x 环境搭建》
智能合约安装:《Hyperledger Fabric 2.x 自定义智能合约》
执行以下命令,可以看到已安装的合约信息:
peer lifecycle chaincode queryinstalled
三、重新打包代码
重新把最新的合约源代码打包:
peer lifecycle chaincode package mycc.tar.gz --path /opt/app/my-fabric-chaincode-java --lang java --label mycc
四、重新安装合约
再次分别为 peer0.org1
和 peer0.org2
两个机构安装合约:
peer lifecycle chaincode install mycc.tar.gz
执行以下命令,重新查看已安装的合约信息:
peer lifecycle chaincode queryinstalled
可以发现新增加了一条 Label 名称相同 Package ID 不一样的记录:
五、重新审批
再次分别为 peer0.org1
和 peer0.org2
两个机构审批合约:
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:只是标识符,可改可不改
执行以下命令,检查节点审批状态:
peer lifecycle chaincode checkcommitreadiness --channelID mychannel --name mycc --version 1.1 --sequence 2 --output json
返回:
{
"approvals": {
"Org1MSP": true,
"Org2MSP": true
}
}
六、重新提交
执行以下命令,向通道提交合约:
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 改为审批时的值
七、查看已提交合约
执行一下命令:
peer lifecycle chaincode querycommitted --channelID mychannel --name mycc --output json
可以看到现在通道 mychannel
名字为 mycc
的合约已经更新为 1.1
版本:
{
"sequence": 2,
"version": "1.1",
"endorsement_plugin": "escc",
"validation_plugin": "vscc",
"validation_parameter": "EiAvQ2hhbm5lbC9BcHBsaWNhdGlvbi9FbmRvcnNlbWVudA==",
"collections": {},
"approvals": {
"Org1MSP": true,
"Org2MSP": true
}
}
出处:https://www.cnblogs.com/zlt2000/p/15917431.html
栏目列表
最新更新
四探循环依赖 → 当循环依赖遇上 BeanPo
Hyperledger Fabric 2.x 动态更新智能合约
java Quartz 定时任务管理类
卧槽!!IntelliJ IDEA 居然偷偷改代码。。
【摸鱼神器】基于SSM风格的Java源代码生成
如何在 Xamarin 中快速集成 Android 版认证服
【Python】Windows微信清理工具v.3.0.1
用Python写了一个图像文字识别OCR工具
[C#]浅析ref、out参数
C#中构造函数的作用
MongoDB常用命令(2)
MongoDB基本介绍与安装(1)
SQLServer触发器调用JavaWeb接口
SQL Server索引的原理深入解析
SqlServer2016模糊匹配的三种方式及效率问题
SQL中Truncate的用法
sqlserver 多表关联时在where语句中慎用tri
链接服务器读取Mysql---出现消息 7347,级别
SQL Server解惑——为什么你拼接的SQL语句换
MySQL视图了解一下
噢!JavaScript (1):正则表达式replace的一个
前端之JavaScript—BOM和DOM
基于Vue2.x的前端架构,我们是这么做的
大文件切片上传到服务器
前端之jQuery快速入门
Github Pages 速度慢 vercel 部署静态博客
聚类算法在 D2C 布局中的应用
eslint遇到的报错
大前端JS篇之搞懂【WeakSet】
PHP学生校园考勤管理系统,使用MYSQL数据库