docker exec -it cli bash
CORE_PEER_LOCALMSPID="Org1MSP"
CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.xxxx.com/users/[email protected]/msp
CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.xxx.com/peers/peer0.org1.xxx.com/tls/ca.crt
CORE_PEER_ADDRESS=192.168.0.192:7051
ORDERER_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/xxx.com/orderers/orderer0.xxx.com/msp/tlscacerts/tlsca.xxx.com-cert.pem
CORE_PEER_TLS_ENABLED=true
ORDERER_ADDRESS=192.168.0.192:7050
CHAINCODE_NAME=test
CHAINCODE_VERSION=1.0
CHANNEL_NAME=mychannel
可通过修改CORE_PEER_TLS_ROOTCERT_FILE
和CORE_PEER_ADDRESS
来切换不同的peer。
#查看该peer所属channel
peer channel list
#Install chaincode on peer0.org1,需要每个peer单独install,但仅需在一个peer instantiate.
peer chaincode install -n $CHAINCODE_NAME -v 1.0 -p github.com/salarypay
#Instantiate the chaincode
peer chaincode instantiate -o 192.168.0.192:7050 --tls true --cafile $ORDERER_CA -C mychannel-n test -v 1.0 -c '{"Args":["init","a","100","b","200"]}' -P "OR('Org1MSP.member','Org2MSP.member')"
#invoke调用智能合约。根据智能合约中写的函数和参数要求来调用
peer chaincode invoke -o $ORDERER_ADDRESS -C mychannel-n $CHAINCODE_NAME -v $CHAINCODE_VERSION -c '{"Args":["createDestituteSalary","aea12582475b4650a56195ff2db1c52e","{\"id\":\"aea12582475b4650a56195ff2db1c52e\",\"doctype\":\"destiSalary\",\"applyer_id\":\"2\",\"poor_id\":\"3\",\"metadata\":{\"bcIsinventory\":0,\"memberId\":\"aea12582475b4650a56195ff2db1c52e\"}}"]}' --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA
#query调用智能合约。根据智能合约中写的函数和参数要求来调用
peer chaincode query -o $ORDERER_ADDRESS -C mychannel -n $CHAINCODE_NAME -v $CHAINCODE_VERSION -c '{"Args":["query","destiSalary:aea12582475b4650a56195ff2db1c52e"]}' --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA
#getccdata用于获取合约的数据。查询zzzg智能合约在mychannel 上是否实例化instantiate成功,若实例化instantiate成功了,则会返回数据。若不成功,则会报错“ chaincode error (status: 500, message: could not find chaincode with name ‘zzzg’)”
peer chaincode query -C $CHANNEL_NAME -n lscc -c '{"Args":["getccdata","mychannel ","zzzg"]}'
#getchaincodes方法用于获取在部署在通道上的合约的列表。如下CLI命令从通道mychannel 上获取实例化的合约列表。
peer chaincode query -o 192.168.1.8:7050 --tls true --cafile $ORDERER_CA -C $CHANNEL_NAME -n lscc -c '{"Args":["getchaincodes"]}'
#返回数据如下,列表中显示的是所有在mychannel 中实例化成功的合约列表。
2019-01-11 03:19:19.225 UTC [chaincodeCmd] chaincodeInvokeOrQuery -> INFO 00a Chaincode invoke successful. result: status:200 payload:"
\n-\n\003aaa\022\0031.0\032\016github.com/aaa\"\005*\004escc2\004vscc\n/\n\004
abcd\022\0031.0\032\017github.com/abcd\"\005*\004escc2\004vscc\nT\n\002
c4\022\0031.0\032=github.com/hyperledger/fabric/examples/chaincode/go/logistics*\004escc2\004vscc\n`\n\004
mycc\022\0031.0\032Ggithub.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02*\004escc2\004vscc\n\030\n\005
newcc\022\0031.0*\004escc2\004vscc\n*\n\005
testa\022\0032.0\032\020github.com/testa*\004escc2\004vscc\n1\n\005
testb\022\0031.0\032\020github.com/testb\"\005*\004escc2\004vscc\n1\n\005
testc\022\0031.0\032\020github.com/testc\"\005*\004escc2\004vscc\nL\n\010
zouyudid\022\0031.0\032(github.com/chaincode/chaincode_example02\"\005*\004escc2\004vscc\n7\n\010
zouyudie\022\0031.0\032\023github.com/zouyudie\"\005*\004escc2\004vscc\nL\n\010
zouyudif\022\0031.0\032(github.com/chaincode/chaincode_example02\"\005*\004escc2\004vscc\nH\n\004
zzza\022\0031.0\032(github.com/chaincode/chaincode_example02\"\005*\004escc2\004vscc\nH\n\004
zzzd\022\0031.0\032(github.com/chaincode/chaincode_example02\"\005*\004escc2\004vscc\nH\n\004
zzzi\022\0031.0\032(github.com/chaincode/chaincode_example02\"\005*\004escc2\004vscc"
#getdepspec方法用于获取安装在peer上的合约的chaincode deployment spec。下面的CLI命令将从通道mychannel 中获取zzzg合约的deployment spec。
peer chaincode query -C $CHANNEL_NAME -n lscc -c '{"Args":["getdepspec", "mychannel ", "zzzg"]}'
#getinstalledchaincodes方法用于获取在peer上安装install的合约的列表。
peer chaincode query -C "" -n lscc -c '{"Args":["getinstalledchaincodes"]}'
#返回的数据为所有在该peer install成功的智能合约列表:
Query Result:
aaa1.0github.com/aaa
abcd1.0github.com/abcd
H
c41.0=github.com/hyperledger/fabric/examples/chaincode/go/logistics
T
mycc1.0Ggithub.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02
testa1.0github.com/testa
testa2.0github.com/testa
testb1.0github.com/testb
testc1.0github.com/testc
` z
ouyudia1.0Ogithub.com/hyperledger/fabric/examples/e2e_cli/chaincode/go/chaincode_example02` z
ouyudib1.0Ogithub.com/hyperledger/fabric/examples/e2e_cli/chaincode/go/chaincode_example02` z
ouyudic1.0Ogithub.com/hyperledger/fabric/examples/e2e_cli/chaincode/go/chaincode_example029 z
ouyudid1.0(github.com/chaincode/chaincode_example02$ z
ouyudie1.0github.com/zouyudie9 z
ouyudif1.0(github.com/chaincode/chaincode_example029 z
ouyudig1.0(github.com/chaincode/chaincode_example029 z
ouyudih1.0(github.com/chaincode/chaincode_example025
zzza1.0(github.com/chaincode/chaincode_example02
5
zzzb1.0(github.com/chaincode/chaincode_example02
5
zzzc1.0(github.com/chaincode/chaincode_example02
5
zzzd1.0(github.com/chaincode/chaincode_example02
5
zzze1.0(github.com/chaincode/chaincode_example02
5
zzzf1.0(github.com/chaincode/chaincode_example02
5
zzzg1.0(github.com/chaincode/chaincode_example02
5
#getid用于获取合约的id。若实例化instantiate成功了,则会返回数据。若不成功,则会报错“ chaincode error (status: 500, message: could not find chaincode with name ‘zzzg’)”
peer chaincode query -C $CHANNEL_NAME -n lscc -c '{"Args":["getid","mychannel ","zzzi"]}'