chaincode instantiate: Error reading from ip:port; rpc error: code = Canceled desc = context canceled. without docker

chaincode instantiate: Error reading from ip:port; rpc error: code = Canceled desc = context canceled. without docker

我有一个 hyperledger fabric 网络,有一个排序节点和一个节点,排序节点在排序节点组织 (OrdererOrg) 中,节点在节点组织 (Org1) 中。我能够同时启动订购者和对等方,创建一个通道,对等方能够加入该通道。

接下来,我可以在对等节点上安装链代码。但是,当我尝试实例化链码时,在订购者终端上我收到警告消息

2019-04-25 16:48:08.203 EDT [orderer.common.broadcast] Handle -> WARN 01a Error reading from 127.0.0.1:33340: rpc error: code = Canceled desc = context canceled

peer终端和执行终端都没有报错信息,说明命令运行成功

instantiate 能够下载链代码的 docker 容器。

我可以通过 运行 docker image ls 看到 docker 个图像,它显示了两个 docker 个图像

myfn-peer1-mycc-1.0-6ec0d4e71b402887d447e77b3b23b0ab860673e40ec5750a912a2faffe0158cf

hyperledger/fabric-javaenv

接下来,当我尝试查询链代码时,我收到错误提示找不到链代码。

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

Error: endorsement failure during query. response: status:500 message:"make sure the chaincode mycc has been successfully instantiated and try again: chaincode mycc not found"

我不确定缺少什么,我检查了配置和环境变量,一切似乎都是正确的。

我想,您的 Peer 能够创建实例化交易并将其发送给订购者。另一方面,排序者创建一个块并将其发送给对等方。但是,对等方无法获取区块并将其存储在分类帐中,在这种情况下,您将能够一次又一次地实例化您的链代码。如果您尝试查询,您将得到

Error: endorsement failure during query. response: status:500 message:"make sure the chaincode mycc has been successfully instantiated and try again: chaincode mycc not found"

Artem Barger 在他的 中提到,但是,在这个答案中,您 不需要 需要将订购服务端点设置为 orderer.7050

这个问题的解决方案是,排序节点使用八卦协议将块发送给它的节点。确保在您的配置中正确设置了八卦协议 (core.peer.gossip)。

peer:
    gossip:
        bootstrap: 127.0.0.1:7051
        externalEndpoint: 127.0.0.1:7051
        useLeaderElection: true
        orgLeader: false

这应该可以解决问题。