2. Fabric2.2测试网络(test-network)的使用记录
在上一篇文章中记录下了Fabric2.2在Linux上的部署,这篇文章对Fabric的测试网络(test-network)进行实践并作相应记录。
·
系列文章目录
- Fabric2.2在Linux上的部署记录
- Fabric2.2测试网络(test-network)的使用记录
- 用go编写简单的fabric链码
- 将fabric链码部署到测试网络的记录
- 利用fabric-gateway-java连接并调用fabric链码
前言
在上一篇文章中记录下了Fabric2.2在Linux上的部署,这篇文章对Fabric的测试网络(test-network)进行实践并作相应记录。
一、测试网络是什么?
根据官方文档的描述,使用测试网络(test-network)可以在本地计算机运行节点、测试链码和应用程序等。不过测试网络只作测试目的,不应作实际生产的网络模板。
二、测试网络的使用
2.1 进入对应文件夹
cd fabric-samples/test-network
2.2 查看network.sh的内容
network.sh用于构建本地的fabric网络,应该多加研究。
#查看常用命令的操作解释
./network.sh -h
2.3 部署测试网络
- 关闭网络。删除之前创建的docker容器、peer节点、order服务、通道等等。
./network.sh down
- 启动网络。以默认的方式启动,即包含两个org(各一个peer节点)和一个order节点。
./network.sh up
- 创建通道。默认通道名字是mychannel,也可通过-c指定通道名字。
./network.sh createChannel c channel1
- 启动网络和创建通道可合并为一条命令。
./network.sh up createChannel
2.4 部署链码
fabric-samples中提供了多个链码样例,可通过以下命令进行部署。
./network.sh deployCC
deployCC
命令部署的链码处于fabric-samples/asset-transfer-basic/chaincode-go
,链码名字为basic
,链码编写语言为go,详细的链码内容可见这里。
2.5 与链码交互
- 配置环境
export PATH=${PWD}/../bin:$PATH
export FABRIC_CFG_PATH=$PWD/../config/
- 以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
- 调用初始化函数进行初始化
peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n basic --peerAddresses localhost:7051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses localhost:9051 --tlsRootCertFiles ${PWD}/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 ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n basic --peerAddresses localhost:7051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses localhost:9051 --tlsRootCertFiles ${PWD}/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"
,结果即为新增了该项资产。
可利用查询函数进行单项查询。如下所示:
peer chaincode query -C mychannel -n basic -c '{"Args":["ReadAsset","asset7"]}'
- 以上命令也能以org2的身份执行,执行如下命令即可切换到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
- 链码中还有其他函数可供调用,详见这里。命令行调用的方法参考上述内容,修改所需调用的函数名字和参数
'{"function":"InitLedger","Args":[]}'
。修改账本状态的函数利用peer chaincode invoke
进行调用;查询账本的函数利用peer chaincode query
进行调用。 - 测试完毕后,利用
./network.sh down
关闭网络。
总结
本文简单记录下了Fabric2.2中测试网络(test-network)的使用,想要了解更详细的内容应该参考官方文档并结合链码进行学习。如有不正,请多多指教。
更多推荐
已为社区贡献1条内容
所有评论(0)