Fabric链码升级

article/2025/10/3 7:04:22

一、修改链码,上传

二、打包链码

1、设置组织1环境变量

export PATH=${PWD}/../bin:$PATH
export FABRIC_CFG_PATH=$PWD/../config/
# Environment variables for Org1
export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_LOCALMSPID="Org1MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.sdmk.com.cn/peers/peer0.org1.sdmk.com.cn/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.sdmk.com.cn/users/Admin@org1.sdmk.com.cn/msp
export CORE_PEER_ADDRESS=localhost:7051

2、重新打包链码

peer lifecycle chaincode package sdmkmeterchannel.tar.gz --path ./meter-chaincode/chaincode-go/ --lang golang --label sdmkmeterchannel_2.0 #安装
peer lifecycle chaincode install sdmkmeterchannel.tar.gz#查询已安装链码
peer lifecycle chaincode queryinstalled

 组织2也安装,先设置组织2环境变量


export PATH=${PWD}/../bin:$PATH
export FABRIC_CFG_PATH=$PWD/../config/
export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_LOCALMSPID="Org2MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org2.sdmk.com.cn/peers/peer0.org2.sdmk.com.cn/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org2.sdmk.com.cn/users/Admin@org2.sdmk.com.cn/msp
export CORE_PEER_ADDRESS=localhost:9051
peer lifecycle chaincode install sdmkmeterchannel.tar.gz
peer lifecycle chaincode queryinstalled

设置PACKAGE_ID

export PACKAGE_ID=s

 3、设置所需要的环境变量

export CORE_PEER_TLS_ENABLED=true
export ORDERER_CA=${PWD}/organizations/ordererOrganizations/sdmk.com.cn/orderers/orderer.sdmk.com.cn/msp/tlscacerts/tlsca.sdmk.com.cn-cert.pem
export PEER0_ORG1_CA=${PWD}/organizations/peerOrganizations/org1.sdmk.com.cn/peers/peer0.org1.sdmk.com.cn/tls/ca.crt
export PEER0_ORG2_CA=${PWD}/organizations/peerOrganizations/org2.sdmk.com.cn/peers/peer0.org2.sdmk.com.cn/tls/ca.crt
export ORDERER_ADMIN_TLS_SIGN_CERT=${PWD}/organizations/ordererOrganizations/sdmk.com.cn/orderers/orderer.sdmk.com.cn/tls/server.crt
export ORDERER_ADMIN_TLS_PRIVATE_KEY=${PWD}/organizations/ordererOrganizations/sdmk.com.cn/orderers/orderer.sdmk.com.cn/tls/server.keyexport CHANNEL_NAME="sdmkmeterchannel"
export CC_NAME=sdmkmeterbasic
export CC_SRC_PATH=./meter-chaincode/chaincode-go/
export CC_SRC_LANGUAGE=go
export CC_VERSION="2.0"
export CC_SEQUENCE="2"
export CC_INIT_FCN=""
export CC_END_POLICY=""
export CC_COLL_CONFIG=""
export DELAY="3"
export MAX_RETRY="5"
export VERBOSE="false"
export INIT_REQUIRED=""
export CC_RUNTIME_LANGUAGE=golang

4、重新同意链码定义

目前还是组织机构2环境变量

peer lifecycle chaincode approveformyorg -o localhost:7050 --ordererTLSHostnameOverride orderer.sdmk.com.cn --tls --cafile "$ORDERER_CA" --channelID $CHANNEL_NAME --name ${CC_NAME} --version ${CC_VERSION} --package-id ${PACKAGE_ID} --sequence ${CC_SEQUENCE} ${INIT_REQUIRED} ${CC_END_POLICY} ${CC_COLL_CONFIG} ##查询当前链码定义已同意的组织
peer lifecycle chaincode checkcommitreadiness --name ${CC_NAME}  --channelID $CHANNEL_NAME  --version ${CC_VERSION} --sequence ${CC_SEQUENCE} ${INIT_REQUIRED} ${CC_END_POLICY} ${CC_COLL_CONFIG} --output json

 

 切换组织1环境变量

export PATH=${PWD}/../bin:$PATH
export FABRIC_CFG_PATH=$PWD/../config/
# Environment variables for Org1
export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_LOCALMSPID="Org1MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.sdmk.com.cn/peers/peer0.org1.sdmk.com.cn/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.sdmk.com.cn/users/Admin@org1.sdmk.com.cn/msp
export CORE_PEER_ADDRESS=localhost:7051
peer lifecycle chaincode approveformyorg -o localhost:7050 --ordererTLSHostnameOverride orderer.sdmk.com.cn --tls --cafile "$ORDERER_CA" --channelID $CHANNEL_NAME --name ${CC_NAME} --version ${CC_VERSION} --package-id ${PACKAGE_ID} --sequence ${CC_SEQUENCE} ${INIT_REQUIRED} ${CC_END_POLICY} ${CC_COLL_CONFIG} ##查询当前链码定义已同意的组织
peer lifecycle chaincode checkcommitreadiness --name ${CC_NAME}  --channelID $CHANNEL_NAME  --version ${CC_VERSION} --sequence ${CC_SEQUENCE} ${INIT_REQUIRED} ${CC_END_POLICY} ${CC_COLL_CONFIG} --output json

 结果显示,组织1,组织2都已经显示

5、重新提交链码定义

export PEER_CONN_PARMS=(--peerAddresses localhost:7051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org1.sdmk.com.cn/peers/peer0.org1.sdmk.com.cn/tls/ca.crt --peerAddresses localhost:9051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org2.sdmk.com.cn/peers/peer0.org2.sdmk.com.cn/tls/ca.crt)peer lifecycle chaincode commit -o localhost:7050 --ordererTLSHostnameOverride orderer.sdmk.com.cn --tls --cafile "$ORDERER_CA" --channelID $CHANNEL_NAME --name ${CC_NAME} "${PEER_CONN_PARMS[@]}" --version ${CC_VERSION} --sequence ${CC_SEQUENCE} ${INIT_REQUIRED} ${CC_END_POLICY} ${CC_COLL_CONFIG} 

 6、查询提交定义的结果

peer lifecycle chaincode querycommitted  --channelID $CHANNEL_NAME --name ${CC_NAME}

 恭喜你,链码升级成功


http://chatgpt.dhexx.cn/article/IR6UPSSk.shtml

相关文章

图像特征-链码(Freeman code)

目录 引言链码编程实现轮廓提取链码计算 总结 引言 本文介绍了图像的形状特征–链码,以及通过python和opencv实现的链码提取方法。所有opencv的版本为3.4.2,已经移除了直接返回链码的选项。 链码 链码用于描述图像的形状特征,首先需要获得图像…

Java知识扫盲——向上转型(类向上转型、接口向上转型)以及向上转型的优势、灵活运用

目录 普通类示例 抽象类的向上转型, 接口向上转型: 作用:使用向上转型可以,提高代码的简洁性、灵活性、适用性。 普通类示例 父类: package 普通类向上转型;public class Father {public int age 48;public void…

java 向上转换_java的向上转型总结

在《think of java》中对向上转型有着如下的描述 看完之后很蒙圈,所以自己在网上找了一些描述,并自己做了简单的总结 简单的例子 class A{ public void A1(){ System.out.println("父类方法1"); } public void A2(){ System.out.println("…

JAVA中多态以及向上转型向下转型、重写的讲解

重写 重写(override):也称为覆盖。重写是子类对父类非静态、非private修饰,非final修饰,非构造方法等的实现过程 进行重新编写, 注意!!!返回值和形参都不能改变。 重写的好处在于子类可以根据需要&#x…

JAVA中的向上转型和向下转型

一、向上转型和向下转型 向上转型和向下转型是在JAVA继承操作中用到的东西,在讲到转型之前我们需要认识到继承过程中的对象类型转换,这种转换有两个特点: 1.这是继承过程中发生的操作 2.新类是现有类的一种类型。这种说法主要是因为现有类的方…

java转型 内存_Java向上转型及内存分析

学习设计模式的时候,发现很多模式都用到了向上转型(eg. 工厂方法)。而我对向上转型(upcasting)的机制并不十分熟悉。这篇文章将深入分析向上转型的机制、内存分析。 概念 先从几个基本概念开始: 1. Java中的引用类型(reference type) Java中的数据类型分…

java向上转型_Java向上转型和向下转型

一、向上转型 简单的说向.上转型就是:将-一个子类类型的对象赋值给- -个父类类型的变量, 基本的实现语法: 父类类型变量new 子 类类型(); DEMO:向上转型 发现了可以使用父类类型的变量调用子类覆写了父类的方法,但是为什么不调用Worker的say()方法呢?原…

C++ 向上转型

在 C 中经常会发生数据类型的转换,例如将 int 类型的数据赋值给 float 类型的变量时,编译器会先把 int 类型的数据转换为 float 类型再赋值;反过来,float 类型的数据在经过类型转换后也可以赋值给 int 类型的变量。 数据类型转换…

java 对象向上转型_JAVA对象向上转型和向下转型

今天做了一个测试的题目,发现自己还是很多问题没有静下心来做。很多问题是可以自己解决的但是自己一是没有读清题意,二是自己心里太急躁了。所以这个要自己应以为鉴! 对象的转型问题其实并不复杂,我们记住一句话:“父类…

java 向上转型_Java 转型问题(向上转型和向下转型)

Java 转型问题其实并不复杂,只要记住一句话:父类引用指向子类对象。 什么叫父类引用指向子类对象? 从 2 个名词开始说起:向上转型(upcasting) 、向下转型(downcasting)。 举个例子:有2个类,Father 是父类&a…

java向上转型_Java向上转型

向上类型转换: 1.可以通过父类引用变量调用的方法是子类覆盖或继承父类的方法。 2.父类引用变量无法调用子类新增成员变量和新增成员方法。 举个例子 public classAnimal { public voidsleep() { System.out.println("Animal sleep"); } public voidjump(…

向上转型与向下转型(超详细)

本文利用代码例子解释向上转型与向下转型,文末有举例整合原代码。 首先,我们要知道:转型发生在继承后,也就是父类子类存在的前提下。其次,我们要清楚:向下转型的前提是已经发生了向上转型,向下转…

java向上转型

我们知道按照现有类的类型来创建新类的方式为继承。 换句话说 “新类是现有类的一种类型” 因为继承可以确保父类中所有的方法在子类中也同样有效,所以能够向父类发送的所有信息也同样可以向子类发送。 这儿有一个例子: public class Test {public sta…

类中的向上转型与向下转型详解

我们的类与类之间会存在继承关系,子类继承父类,一个父类可以有多个子类,例如Animal类就可以有Cat子类,Dog子类,等等。那么我们在运用的时候根据不同的场景会出现向上转型和向下转型的情况。 一、向上转型 1、Animal a…

【基础知识】向上转型和向下转型

向上转型和向下转型的利弊 一、向上转型 好处:隐藏了子类型,提高了代码的扩展性。 坏处:只能使用父类的功能,不能使用子类特有功能,功能被限定。 使用场景:不需要面对子类型,通过提高扩展性&am…

Java向上转型的作用(有详细代码介绍)

今天看到一道Java的练习题,题目如下 当时对于主函数中 Car car (Car) new Benz(); 不是很理解,也并不知道有什么意义,因为如果仅仅写Car car new Benz(); 程序运行结果是一样的。 在经过阅读书籍和查看别的博主写的关于向上向下转型的…

MATLAB三维数组转为二维数组(时间序列分析中很有用)

在MATLAB中三维数组转二维的方法 一、写该程序的初衷 在处理时间序列遥感数据的时候,我之前的做法是: 将时间序列数据读取为三维矩阵;将该数据保存为BIP格式;在每个像元上进行循环,取出其第三维(比如有46…

Matlab一维数组及其应用

目录 1.一维数组 2.与一维数组相关的函数 3.一维数组在二维绘图中的应用 4.在已存在的图形上添加新图形 5.在一个图形窗口中绘制多个子图 6.一维数组在一元多项式运算中的应用 1.一维数组 数值数组(简称为数组)是Matlab中最重要的一种内建数据类型。数组运算是Matlab软件…

matlab 二维数组声明,Matlab字符串函数及二维数组

Matlab字符串函数及二维数组 发布时间:2017年07月28日 评论数:抢沙发 阅读数:833 strcmp(Str1,Str2),finder(S,s),strcat(S1,S2),disp(str)>> str1 str1 I am a man >> str2 str2 Iamaboy >> strcmp(str1,str2) %比较str1和str2 相同…

MATLAB 二维数组的行列操作

首先定义一个3*3的二维数组 data [1,2,3;4,5,6;7,8,9];第一列 data(:,1)第一行 data(1,:)第一列前两个数 data(1:2,1)按列展开 data(:)从第五个数到最后 data(5:end)对ADC的数据IQ分开,对应一列数据,行数据根据逗号交换 IDATAadc_data_mux(1:2:en…