我得到了这个我相信非常常见的错误"..LedgerError - ResourceNotFound: ledger: resource not found" .
为了简单起见,这就是我所拥有的:
尝试使用简单的链码,给定的chaincode_example02.go
代码
关闭了安全性,因此没有CA (CORE_SECURITY_ENABLED=false CORE_SECURITY_PRIVACY=falss)
仅限1个对等节点(使用0.5版本),它是对等的docker镜像
以开发模式运行
这是我在开发模式下部署代码的方法,请确认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
下看到了一些更新。
这个试验看起来很顺利,但却出错了。
..那我该如何调试呢?
答案 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
,在第二个终端中运行链代码,同时部署,调用和查询第三个终端中的事务。