Hyperledger Fabric系列之三:2.2.1部署-运行测试网络-Centos7
承接二:
修改shell脚本
由于dockor-compose1.28.*以后版本读取.env的配置文件有问题,所以./env文件中的配置系统无法生效,需要手动加进去环境变量中:
vi ./network.sh #返.env的配置加到前面的export中,如下: export PATH=${PWD}/../bin:$PATH export FABRIC_CFG_PATH=${PWD}/configtx export COMPOSE_PROJECT_NAME=net export IMAGE_TAG=latest export SYS_CHANNEL=system-channel
或者在需要用到的地方加上--envfile ./.env参数,这种方法在网络down是也会读取不到配置而报错。
if [ "$CRYPTO" == "Certificate Authorities" ]; then
infoln "Generating certificates using Fabric CA"
IMAGE_TAG=${CA_IMAGETAG} docker-compose --env-file ./.env -f $COMPOSE_FILE_CA up -d 2>&1
有两处:
function networkUp() {
checkPrereqs
# generate artifacts if they don't exist
if [ ! -d "organizations/peerOrganizations" ]; then
createOrgs
createConsortium
fi
COMPOSE_FILES="-f ${COMPOSE_FILE_BASE}"
if [ "${DATABASE}" == "couchdb" ]; then
COMPOSE_FILES="${COMPOSE_FILES} -f ${COMPOSE_FILE_COUCH}"
fi
IMAGE_TAG=$IMAGETAG docker-compose --env-file ./.env ${COMPOSE_FILES} up -d 2>&1
部署测试网络:
cd /opt/workspace/gowork/hyperledger/fabric/scripts/fabric-samples/test-network
./network.sh up
创建通道:
./network.sh createChannel
部署链码:
./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go
与链码交互:
配置环境,这里是以org1身份运行:
vi /root/.bashrc
#增加如下配置
export CORE_PEER_TLS_ENABLED=true
export PATH=/opt/workspace/gowork/hyperledger/fabric/scripts/fabric-samples/bin:$PATH
export FABRIC_CFG_PATH=/opt/workspace/gowork/hyperledger/fabric/scripts/fabric-samples/config/
export CORE_PEER_LOCALMSPID=Org1MSP
# export CORE_PEER_TLS_ROOTCERT_FILE=/opt/workspace/gowork/hyperledger/fabric/scripts/fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/tls/ca.crt
export CORE_PEER_TLS_ROOTCERT_FILE=/opt/workspace/gowork/hyperledger/fabric/scripts/fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=/opt/workspace/gowork/hyperledger/fabric/scripts/fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
# export CORE_PEER_ADDRESS=org1.example.com:7051
export CORE_PEER_ADDRESS=localhost:7051
#保存
source /root/.bashrc
调用初始化函数进行初始化:
peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile /opt/workspace/gowork/hyperledger/fabric/scripts/fabric-samples/test-network/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n basic --peerAddresses localhost:7051 --tlsRootCertFiles /opt/workspace/gowork/hyperledger/fabric/scripts/fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses localhost:9051 --tlsRootCertFiles /opt/workspace/gowork/hyperledger/fabric/scripts/fabric-samples/test-network/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"function":"InitLedger","Args":[]}'
这里利用peer chaincode invoke调用链码中的InitLedger函数,无需参数,调用成功结果如下:
-> INFO 001 Chaincode invoke successful. result: status:200
调用函数查询账本:
peer chaincode query -C mychannel -n basic -c '{"Args":["GetAllAssets"]}'
这里利用peer chaincode query调用链码中的查询函数GetAllAssets,无需参数,返回账本中的所有内容,如:
[{"ID":"asset1","color":"blue","size":5,"owner":"Tomoko","appraisedValue":300},
{"ID":"asset2","color":"red","size":5,"owner":"Brad","appraisedValue":400},
{"ID":"asset3","color":"green","size":10,"owner":"Jin Soo","appraisedValue":500},
{"ID":"asset4","color":"yellow","size":10,"owner":"Max","appraisedValue":600},
{"ID":"asset5","color":"black","size":15,"owner":"Adriana","appraisedValue":700},
{"ID":"asset6","color":"white","size":15,"owner":"Michel","appraisedValue":800}]
调用函数新增资产:
peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile /opt/workspace/gowork/hyperledger/fabric/scripts/fabric-samples/test-network/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n basic --peerAddresses localhost:7051 --tlsRootCertFiles /opt/workspace/gowork/hyperledger/fabric/scripts/fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses localhost:9051 --tlsRootCertFiles /opt/workspace/gowork/hyperledger/fabric/scripts/fabric-samples/test-network/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"function":"CreateAsset","Args":["asset7","blue","20","Klay","777"]}'
这里利用peer chaincode invoke调用链码中的CreateAsset函数,参数为"asset7","blue","20","Klay","777",结果即为新增了该项资产。
返回内容:
-> INFO 001 Chaincode invoke successful. result: status:200
再次查询,可以看到多了一条刚才加的一条数据:
[{"ID":"asset1","color":"blue","size":5,"owner":"Tomoko","appraisedValue":300},
{"ID":"asset2","color":"red","size":5,"owner":"Brad","appraisedValue":400},
{"ID":"asset3","color":"green","size":10,"owner":"Jin Soo","appraisedValue":500},
{"ID":"asset4","color":"yellow","size":10,"owner":"Max","appraisedValue":600},
{"ID":"asset5","color":"black","size":15,"owner":"Adriana","appraisedValue":700},
{"ID":"asset6","color":"white","size":15,"owner":"Michel","appraisedValue":800},
{"ID":"asset7","color":"blue","size":20,"owner":"Klay","appraisedValue":777}]
可利用查询函数进行单项查询。如下所示:
peer chaincode query -C mychannel -n basic -c '{"Args":["ReadAsset","asset7"]}'
还可以修改环境变量,以org2身份操作,只需要把/root/.bashrc中org1的换成org2的就可以:
export CORE_PEER_TLS_ENABLED=true
export PATH=/opt/workspace/gowork/hyperledger/fabric/scripts/fabric-samples/bin:$PATH
export FABRIC_CFG_PATH=/opt/workspace/gowork/hyperledger/fabric/scripts/fabric-samples/config/
export CORE_PEER_LOCALMSPID=Org2MSP
export CORE_PEER_TLS_ROOTCERT_FILE=/opt/workspace/gowork/hyperledger/fabric/scripts/fabric-samples/test-network/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=/opt/workspace/gowork/hyperledger/fabric/scripts/fabric-samples/test-network/organizations/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp
export CORE_PEER_ADDRESS=localhost:7051
- 本文标签: 区块链
- 本文链接: https://www.linxyun.com/blog/article/6
- 版权声明: 本文由林栖云 原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权