Hyperledger Fabric入门(4)-fabric CLI调用智能合约

Hyperledger Fabric入门(4)-fabric CLI调用智能合约,第1张

本章主要运行fabric-samples/asset-transfer-basic/chaincode-go工程,了解智能合约的安装和调用。

第1步:启动网络
进入目录/usr/local/go/src/github.com/hyperledger/fabric-samples/test-network,输入命令

./network.sh up


第2步:创建通道:
目录/usr/local/go/src/github.com/hyperledger/fabric-samples/test-network,输入命令

./network.sh createChannel


可以看到创建了一个名称为mychannel的通道。


第3步:启动部署链码
目录/usr/local/go/src/github.com/hyperledger/fabric-samples/test-network,输入命令

./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go


链码的位置:fabric-samples/asset-transfer-basic/chaincode-go
链码的名称:basic。

第4步:链码交互
1)将fabric-samples/bin添加到环境变量,可以直接执行二进制文件。
输入命令:export PATH=${PWD}/../bin:$PATH

2)设置环境变量FABRIC_CFG_PATH,路径为/fabric-samples/config,可以访问配置文件。
输入命令:export FABRIC_CFG_PATH=$PWD/../config/

3)设置环境变量,以允许您作为Org1 *** 作peer CLI
输入命令:

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


4)初始化链码
目录/usr/local/go/src/github.com/hyperledger/fabric-samples/test-network,输入命令

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":[]}'


主要是调用InitLedger函数,可以看到成功status=200的输出:


5)通道账本中查询数据。
目录/usr/local/go/src/github.com/hyperledger/fabric-samples/test-network,输入命令

peer chaincode query -C mychannel -n basic -c '{"Args":["GetAllAssets"]}'


可以看到查询结果,返回一个json数组:


格式化后:
[{“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},

6)通道账本中新增一条数据:
目录/usr/local/go/src/github.com/hyperledger/fabric-samples/test-network,输入命令

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"]}'


调用CreateAsset函数,可以看到成功status=200的输出:


7)通道账本中验证新增一条数据
目录/usr/local/go/src/github.com/hyperledger/fabric-samples/test-network,输入命令
peer chaincode query -C mychannel -n basic -c '{"Args":["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},
{“ID”:“asset7”,“color”:“blue”,“size”:20,“owner”:“Klay”,“appraisedValue”:777}]

第5步:链码交互完毕后,关闭网络:
进入目录/usr/local/go/src/github.com/hyperledger/fabric-samples/test-network,输入命令

./network.sh down

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/1298552.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存