建议在root命令下进行
如果在root下,输入go version后出现
Command ‘go’ not found, but can be installed with:
snap install go # version 1.18.2, or
apt install golang-go # version 2:1.13~1ubuntu2
apt install gccgo-go # version 2:1.13~1ubuntu2
root下不能使用go的解决方法
过程步骤:
#启动网络
sudo ./network.sh up
#创建频道
sudo ./network.sh up createChannel
#切换到go文件下配置环境变量
cd ../chaincode/fabcar/go/go env -w GO111MODULE=ongo env -w GOPROXY=https://goproxy.io,directgo mod vendor
#切换到network目录下配置环境
cd ../../../test-networkexport PATH=${PWD}/../bin:$PATHexport FABRIC_CFG_PATH=$PWD/../config/
#增加权限
cd ..sudo chmod +x test-networkcd test-network
#查看peer的版本
peer version
#使用peer命令,在peer节点上创建链码包
peer lifecycle chaincode package fabcar.tar.gz --path ../chaincode/fabcar/go/ --lang golang --label fabcar_1
#查看是否打包成功
ls -ll
#安装链码包
#为org1 peer节点安装链码
export CORE_PEER_TLS_ENABLED=trueexport CORE_PEER_LOCALMSPID="Org1MSP"export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations//peers/peer0./tls/ca.crtexport CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations//users/Admin@/mspexport CORE_PEER_ADDRESS=localhost:7051
#使用peer命令,在peer节点上安装链码包
peer lifecycle chaincode install fabcar.tar.gz
#为org2 peer节点安装链码
export CORE_PEER_LOCALMSPID="Org2MSP"export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations//peers/peer0./tls/ca.crtexport CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations//users/Admin@/mspexport CORE_PEER_ADDRESS=localhost:9051
#使用peer命令,在peer节点上安装链码包
peer lifecycle chaincode install fabcar.tar.gz
#通过链码定义
#查询包ID
peer lifecycle chaincode queryinstalled
#当我们批准链码时,我们将使用包 ID,所以让我们继续将其保存为环境变量。将返回的包 ID 粘贴到下面的命令中。注意:并非所有用户的包 ID 都相同,因此您需要使用上一步命令窗口返回的包 ID 完成此步骤。peer lifecycle chaincode queryinstalled
export CC_PACKAGE_ID=fabcar_1:1146b4b491871bf18b23dd67dd8cc058655b36cc0e2274f165ed06b796a8f276
#org2通过链码定义
peer lifecycle chaincode approveformyorg -o localhost:7050 --ordererTLSHostnameOverride --channelID mychannel --name fabcar --version 1.0 --package-id $CC_PACKAGE_ID --sequence 1 --tls --cafile "${PWD}/organizations/ordererOrganizations//orderers//msp/tlscacerts/-cert.pem"
#我们仍然需要批准链码定义为 Org1。设置以下环境变量以作为 Org1 管理员运行:
export CORE_PEER_LOCALMSPID="Org1MSP"export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations//users/Admin@/mspexport CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations//peers/peer0./tls/ca.crtexport CORE_PEER_ADDRESS=localhost:7051peer lifecycle chaincode approveformyorg -o localhost:7050 --ordererTLSHostnameOverride --channelID mychannel --name fabcar --version 1.0 --package-id $CC_PACKAGE_ID --sequence 1 --tls --cafile "${PWD}/organizations/ordererOrganizations//orderers//msp/tlscacerts/-cert.pem"
#可以使用peer 生命周期链码 checkcommitreadiness命令检查通道成员是否批准了相同的链码
peer lifecycle chaincode checkcommitreadiness --channelID mychannel --name fabcar --version 1.0 --sequence 1 --tls --cafile "${PWD}/organizations/ordererOrganizations//orderers//msp/tlscacerts/-cert.pem" --output json
#使用peer 生命周期链代码提交命令将链代码定义提交到通道。提交命令还需要由组织管理员提交。将链码提交到通道
peer lifecycle chaincode commit -o localhost:7050 --ordererTLSHostnameOverride --channelID mychannel --name fabcar --version 1.0 --sequence 1 --tls --cafile "${PWD}/organizations/ordererOrganizations//orderers//msp/tlscacerts/-cert.pem" --peerAddresses localhost:7051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations//peers/peer0./tls/ca.crt" --peerAddresses localhost:9051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations//peers/peer0./tls/ca.crt"
#使用peer 生命周期链代码 querycommitted命令来确认链代码定义已提交到通道
peer lifecycle chaincode querycommitted --channelID mychannel --name fabcar --cafile "${PWD}/organizations/ordererOrganizations//orderers//msp/tlscacerts/-cert.pem"
#调用链码
peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride --tls --cafile "${PWD}/organizations/ordererOrganizations//orderers//msp/tlscacerts/-cert.pem" -C mychannel -n fabcar --peerAddresses localhost:7051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations//peers/peer0./tls/ca.crt" --peerAddresses localhost:9051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations//peers/peer0./tls/ca.crt" -c '{"function":"InitLedger","Args":[]}'
#查询函数来读取由链码创建的汽车集合
peer chaincode query -C mychannel -n fabcar -c '{"Args":["queryAllCars"]}'
参考链接:
https://hyperledger-fabric.readthedocs.io/en/release-2.2/deploy_chaincode.html#install-the-chaincode-package