Ошибка в коде цепи Java
Я использовал развертывание однорангового цепного кода для запуска примера go src, получил правильный результат, затем попробовал пример java src, введите описание изображения здесь
я получил цепной код, но когда я использовал этот цепной код для запроса, он показал мне:
Error: Error querying chaincode: rpc error: code = 2 desc = "Error:Failed to launch chaincode spec(Could not get deployment transaction
a3a350ff98660bcade4570acd507d0b380f374ea9399194b39e0301135849feb0732 - LedgerError - ResourceNotFound: ledger: resource not found)"
я использую докер-ящик для инструментов, чтобы создать среду для ткани hyperledger.
1 ответ
Идентификатор цепочки генерируется как хеш-код для нескольких параметров (путь к цепочке + аргументы + исходный код), если вы видите в ответе на команду "deploy" что-то вроде этого:
{“jsonrpc":"2.0","result":{"status":"OK","message":"8d803651564981858842409c6a5c3bf3f6ea69f90a6a7bfb672c2c8c3b6eb4c48105c5807e52f1a5ffdce0e86966688019a6c4013ffca524d5896e0b9ae201c6"}
Это означает, что ваш запрос на развертывание транзакции принят. С этого момента Fabric попытается создать контейнер для вашего цепного кода и запустить его в Docker. Если что-то пойдет не так и контейнер не будет запущен, вы получите следующий ответ:
“LedgerError - ResourceNotFound: ledger: resource not found“ for all your commands.
В вашем примере вы пытаетесь развернуть цепной код Java в контейнере GO, и в результате вы получите следующий ответ:
(INFO 002 Deploy result: type GOLANG chaincodeID:...)
Это происходит потому, что Fabric не использует переменную "language" для определения типа платформы (действительно для версии, которая была доступна 09.09.2016)
Мне удалось развернуть цепной код Java с помощью следующего запроса REST:
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"}