如何调试chaincode? LedgerError - ResourceNotFound

时间:2016-09-27 16:56:11

标签: blockchain hyperledger hyperledger-fabric

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

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

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

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

  3. 仅限1个对等节点(使用0.5版本),它是对等的docker镜像

  4. 以开发模式运行

  5. 这是我在开发模式下部署代码的方法,请确认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下看到了一些更新。

    这个试验看起来很顺利,但却出错了。

    ..那我该如何调试呢?

1 个答案:

答案 0 :(得分:0)

以下命令

CORE_CHAINCODE_ID_NAME=mycc CORE_PEER_ADDRESS=0.0.0.0:30303 ./chaincode_example02 

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

注册后,您需要deploy,然后invoke才能query

如上所述here

  

首先,只发送一次链码部署事务   验证同伴。 CLI使用。连接到验证对等体   core.yaml文件中定义的属性。注意:部署事务   通常需要路径参数来定位,构建和部署   chaincode。但是,因为这些说明特定于本地   开发模式和手动部署链码,名称   而是使用参数。

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,在第二个终端中运行链代码,同时部署,调用和查询第三个终端中的事务。