1

我得到了这个我相信很常见的错误"..LedgerError - ResourceNotFound: ledger: resource not found" .

为了简单起见,这就是我所拥有的:

  1. 尝试简单的链码,给定的chaincode_example02.go代码

  2. 关闭安全性,因此没有 CA(CORE_SECURITY_ENABLED=false CORE_SECURITY_PRIVACY=falss)

  3. 仅 1 个 peer 节点(使用 0.5 版本),它是一个 peer docker 镜像

  4. 在开发模式下运行

这就是我在开发模式下部署代码的方式,请验证 cli 是否正确:

CORE_CHAINCODE_ID_NAME=mycc CORE_PEER_ADDRESS=0.0.0.0:30303 ./chaincode_example02 

它显示

'Received REGISTERED, ready for invocations'

现在尝试查询它,请验证此 cli 是否正确:

peer chaincode query -n mycc -c '{"Function": "query", "Args": ["b"]}'

但返回的错误是:

Error: Error querying chaincode: rpc error: code = 2 desc = "Error:Failed to launch chaincode spec(Could not get deployment transaction for chaincode_example02 - LedgerError - ResourceNotFound: ledger: resource not found)"

任何想法?我检查了下的所有日志,/var但没有发现任何有用的信息,还检查/var/hyperledger并确实在/var/hyperledger/production/db.

这个试验看起来很简单,但意外地出错了。

..那么我应该如何调试呢?

4

1 回答 1

0

以下命令,

CORE_CHAINCODE_ID_NAME=mycc CORE_PEER_ADDRESS=0.0.0.0:30303 ./chaincode_example02 

不是deploy链码,它只是启动并向验证对等方注册链码。

注册后,您需要先注册,deploy然后再invoke注册query

如此处所述,

首先,向验证节点发送一次链码部署交易。CLI 使用 core.yaml 文件中定义的属性连接到验证对等体。注意:部署事务通常需要一个路径参数来定位、构建和部署链代码。但是,由于这些指令特定于本地开发模式,并且链代码是手动部署的,因此使用 name 参数代替。

peer chaincode deploy -n mycc -c '{"Function":"init", "Args": ["a","100", "b", "200"]}'

部署后,您可以根据需要多次调用它,然后query调用事务,

invoke,

peer chaincode invoke -l golang -n mycc -c '{"Function": "invoke", "Args": ["a", "b", "10"]}'

并且到query,

peer chaincode query -l golang -n mycc -c '{"Function": "query", "Args": ["b"]}'

还要确保您peer在一个终端中运行,在第二个终端中运行链代码,同时从第三个终端部署、调用和查询事务。

于 2016-09-28T01:03:20.523 回答