#hyperledger-fabric #hyperledger #hyperledger-chaincode
#hyperledger-fabric #hyperledger #hyperledger-chaincode
Вопрос:
Я пытаюсь установить и создать экземпляр chaincode в сети hyperledger fabric, настроенной мной. Я написал код цепочки в node.js и он отлично устанавливается из bash контейнера cli. Но когда я пытаюсь создать экземпляр кода цепочки, он выдает ошибку после 5 минут ожидания. Когда я проверяю журнал недолговечного контейнера chaincode, который вышел через несколько секунд, я вижу только одну строку: ошибка npm! отсутствует скрипт: start.
Когда я впервые получил эту ошибку, я не включил сценарий запуска в package.json и сразу понял свою ошибку. Я включил сценарий запуска в package.json, но я все еще получаю эту ошибку после нескольких попыток. Я несколько раз перезапускал сеть и также удалял тома docker.
Почему эта ошибка и как ее устранить?
Вот установка и создание экземпляра (с ошибкой):
$ docker exec -it cli bash
root@2332c1945850:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode install -n kyc -v 1.0 -p /opt/gopath/src/github.com/chaincode/ -l node
2019-04-23 19:42:50.134 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc
2019-04-23 19:42:50.134 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc
2019-04-23 19:42:50.784 UTC [chaincodeCmd] install -> INFO 003 Installed remotely response:<status:200 payload:"OK" >
root@2332c1945850:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode instantiate -o orderer.kyc-example.com:7050 -C mychannel -n kyc -v 1.0 -c '{"Args":["init"]}' -P "OR ('BanksMSP.peer','Customer-portalMSP.peer')"
2019-04-23 19:43:11.083 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc
2019-04-23 19:43:11.083 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc
Error: could not assemble transaction, err proposal response was not successful, error code 500, msg timeout expired while starting chaincode kyc:1.0 for transaction
``````````````
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a7eca3bf67c5 dev-peer0.banks.kyc-example.com-kyc-1.0-85cfdbbf05d137aa76cf24ca528689e8342322e809595bfd41c384bd90f135f5 "/bin/sh -c 'cd /usr…" 6 seconds ago Exited (1) 3 seconds ago
Here's the log of this short lived chaincode container:
$ docker logs a7eca3bf67c5
npm ERR! missing script: start
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2019-04-23T19_43_13_385Z-debug.log
````````````
Here's my package.json:
{
"name": "kyc",
"version": "1.0.0",
"description": "kyc chaincode in node",
"main": "kyc.js",
"dependencies": {
"fabric-shim": "~1.4.0"
},
"devDependencies": {},
"scripts": {
"start": "node kyc.js",
"test": "echo "Error: no test specified" amp;amp; exit 1"
},
"author": "",
"license": "ISC"
}
``````````````
I expect it to not give this error as start script has been provided in package.json
Комментарии:
1. Вы уверены, что пути к томуdocker указаны правильно? Возможно, он ищет другой package.json.
2. Вы также изменили номер версии на 1.0.1 и установили эту новую версию на одноранговый сервер ? затем вы должны создать экземпляр новой версии.
3. @NurullahMacun Даже я подозревал это, но пути к томуdocker верны для контейнера cli, который используется для установки и создания экземпляра. Я думаю, что это неправильно для этого недолговечного контейнера с цепным кодом. В любом случае, чтобы проверить?
4. @david_k Большое вам спасибо! Это сделало свое дело. Можете ли вы объяснить, как помогло изменение номера версии.
5. Если вы используете одно и то же имя цепного кода и номер версии, то при наличии изображений цепного кода с таким же именем и номером версии их можно использовать вместо создания нового из нового кода. Самый простой подход — всегда увеличивать номер версии, когда вы планируете установить новую версию и создать экземпляр или обновить до этой новой кодовой базы. Вам также следует периодически обращать внимание на удаление старых изображений цепного кода.