Chaincode ID генерируется в виде хэш-кода для нескольких параметров (путь к chaincode + аргументы + исходный код) , если вы видите в ответ на «развернуть» команду что-то вроде этого:
{“jsonrpc":"2.0","result":{"status":"OK","message":"8d803651564981858842409c6a5c3bf3f6ea69f90a6a7bfb672c2c8c3b6eb4c48105c5807e52f1a5ffdce0e86966688019a6c4013ffca524d5896e0b9ae201c6"}
Это означает, что ваш запрос на развертывание транзакции принимается. С этого момента Fabric попытается создать контейнер для вашего сетевого кода и запустить его в докере. В случае, если что-то пойдет не так, и контейнер не запущен, вы получите следующий ответ:
“LedgerError - ResourceNotFound: ledger: resource not found“ for all your commands.
В вашем примере вы пытаетесь развернуть Java chaincode в GO контейнере и в результате реакции является:
(INFO 002 Deploy result: type GOLANG chaincodeID:...)
Это происходит потому, что ткань не использует «язык» переменную для определения типа платформы (действительна для версии, которая была доступна 09/09/2016)
мне удалось развернуть Java Chai ncode используя следующий запрос 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
означает, что эта chaincode является 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"}
пожалуйста, вы можете добавить более подробную информацию? вы запускаете его в режиме «dev» или в обычном режиме? как вы запустили сверстников? какое имя вы предоставляете при запросе? –
также вам нужно предоставить '-l java', если вы развертываете его с помощью кода Java –
Да, я использовал -l java и -u jim, в обычном режиме. Когда -l java, init func возвращает цепочку кодов, но когда я использовал код цепи для проверки запроса, он показывает мне ошибку и никакого результата. когда я тестирую функцию func с кодом go src, я могу получить результат. – teddy