Fabric2.2.0 链码管理

Fabric2.2 链码操作

1、 进入容器并设置环境变量

注:以下的教程为 java 链码的教程,若是使用go链码,请看 《7、使用go链码》

1.1 进入容器

// 进入容器
docker exec -it cli bash 

1.2 设置环境变量

// 组织OrgA
export CORE_PEER_LOCALMSPID=OrgA
export CORE_PEER_ADDRESS=peer0.orga.example.com:7051
export CORE_PEER_MSPCONFIGPATH=$PWD/crypto/peerOrganizations/orga.example.com/users/Admin@orga.example.com/msp
export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_TLS_ROOTCERT_FILE=$PWD/crypto/peerOrganizations/orga.example.com/tlsca/tlsca.orga.example.com-cert.pem
export ORDERER_TLSCA=$PWD/crypto/ordererOrganizations/example.com/tlsca/tlsca.example.com-cert.pem
export CHANNEL_NAME=txchannel

// 组织OrgB
export CORE_PEER_LOCALMSPID=OrgB
export CORE_PEER_ADDRESS=peer0.orgb.example.com:7051
export CORE_PEER_MSPCONFIGPATH=$PWD/crypto/peerOrganizations/orgb.example.com/users/Admin@orgb.example.com/msp
export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_TLS_ROOTCERT_FILE=$PWD/crypto/peerOrganizations/orgb.example.com/tlsca/tlsca.orgb.example.com-cert.pem
export ORDERER_TLSCA=$PWD/crypto/ordererOrganizations/example.com/tlsca/tlsca.example.com-cert.pem
export CHANNEL_NAME=txchannel

// 组织OrgC
export CORE_PEER_LOCALMSPID=OrgC
export CORE_PEER_ADDRESS=peer0.orgc.example.com:7051
export CORE_PEER_MSPCONFIGPATH=$PWD/crypto/peerOrganizations/orgc.example.com/users/Admin@orgc.example.com/msp
export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_TLS_ROOTCERT_FILE=$PWD/crypto/peerOrganizations/orgc.example.com/tlsca/tlsca.orgc.example.com-cert.pem
export ORDERER_TLSCA=$PWD/crypto/ordererOrganizations/example.com/tlsca/tlsca.example.com-cert.pem
export CHANNEL_NAME=txchannel

2、链码打包、安装与审批

注:该步骤需切换环境变量在每个环境变量下都操作一次(例上面给出三个环境变量,需切换在三个节点上都进行操作)

2.1 链码打包

peer lifecycle chaincode package supermapjavacc.tar.gz --path scripts/blockchaincode/ --lang java --label supermapcc

peer lifecycle chaincode package supermapgocc.tar.gz --path blockchaincode_go --lang golang --label supermapcc



// 需要现在 opt/gopath/src/github.com/hyperledger 创建文件夹 chaincode  然后把 go 链码文件夹复制进去
peer lifecycle chaincode package supermapgocc.tar.gz --path /opt/gopath/src/github.com/hyperledger/chaincode/blockchaincode_go/ --lang golang --label supermapcc

2.2 链码安装

peer lifecycle chaincode install supermapjavacc.tar.gz

peer lifecycle chaincode install supermapgocc.tar.gz

// 查看已安装的链码的 ID ,将ID向下面一样赋值为环境变量 CC_PACKAGE_ID
peer lifecycle chaincode queryinstalled

// 将程序包ID声明为环境变量
export CC_PACKAGE_ID=supermapcc2:b02ead52668486c38828ae8505dac943a7a0dab84901690c32105a25aaab5eca

2.3 链码审批

// 没有写背书策略(默认大多数单节点)和是否初始化(默认false)
peer lifecycle chaincode approveformyorg -o orderer0.example.com:7050 --ordererTLSHostnameOverride orderer0.example.com --channelID txchannel --package-id $CC_PACKAGE_ID --tls --cafile $ORDERER_TLSCA --sequence 1 --version 1.0 --name supermapcc

--tls 是否启动tls
--ca ca证书路径
--channelID 智能合约安装通道
--name 合约名
--version 合约版本
--package-id queryinstalled查询的合约ID
--sequence 序列号
--waitForEvent 等待peer提交交易返回
--init-required 合约是否必须执行init
--signature-policy 设置背书策略(默认单节点背书)

// 查询是否满足提交智能合约生命周期背书策略
 

3、向通道提交链码

注:在前面都审批之后,这里只需在一个节点上提交即可

// 单节点
peer lifecycle chaincode commit -o orderer0.example.com:7050 --ordererTLSHostnameOverride orderer0.example.com --channelID $CHANNEL_NAME --version 1.0 --sequence 1 --tls true --cafile $ORDERER_TLSCA --name supermapcc
 
// 多节点(有几个节点,就需要几个 `--peerAddresses` 和 `--tlsRootCertFiles`)
peer lifecycle chaincode commit -o orderer0.example.com:7050 --ordererTLSHostnameOverride orderer0.example.com --channelID $CHANNEL_NAME --name supermapcc --version 1.0 --sequence 1 --tls true --cafile $ORDERER_TLSCA --peerAddresses peer0.orga.example.com:7051 --tlsRootCertFiles  crypto/peerOrganizations/orga.example.com/tlsca/tlsca.orga.example.com-cert.pem  --peerAddresses peer0.orgb.example.com:7051 --tlsRootCertFiles   crypto/peerOrganizations/orgb.example.com/tlsca/tlsca.orgb.example.com-cert.pem --peerAddresses peer0.orgc.example.com:7051 --tlsRootCertFiles   crypto/peerOrganizations/orgc.example.com/tlsca/tlsca.orgc.example.com-cert.pem

// 查看节点已提交合约
peer lifecycle chaincode querycommitted --channelID txchannel --name supermapcc

4、执行链码

注:上述全部执行完成后,可执行链码判断链码是否已完全成功安装好

peer chaincode invoke -o orderer0.example.com:7050 -C txchannel -n supermapcc -c '{"Args":["PutStringRecordByKey","testKey","testValue"]}' --tls true --cafile $ORDERER_TLSCA
peer chaincode query -o orderer0.example.com:7050 -C txchannel -n supermapcc -c '{"Args":["GetRecordByKey","testKey"]}'

peer chaincode query -o orderer0.example.com:7050 -C txchannel -n supermapcc -c '{"Args":["GetHistoryByKey","testKey2", "0", "20000"]}'

peer chaincode invoke -o orderer:31292 -C channel1 -n supermapcc -c '{"Args":["PutStringRecordByKey","testKey1","testValue"]}' --tls true --cafile 

增加新的链码

// 假如增加的新的链码和原来的链码的功能是一样的,那么可以先获取已安装链码的ID
然后换名称提交和验证即可

5、更改日志输出级别

注:此操作是在容器里直接设置,当发生错误时可设日志级别(默认info)为debug,方便找错误

export FABRIC_LOGGING_SPEC=info
export FABRIC_LOGGING_SPEC=debug

6、升级链码

现在的链码升级没有单独的升级方法,是直接根据参数--sequence,即序列号进行链码版本的升级,每次升级过程和安装过程一样,直接每次参数--sequence加 1 即可

7、使用 go 链码

7.1 配置 GOPATH 环境

注:其实在 fabric-tools 容器里面是有GOPATH路径的

export GOPATH=/home/huawei/GOPATH
export GOROOT=/home/huawei/go
export PATH=$GOROOT/bin:$GOPATH/bin:$PATH  

7.2 编译链码

// 进入容器
docker exec -it cli bash
 
 

// 组织OrgA
export CORE_PEER_LOCALMSPID=OrgA
export CORE_PEER_ADDRESS=peer0.orga.example.com:7051
export CORE_PEER_MSPCONFIGPATH=$PWD/crypto/peerOrganizations/orga.example.com/users/Admin@orga.example.com/msp
export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_TLS_ROOTCERT_FILE=$PWD/crypto/peerOrganizations/orga.example.com/tlsca/tlsca.orga.example.com-cert.pem
export ORDERER_TLSCA=$PWD/crypto/ordererOrganizations/example.com/tlsca/tlsca.example.com-cert.pem
export CHANNEL_NAME=txchannel

// 组织OrgB
export CORE_PEER_LOCALMSPID=OrgB
export CORE_PEER_ADDRESS=peer0.orgb.example.com:7051
export CORE_PEER_MSPCONFIGPATH=$PWD/crypto/peerOrganizations/orgb.example.com/users/Admin@orgb.example.com/msp
export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_TLS_ROOTCERT_FILE=$PWD/crypto/peerOrganizations/orgb.example.com/tlsca/tlsca.orgb.example.com-cert.pem
export ORDERER_TLSCA=$PWD/crypto/ordererOrganizations/example.com/tlsca/tlsca.example.com-cert.pem
export CHANNEL_NAME=txchannel

// 组织OrgC
export CORE_PEER_LOCALMSPID=OrgC
export CORE_PEER_ADDRESS=peer0.orgc.example.com:7051
export CORE_PEER_MSPCONFIGPATH=$PWD/crypto/peerOrganizations/orgc.example.com/users/Admin@orgc.example.com/msp
export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_TLS_ROOTCERT_FILE=$PWD/crypto/peerOrganizations/orgc.example.com/tlsca/tlsca.orgc.example.com-cert.pem
export ORDERER_TLSCA=$PWD/crypto/ordererOrganizations/example.com/tlsca/tlsca.example.com-cert.pem
export CHANNEL_NAME=txchannel


 
// 复制到 GOPATH 路径下  进入链码里面编译
cp -r  scripts/blockchaincode_go/ /opt/gopath/src/
cd $GOPATH/src/blockchaincode_go


// 设置 goproxy 加速依赖的下载  编译出vendor目录并buil
export GOPROXY=https://goproxy.cn
go mod vendor   
go build 



// 进入目录下打包安装链码
cd /opt/gopath/src/github.com/hyperledger/fabric/peer/
peer lifecycle chaincode package supermap_chaincode.tar.gz --path blockchaincode_go --lang golang --label supermapcc2
peer lifecycle chaincode install supermap_chaincode.tar.gz


export CC_PACKAGE_ID=supermapcc2:b02ead52668486c38828ae8505dac943a7a0dab84901690c32105a25aaab5eca

peer lifecycle chaincode approveformyorg -o orderer0.example.com:7050 --ordererTLSHostnameOverride orderer0.example.com --channelID txchannel --package-id $CC_PACKAGE_ID --tls --cafile $ORDERER_TLSCA --sequence 1 --version 1.0 --name supermapcc


peer lifecycle chaincode commit -o orderer0.example.com:7050 --ordererTLSHostnameOverride orderer0.example.com --channelID $CHANNEL_NAME --version 1.0 --tls true --cafile $ORDERER_TLSCA  --sequence 1 --name supermapcc

// 查看节点已提交合约

peer lifecycle chaincode querycommitted --channelID txchannel --name supermapcc
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值