1.打包
1.1安装依赖
进入文件夹运行命令,生成vendor文件夹
GO111MODULE=on go mod vendor
1.2配置环境
export PATH=${PWD}/../bin:$PATH
export FABRIC_CFG_PATH=$PWD/../config/
如果运行
sudo peer
或是后面export失效可以按照下面的步骤进行调整:
首先是输入
sudo vim /etc/sudoers
,修改为
Defaults !env_reset
,然后再secure_path里添加fabric-samples/bin的位置。
1.3打包
peer lifecycle chaincode package fa.tar.gz --path ../chaincode/fabcar/go/ --lang golang --label fa_1.2
成功后再test-network文件夹下生成下面文件:
2.安装
使用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
安装链码:
sudo peer lifecycle chaincode install fa.tar.gz
查看安装情况
sudo peer lifecycle chaincode queryinstalled
结果如图:
3.提交修改
seq是指智能合约安装的次数,我这是第三此安装,所以设置为3。其它的设置容易理解不在这里解释了。
sudo peer lifecycle chaincode approveformyorg -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile /home/junze/Desktop/goproject/src/github.com/hyperledger/fabric/scripts/fabric-samples/test-network/organizations/ordererOrganizations/example.com/tlsca/tlsca.example.com-cert.pem --channelID mychannel --name fa --version 1.2 --package-id fa_1.2:c4605ff9cab07eef6912c45e4f507a91b44906bdd879f531cf939da9ce88cf83 --sequence 3
结果如图所示:
提交同意:
sudo peer lifecycle chaincode checkcommitreadiness --channelID mychannel --name fa --version 1.2 --sequence 3 --output json
可以看到Org1以及同意
接下来切换到Org2
export CORE_PEER_TLS_ENABLED=true
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
运行:
sudo peer lifecycle chaincode approveformyorg -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile /home/junze/Desktop/goproject/src/github.com/hyperledger/fabric/scripts/fabric-samples/test-network/organizations/ordererOrganizations/example.com/tlsca/tlsca.example.com-cert.pem --channelID mychannel --name fa --version 1.2 --package-id fa_1.2:c4605ff9cab07eef6912c45e4f507a91b44906bdd879f531cf939da9ce88cf83 --sequence 3
sudo peer lifecycle chaincode checkcommitreadiness --channelID mychannel --name fa --version 1.2 --sequence 3 --output json
结果如图所示:
Ps.
sudo peer lifecycle chaincode checkcommitreadiness --channelID mychannel --name fa --version 1.2 --sequence 3
可以查询哪个组织同意了哪个没有。
然后重新提交合约定义(同意比例达标后,满足提交条件):
sudo peer lifecycle chaincode commit -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls true --cafile /home/junze/Desktop/goproject/src/github.com/hyperledger/fabric/scripts/fabric-samples/test-network/organizations/ordererOrganizations/example.com/tlsca/tlsca.example.com-cert.pem --channelID mychannel --name fa --peerAddresses localhost:7051 --tlsRootCertFiles /home/junze/Desktop/goproject/src/github.com/hyperledger/fabric/scripts/fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/tlsca/tlsca.org1.example.com-cert.pem --peerAddresses localhost:9051 --tlsRootCertFiles /home/junze/Desktop/goproject/src/github.com/hyperledger/fabric/scripts/fabric-samples/test-network/organizations/peerOrganizations/org2.example.com/tlsca/tlsca.org2.example.com-cert.pem --version 1.2 --sequence 3
使用
sudo peer lifecycle chaincode querycommitted --channelID mychannel --name fa
查询结果