HyperLedger Fabric - 超级账本(3)测试链码


测试链码

确定进入CLI容器中

$ sudo docker exec -it cli bash

Peer加入应用通道后, 可以执行链码相关操作,进行测试

链码在调用之前, 必须先经过安装和实例化两个步骤, 部署到Peer节点上.

检查环境变量是否正确设置

echo $CHANNEL_NAME

设置环境变量

export CHANNEL_NAME=mychannel

安装并实例化Chaincode

安装:

peer chaincode install -n mycc -v 1.0 -p github.com/chaincode/chaincode_example02/go/

参数说明:

-n: 指定要安装的链码的名称

-v: 指定要安装的链码的版本号

-p: 指定要安装的链码的链码文件所在路径

实例化:

peer chaincode instantiate -o orderer.example.com:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C $CHANNEL_NAME -n mycc -v 1.0 -c '{"Args":["init","a", "100", "b","200"]}' -P "OR ('Org1MSP.peer','Org2MSP.peer')"

参数说明:

-o: 指定Orderer服务地址

-n: 指定链码的名称

-v: 指定链码的版本号

-c: 指定实例化链码时的初始参数

-C: 指定链码的所属通道

-P:指定背书策略

–tls: 是否开启TLS

–cafile: 指定MSP CA证书路径

实例化完成后, 用户即可向网络中发起交易

调用链码:

  1. query
  2. invoke

查询

peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","a"]}'

参数说明:

-C: 指定所属通道

-n: 指定链码名称

-c: 调用链码的传递的参数

输出结果:Query Result: 100

调用/转账

peer chaincode invoke -o orderer.example.com:7050  --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem  -C $CHANNEL_NAME -n mycc -c '{"Args":["invoke","a","b","10"]}'

查询a账户的金额

peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","a"]}'

输出结果: Query Result: 90

练习

将github.com/chaincode/sacc/的链码安装并实例化,

  • 查询a账户的余额

  • 使用set方法设置a账户的余额

  • 使用get方法获取a账户的余额

实例化时只需要两个参数, 不需要指定操作名称

  • 两个参数: 账户名, 金额

set

  • 账户名, 金额

get

  • 账户名, 金额

文章作者: Jack Li
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Jack Li !
评论
  目录