前期准备:
一个configtx.yaml 一个crypto-config.yaml 一个docker-compose.yaml【作者这里将cli peer orderer进行融合 没有分开】 生成相应的配置文件,如图:
相应的代码:
cryptogen generate --config ./ crypto-config.yaml 生成系列配置文件crypto-config
configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./channel-artifacts/genesis.block -channelID fabric.channel 生成创世块【注意此处尽量不要用 mychannel】
configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID mychannel 生成通道配置
configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org1MSP 生成锚节点configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org2MSP 生成锚节点
正式开始 -----------------------------------------------
启动整个适配网络 docker-compose -f docker-compose.yaml up -d
本作者在这里设置了俩个cli 将 org1 和 org2 分别放到俩个容器【本人非测试网络 example】
docker exec -it cli1 bash 进入容器一
peer channel create -o orderer.traceability.com:7050 -c mychannel -f ./channel-artifacts/channel.tx --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/traceability.com/msp/tlscacerts/tlsca.traceability.com-cert.pem
peer channel join -b mychannel.block
exit 退出容器 将生成的mychannel.block 复制到cli2中
docker cp cli1:/opt/gopath/src/github.com/hyperledger/fabric/peer/mychannel.block ./
docker cp ./mychannel.block cli2:/opt/gopath/src/github.com/hyperledger/fabric/peer/
docker exec -it cli2 bash 进入容器二
peer channel join -b mychannel.block
更新组织一锚节点
peer channel update -o orderer.traceability.com:7050 -c mychannel -f ./channel-artifacts/Org2MSPanchors.tx --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/traceability.com/orderers/orderer.traceability.com/msp/tlscacerts/tlsca.traceability.com-cert.pem
docker exec -it cli1 bash 进入容器一
更新组织二锚节点
peer channel update -o orderer.traceability.com:7050 -c mychannel -f ./channel-artifacts/Org1MSPanchors.tx --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/traceability.com/orderers/orderer.traceability.com/msp/tlscacerts/tlsca.traceability.com-cert.pem
【同上】
配置cli容器内的go环境【这里是使用go的链码】
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
生成链码
peer lifecycle chaincode package mycc.tar.gz --path /opt/gopath/src/github.com/hyperledger/fabric-cluster/chaincode/go/ --lang golang --label mycc_1
安装链码
peer lifecycle chaincode install mycc.tar.gz
将生成的mycc.tar.gz复制到容器2中
docker cp cli1:/opt/gopath/src/github.com/hyperledger/fabric/peer/mycc.tar.gz ./
docker cp ./mycc.tar.gz cli2:/opt/gopath/src/github.com/hyperledger/fabric/peer
docker exec -it cli2 bash 进入容器二
安装链码
peer lifecycle chaincode install mycc.tar.gz
查看已安装链码
peer lifecycle chaincode queryinstalled
链码认证
peer lifecycle chaincode approveformyorg --channelID mychannel --name mycc --version 1.0 --init-required --package-id mycc_1:093b3fb9aebd12b88329f9892d8df01b61165b9e4c1f613af7a6f979fd712d9b --sequence 1 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/traceability.com/orderers/orderer.traceability.com/msp/tlscacerts/tlsca.traceability.com-cert.pem
docker exec -it cli1 bash 进入容器一
链码认证
peer lifecycle chaincode approveformyorg --channelID mychannel --name mycc --version 1.0 --init-required --package-id mycc_1:093b3fb9aebd12b88329f9892d8df01b61165b9e4c1f613af7a6f979fd712d9b --sequence 1 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/traceability.com/orderers/orderer.traceability.com/msp/tlscacerts/tlsca.traceability.com-cert.pem
提交链码
peer lifecycle chaincode commit -o orderer.traceability.com:7050 --channelID mychannel --name mycc --version 1.0 --sequence 1 --init-required --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/traceability.com/orderers/orderer.traceability.com/msp/tlscacerts/tlsca.traceability.com-cert.pem --peerAddresses peer0.org1.traceability.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.traceability.com/peers/peer0.org1.traceability.com/tls/ca.crt --peerAddresses peer0.org2.traceability.com:9051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.traceability.com/peers/peer0.org2.traceability.com/tls/ca.crt
初始化链码
peer chaincode invoke -o orderer.traceability.com:7050 --ordererTLSHostnameOverride orderer.traceability.com --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/traceability.com/orderers/orderer.traceability.com/msp/tlscacerts/tlsca.traceability.com-cert.pem -C mychannel --name mycc --peerAddresses peer0.org1.traceability.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.traceability.com/peers/peer0.org1.traceability.com/tls/ca.crt --peerAddresses peer0.org2.traceability.com:9051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.traceability.com/peers/peer0.org2.traceability.com/tls/ca.crt --isInit -c '{"Args":["a","bb"]}'
查询链码
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
致此,环境测试已经完成,作者期间遇到一个意外的错误,如下:
error: endorsement failure during invoke. response: status:500 message:"make sure the chaincode mycc...
出现在以上初始化链码部分
出现原因:可能cli1和cli2的容器执行顺序问题,但是在运行一次会问题+切换了一下链码名称就消失了【sacc改为mycc】会消失,待定。。。
其它遇到的问题作者这里没有收集,有需要的评论区可以交流