原创

Hyperledger Fabric系列之三:2.2.1部署-运行测试网络-Centos7

温馨提示:
本文最后更新于 2022年03月03日,已超过 1,154 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

承接二:

修改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

正文到此结束
本文目录