fabric多机安装链码
一、如何安装链码
1.安装链码
-打包链码,由于这次的例子是基于 go 语言开发的智能合约,会依赖 go 的开发环境进行安装,如果使用 peer chaincode install 命令指定链码路径安装,可能会造成其他虚拟上安装的同样的链码无法同步实例化(go 开发环境不一致引起的问题),所以这里使用 go chaincode package 打包链码,然后通过安装打包链码文件进行链码的安装。
注意:这里进行测试的链码是 fabric 源码中的样例-p 指定的路径在命令执行的时候会自动根据 GOPATH 环境变量自动补全前缀,所以路径一个在 $GOPATH/src/目录下:
peer chaincode package -n test -p github.com/hyperledger/fabric/examples/chaincode/go/test -v 1.0 test.pak
使用 scp 命令分发 test.pak 文件至其他3台 peer 节点虚拟机的 fabric 网络执行环境变量路径下。例如:
scp -r test.pak root@172.17.0.233:/etc/hyperledger/fabric/
- 安装链码
peer chaincode install test.pak
-安装链码的 peer 节点服务器可以通过终端命令查看已安装的链码信息,如图:
peer chaincode -C testchannel list --installed
2.初始化链码
初始化链码,只需要在一台 peer 节点的服务器上执行实例化后自动创建链码容器,其他 peer 节点服务器会同步该实例化的链码信息,并创建链码容器(需要启动docker容器:service docker start)
peer chaincode instantiate -o orderer0.example.com:7050 -C testchannel -n test -v 1.0 -c’{“Args”:[]}’ -P “OR (‘Org1MSP.member’,‘Org2MSP.member’,‘Org3MSP.member’)” --tls true --cafile /etc/hyperledger/fabric/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
命令执行后对交易用户 a赋值100,交易用户 b 赋值200代币。
使用命令查看链码容器信息:docker ps。如图:
使用命令:
peer chaincode query -n test -C testchannel -c’{“Args”:[“query”,“a”]}’
查看用户a(b)初始值:
1.测试交易
执行命令发送一笔交易,命令 b 向 a 转账 40个代币:
peer chaincode invoke -o orderer.example.com:7050 -C testchannel -n test -c’{“Args”:[“invoke”,“b”,“a”,“40”]}’ --tls ture --cafile /etc/hyperledger/fabric/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
再次查询a、b余额命令与五.2查询命令相同:
查询转账命令可以在任意peer节点执行,上面查询在.1.40节点(日志级别debug),下面查询在.0.233节点(日志级别info):
二、安装实例
编辑tp.go
509 vim tp.go
510 go build
打包并安装链码
511 peer chaincode package -n tp -p github.com/hyperledger/fabric/examples/chaincode/go/tp -v 1.0 tp.pak
512 peer chaincode install tp.pak
513 peer chaincode -C biconchannel list --installed
实例化链码
516 peer chaincode instantiate -o orderer0.example.com:7050 -C biconchannel -n tp -v 1.0 -c’{“Args”:[]}’ -P “OR (‘Org1MSP.member’,‘Org2MSP.member’,‘Org3MSP.member’)” --tls true --cafile /etc/hyperledger/fabric/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
初始化账本
517 peer chaincode invoke -o orderer0.example.com:7050 --tls true --cafile /etc/hyperledger/fabric/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C testchannel -n tp -c ‘{“Args”:[“initLedger”]}’
查询候选人票数
518 peer chaincode invoke -o orderer0.example.com:7050 --tls true --cafile /etc/hyperledger/fabric/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C testchannel -n tp -c ‘{“Args”:[“queryTicket”,“CANDIATE0”]}’
查询一定范围候选人票数
519 peer chaincode invoke -o orderer0.example.com:7050 --tls true --cafile /etc/hyperledger/fabric/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C testchannel -n person -c ‘{“Args”:[“queryAll”,“CANDIATE0”,“CANDIATE3”]}’
删除候选人
520 peer chaincode invoke -o orderer0.example.com:7050 --tls true --cafile /etc/hyperledger/fabric/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C testchannel -n person -c ‘{“Args”:[“delete”,“CANDIATE0”]}’
增加候选人
521 peer chaincode invoke -o orderer0.example.com:7050 --tls true --cafile /etc/hyperledger/fabric/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C testchannel -n person -c ‘{“Args”:[“addPeople”,“CANDIATE0”,“ln”,“name”,“number”]}’
升级chaincode
1067 peer chaincode package -n tp2 -p github.com/hyperledger/fabric/examples/chaincode/go/tp2 -v 2.0 tp2.pak
1068 peer chaincode install -v 2.0 tp2.pak
1069 peer chaincode upgrade -o orderer0.example.com:7050 -C biconchannel -n tp2 -v 2.0 -c’{“Args”:[]}’ -P “OR (‘Org1MSP.member’,‘Org2MSP.member’,‘Org3MSP.member’)” --tls true --cafile /etc/hyperledger/fabric/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/tlscacerts/tlsca.example.com-cert.pem