【提问】peer 实例化链码时候报错 Expecting a key and a value

peer 实例化链码时候报错 Expecting a key and a value

我使用的是 byfn.sh脚本启动的fabric网络,这个例子peer先是安装了fabric-samples/chaincode/chaincode_example02下的chaincode_example02.go,然后再实例化。这个步骤我手动试过也没有问题,然后我进入cli容器选择安装fabric-samples/chaincode/sacc下的sacc.go,安装没有问题,但是实例化时候报错

Error: could not assemble transaction, err proposal response was not successful, error code 500, msg transaction returned with failure: Incorrect arguments. Expecting a key and a value

sacc.go文件是和官方给的示例https://hyperledger-fabric.readthedocs.io/en/latest/chaincode4ade.html

peer chaincode install -p chaincodedev/chaincode/sacc -n mycc -v 0 peer chaincode instantiate -n mycc -v 0 -c ‘{“Args”:[“a”,“10”]}’ -C myc

下面是我实现安装和实例化的命令

peer chaincode instantiate -o orderer.example.com:7050 --tls true --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 mychannel -n mycc2 -l golang -v 1.0 -c ‘{“Args”:[“init”,“a”,“100”,“b”,“200”]}’

是不是我启动了tls的缘故,还是创建的sacc.go链码需要经过某些步骤才能被实例化?

虽然实例化是报错的,但docker ps时候还是看见实例化的链码容器已经启动,但是使用peer chaincode list -C mychannel --instantiated 命令查看peer实例化的链码时却没有看见,有哪位大神帮忙看看

查看你实例化的sacc.go的源码,你会发现init方法里面:
if len(args) != 2 {
return shim.Error(“Incorrect arguments. Expecting a key and a value”)
}
这边返回的就是你的错误信息。你可以在这边打印你传参信息再重新安装实例化,看一下错误原因。