如果您在“部署”命令的响应中看到如下内容,则链码 ID 会生成为多个参数的哈希码(链码的路径 + 参数 + 源代码):
{“jsonrpc":"2.0","result":{"status":"OK","message":"8d803651564981858842409c6a5c3bf3f6ea69f90a6a7bfb672c2c8c3b6eb4c48105c5807e52f1a5ffdce0e86966688019a6c4013ffca524d5896e0b9ae201c6"}
这意味着您部署事务的请求被接受。从这一刻起,Fabric 将尝试为您的链代码创建一个容器并在 docker 中启动它。如果出现问题并且容器未启动,您将收到以下响应:
“LedgerError - ResourceNotFound: ledger: resource not found“ for all your commands.
在您的示例中,您尝试在 GO 容器中部署 Java 链代码,结果响应为:
(INFO 002 Deploy result: type GOLANG chaincodeID:...)
这是因为 Fabric 不使用“语言”变量来检测平台类型(适用于 2016 年 9 月 9 日可用的版本)
我设法使用以下 REST 请求部署了 Java 链代码:
curl -XPOST -d ‘{"jsonrpc": "2.0", "method": "deploy", "params": {"type": 4,"chaincodeID": {"path": "/opt/gopath/src/github.com/hyperledger/fabric/examples/chaincode/java/SimpleSample","language": "java"}, "ctorMsg": { "args": ["init", "a", "100", "b", "1000"] }},"id": 0}' http://localhost:7050/chaincode
type:4
意味着这个链码是 Java 并且应该使用适当的容器。(对于 GO,我们应该使用type:1
)
请记住,Java 当前security.enabled=false
仅适用于security.enabled=true
您将看到以下错误消息:
[dockercontroller] deployImage -> ERRO 095 Error building images: API error (500): {"message":"The Dockerfile (Dockerfile) cannot be empty"}