Почему развертывание цепного кода в hyperledger не работает?

#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:

После того, как я воспроизвел вашу ситуацию, я решил ее с помощью приведенного ниже метода.

  1. Чтобы установить зависимости смарт-контрактов, выполните следующую команду
 cd $GOPATH/src/github.com/hyperledger/fabric-samples
cd asset-transfer-basic/chaincode-go amp;amp; 
GO111MODULE=on go mod vendor
 
  1. запустите 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

После этого я мог продолжить без ошибок