Ошибка цепного кода Java Hyperledger Fabric

Я использовал развертывание однорангового цепного кода для запуска примера 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)"

Я использую docker-toolbox, чтобы создать среду для ткани Hyperledger.


person teddy    schedule 09.09.2016    source источник
comment
не могли бы вы добавить больше деталей? вы запускаете его в dev режиме или в обычном режиме? как вы запустили одноранговый узел? какое имя вы указываете при запросе?   -  person Sufiyan Ghori    schedule 09.09.2016
comment
также вам необходимо предоставить -l java, если вы развертываете его с использованием кода Java   -  person Sufiyan Ghori    schedule 09.09.2016
comment
да, я использовал -l java и -u jim в нормальном режиме. когда -l java, функция инициализации возвращает цепной код, но когда я использовал цепной код для проверки запроса, он показывает мне ошибку и никакого результата. когда я тестирую функцию запроса с кодом go src, я могу получить результат.   -  person teddy    schedule 09.09.2016
comment
Также я меняю тестовый запрос, когда я использую init1 (функция, которой нет в демонстрационном примере), он также дает мне цепной код, это странно.   -  person teddy    schedule 09.09.2016
comment
не могли бы вы добавить весь код и все ошибки и все, что вы пробовали?   -  person Sufiyan Ghori    schedule 09.09.2016
comment
peer chaincode deploy -u jim -l java -p examples / chaincode / java / SimpleSample / src / main / java / example -c '{Function: init, Args: [a, 100, b, 200]}' результат Ok. затем запрос запроса: запрос цепного кода однорангового узла -l java -u jim -n (код цепочки с последнего шага) -c '{Функция: запрос, аргументы: [a]}' результат: Ошибка: ошибка запроса цепного кода: ошибка rpc: код = 2 desc = Ошибка: не удалось запустить спецификацию чейнкода (не удалось получить транзакцию развертывания для ..... LedgerError - ResourceNotFound: бухгалтерская книга: ресурс не найден)   -  person teddy    schedule 09.09.2016
comment
Я знаком с Java. поэтому я хочу использовать java. когда я тестирую пример go, все в порядке. я могу передать и запросить. но Java неверна. так что я покончил с окружающей средой. но я действительно не знаю, в чем дело. Я просто делаю, как мне говорит документ.   -  person teddy    schedule 09.09.2016


Ответы (1)


Идентификатор цепного кода создается как хэш-код для нескольких параметров (путь к цепному коду + аргументы + исходный код), если вы видите в ответе на команду «развертывание» что-то вроде этого:

{“jsonrpc":"2.0","result":{"status":"OK","message":"8d803651564981858842409c6a5c3bf3f6ea69f90a6a7bfb672c2c8c3b6eb4c48105c5807e52f1a5ffdce0e86966688019a6c4013ffca524d5896e0b9ae201c6"}

Это означает, что ваш запрос на развертывание транзакции принят. С этого момента Fabric попытается создать контейнер для вашего чейнкода и запустить его в докере. Если что-то пойдет не так и контейнер не запустится, вы получите следующий ответ:

“LedgerError - ResourceNotFound: ledger: resource not found“ for all your commands. 

В вашем примере вы пытаетесь развернуть цепной код Java в контейнере GO, и в результате вы получаете ответ:

(INFO 002 Deploy result: type GOLANG chaincodeID:...)

Это происходит потому, что Fabric не использует переменную «язык» для определения типа платформы (действительно для версии, которая была доступна 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"}
person Sergey Balashevich    schedule 09.09.2016
comment
Спасибо. Я пытаюсь выполнить запрос, который вы сказали, он показывает мне: ERRO 03e Ошибка построения изображений: Ошибка: изображение hyperledger / fabric-javaenv: x86_64- не найдено 01: 33: 12.533 [dockercontroller] deployImage - ›ERRO 03f Вывод изображения: Шаг 1: FROM hyperledger / fabric-javaenv: x86_64 - Получение репозитория docker.io/hyperledger/fabric-javaenv, но docker pull docker.io/hyperledger/fabric-javaenv - это практичность. - person teddy; 12.09.2016
comment
Возможно, ваша среда устарела. Можете ли вы попробовать получить последнюю версию на gerrit и перестроить сервисы peer и membersrvc? - person Sergey Balashevich; 12.09.2016