#hyperledger-fabric #hyperledger-chaincode #chaincode
#hyperledger-fabric #hyperledger-цепной код #цепной код
Вопрос:
Я работаю над hyperledger fabric v2.0
и после того, как я настроил сеть, создал каналы, я не могу установить код цепочки.
Команда Linux: ./network.sh deployCC
не работала. Итак, он говорит, что я должен использовать старый допустимый пример вызова: ./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go
Если я использую эту команду, я получаю следующую ошибку:
Error: failed to normalize chaincode path: 'go list' failed with: go: inconsistent vendoring in /home/akosua/fabric-samples/asset-transfer-basic/chaincode-go:
github.com/golang/protobuf@v1.3.2: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
github.com/hyperledger/fabric-chaincode-go@v0.0.0-20200424173110-d7076418f212: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
github.com/hyperledger/fabric-contract-api-go@v1.1.0: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
github.com/hyperledger/fabric-protos-go@v0.0.0-20200424173316-dd554ba3746e: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
github.com/stretchr/testify@v1.5.1: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
run 'go mod vendor' to sync, or use -mod=mod or -mod=readonly to ignore the vendor directory: exit status 1
Chaincode packaging has failed
Deploying chaincode failed
Я обновил текущий golang (v1.15)
Спасибо, что помогли мне!
Ответ №1:
После того, как я воспроизвел вашу ситуацию, я решил ее с помощью приведенного ниже метода.
- Чтобы установить зависимости смарт-контрактов, выполните следующую команду
cd $GOPATH/src/github.com/hyperledger/fabric-samples
cd asset-transfer-basic/chaincode-go amp;amp;
GO111MODULE=on go mod vendor
- запустите
deployCC
команду вtest-network
cd test-network amp;amp;
./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go
[ПРАВИТЬ / ПРАВИТЬ код]
После проверки вашего ответа я снова воспроизвел вашу ситуацию. Я написал заказ таким, каким он был.
первое предположение
1-1. Я думал, что apt update вообще не имеет никакого эффекта, и это было решено путем удаления ранее неправильно созданного / установленного файла ./network.sh down
.
1-2. Поэтому после установки неправильного поставщика я искусственно выполнил и выполнил команду и выдал ту же ошибку.
1-3. Однако в ./network.sh down
команде поставщик не был очищен, а в команде up метод, предложенный в приведенном выше ответе, был выполнен в скрипте.
1-4. Ошибка не была устранена, и мне пришлось найти другую проблему.
Другое предположение
- При анализе
./network.sh down
скрипта было подтверждено, что том docker был очищен. - Предполагалось, что проблема возникла из-за того, что пакет, содержащий неправильного поставщика, остался на томе docker.
2-1. Как и в первоначальном предположении, deployCC
команда была выполнена на основе неправильного поставщика.
2-2. После возникновения той же ошибки сеть была отключена без очистки объема сети docker.
2-3. После замены кода цепочки на правильного поставщика, перезагрузки сети и выполнения deployCC
команды.
2-4. Произошла та же ошибка, и было подтверждено, что оставшийся объем имеет эффект.
2-5. Вся сеть была испарена с помощью -v
опции. Кроме того, все ненужные объемы были выпарены через docker volume prune
.
2-6. После этого сеть была перезагружена, и deployCC
команда была выполнена, и было подтверждено, что она работает нормально.
Другими словами, файл, связанный с предыдущим неправильным цепным кодом, остался в томе dokcer, и, похоже, он был разрешен, поскольку он был удален скриптом, который испаряет том ./network.sh down
вместе.
docker rm -f $(docker ps -aq) # This is a dangerous command because all containers are erased.
docker volume prune
Комментарии:
1. Большое вам спасибо @ myeonkil kim! Я действительно ценю вашу работу!
2. И спасибо также за изменение моего комментария. Итак, я попробовал ваши комментарии в 1., но, к сожалению, данные не могут быть найдены. Я думаю, что моя проблема связана с
go path
чем — то . Итак, я попытался настроить путь перехода с помощью следующей инструкции: [ссылка] medium.com/learn-go/go-path-explained-cab31a0d90b9 . После этого я проверил [ссылку] hyperledger-fabric.readthedocs.io/en/release-2.2 /… — но до сих пор я не мог найти никакого решения, которое сработало бы для моей проблемы :/3. Если вы правильно установили GOPATH, и если вы все сделали правильно, вам нужно будет проверить, следовали ли вы пути к каталогу $ GOPATH/src/github.com/hyperledger, созданному в приведенном выше ответе. Если проблема не решена, будет полезнее, если вы сообщите нам о дополнительной работе и проблемах.
4.Спасибо @myeongkil kim. по
$GOPATH/src/github.com/hyperledger
-прежнему не работает. Итак, что я сделал до сих пор: я полностью удалил golang и установил его снова с помощью:wget https://golang.org/dl/go1.14.2.linux-amd64.tar.gz sudo tar -xvf go1.14.2.linux-amd64.tar.gzsudo chown -R root:root ./go sudo mv go /usr/local
. И затем я продолжил эту инструкцию: [ссылка]hyperledger-fabric.readthedocs.io/en/release-2.2/… Package смарт — контракт .5. Все инструкции (см. Ссылку выше) выполнялись до тех пор, пока не был установлен пакет chaincode с помощью следующей команды
peer lifecycle chaincode install basic.tar.gz
. Я получил сообщение об ошибке:chaincode install failed with status: 500 - failed to invoke backing implementation of 'InstallChaincode' ....
. Я все еще пытаюсь решить эту проблему, пока не смогу развернуть цепной код, я думаю
Ответ №2:
Теперь я нашел свою ошибку / решение.
Сначала я снова проверил наличие обновлений: sudo apt update
Затем я выключил и поднял сеть:
./network.sh down
и чем открыть его снова с помощью ./network.sh up
После этого я мог продолжить без ошибок