Контейнер док-станции Chaincode не создан в структуре Hyperledger 2.2

Я создал настройку Hyperledger 2.2 на своем компьютере, используя тестовую сеть, выполнив следующий шаг.

  1. используется команда ниже, в каталоге /fabric-samples/test-network и выше в контейнере org1, org2 и orderer относительно их ЦС.
./network.sh up createChannel -ca -c mychannel -s couchdb -i 2.2.0
  1. Разверните чейнкод на mychannel с помощью
./network.sh deployCC -ccn basic1 -ccp ../asset-transfer-basic/chaincode-go/ -ccl go
  1. Создал новый канал как channel1 и сначала присоединился к этому каналу только org1
  2. Добавлена ​​новая организация как org3 и присоединена к channel1 с помощью команды
./addOrg3.sh up -ca -c channel1 -s couchdb -i 2.2.0

После этого я хочу развернуть цепной код на channel1, однако я, когда я использовал команду для развертывания чейнкода, попытался развернуть цепной код на org1 и org2, что привело к сбою, пожалуйста, кто-нибудь предложит мне, как развернуть цепной код на channel1 только на org1 и org3, которые присоединились к channel1.

./network.sh deployCC -c channel1 -ccn basic1 -ccp ../asset-transfer-basic/chaincode-go/ -ccl go

person Abhirock    schedule 06.01.2021    source источник


Ответы (2)


./test-network/network.sh deployCC ... звонит ./test-network/scripts/deployCC.sh

В этом deployCC.sh жестко запрограммировано развертывание чейнкода в org1 и org2.

Он работает, меняя с org1 & org2 на org1 & org3

  • ./тестовая сеть/скрипты/deployCC.sh
...


## package the chaincode
packageChaincode

## Install chaincode on peer0.org1 and peer0.org3
infoln "Installing chaincode on peer0.org1..."
installChaincode 1
infoln "Install chaincode on peer0.org3..."
installChaincode 3

## query whether the chaincode is installed
queryInstalled 1

## approve the definition for org1
approveForMyOrg 1

## check whether the chaincode definition is ready to be committed
## expect org1 to have approved and org3 not to
checkCommitReadiness 1 "\"Org1MSP\": true" "\"Org3MSP\": false"
checkCommitReadiness 3 "\"Org1MSP\": true" "\"Org3MSP\": false"

## now approve also for org3
approveForMyOrg 3

## check whether the chaincode definition is ready to be committed
## expect them both to have approved
checkCommitReadiness 1 "\"Org1MSP\": true" "\"Org3MSP\": true"
checkCommitReadiness 3 "\"Org1MSP\": true" "\"Org3MSP\": true"

## now that we know for sure both orgs have approved, commit the definition
commitChaincodeDefinition 1 3

## query on both orgs to see that the definition committed successfully
queryCommitted 1
queryCommitted 3

## Invoke the chaincode - this does require that the chaincode have the 'initLedger'
## method defined
if [ "$CC_INIT_FCN" = "NA" ]; then
  infoln "Chaincode initialization is not required"
else
  chaincodeInvokeInit 1 3
fi

...
person myeongkil kim    schedule 06.01.2021
comment
Я бы не рекомендовал вносить слишком много подобных изменений в тестовые сетевые скрипты, так как это не является их назначением: «Сеть предназначена только для использования в качестве инструмента для обучения и тестирования. Его не следует использовать в качестве шаблона для развертывания производственной сети». Следующие шаги тестовой сети должны дать вам достаточно информации для такого сценария hyperledger-fabric .readthedocs.io/en/latest/ - person James Taylor; 07.01.2021
comment
@James Taylor Используя шаблон тестовой сети в производстве, я думаю, что мне тоже не следует этого делать. Тем не менее, я думаю, что рекомендуется изучить концепцию во время тестирования тестового сетевого сценария, изменив его. В частности, то, что я изменил выше, — это просто 7 строк без учета комментариев. Если кто-то хочет научиться развертывать чейнкод для новой организации, он может обратиться к приведенному выше, чтобы быстро сравнить, что следует учитывать. - person myeongkil kim; 07.01.2021
comment
По моему опыту, выполняя обучающие программы, я многому научился, изменяя контент по желанию и выполняя его. Если вам нужно только следовать сценарию гида, как вы сказали, я думаю, что это скорее неправильное отношение. - person myeongkil kim; 07.01.2021
comment
Экспериментирование со сценариями в учебном пособии — хороший способ узнать, что происходит, однако стоит подчеркнуть, что слишком много изменений для тестирования сетевых сценариев имеет свои недостатки. Конечно, нет ничего плохого в том, чтобы вносить небольшие изменения в сценарии, как это было предложено, но они намеренно скрывают большую сложность, а эксперименты с различным членством в каналах — идеальный момент для перехода к следующим шагам в руководстве, чтобы узнать, что происходит под обложками. . - person James Taylor; 07.01.2021
comment
@ Джеймс Тейлор, я еще не понял вашего комментария. После вопроса я объяснил, почему и ответил, чтобы вести себя так, как я хотел. Я думаю, что странно отвечать на вопрос учебника, предполагая, что это производство. Нужно ли указывать какие-либо проблемы, которые могут возникнуть из-за такого поведения? Пожалуйста, скажите мне, какую именно часть добавить, и я отразим это. Я хочу разрешить ваше отрицательное голосование. - person myeongkil kim; 07.01.2021
comment
Было бы полезно, если бы в ответе был какой-то контекст, а не просто изменения сценария. Я попытался указать это в своем ответе и комментариях выше, но, по сути, я бы не рекомендовал заходить слишком далеко с редактированием тестовых сетевых сценариев без понимания команд, которые они выполняют. Ожидание, что deployCC будет работать в этом сценарии, вероятно, является признаком того, что учебник нуждается в дополнительной доработке, о чем я сообщу. - person James Taylor; 08.01.2021
comment
Я прочитал ваши ответы и понял ваши намерения. Но я думаю, что у вас есть слабая причина продолжать то, что вы сказали. Если бы он спросил о процессе развертывания чейнкода, я бы подробно ответил. Однако вопрос вопрошающего заключался в том, что команда deployCC не работала для org3 и лишь минимально отвечала возможностям и модификациям deployCC. - person myeongkil kim; 09.01.2021
comment
в зависимости от вопроса, я думаю, ответ может быть исчерпывающим. Но can be comprehensive отличается от must be comprehensive. Я знаю, что вы имеете в виду, но я думаю, что ответ, который я написал, достаточно хорош, я не планирую его пересматривать и не думаю, что смогу решить ваш отрицательный голос. прости - person myeongkil kim; 09.01.2021
comment
Спрашивающий и отвечающий считают идеальным предоставить друг другу более точный минимальный код. Я предоставил минимальный код. Я думаю, что спрашивающий должен изучить, как развернуть чейнкод. Кроме того, если ему любопытно или возникает проблема, я думаю, он может решить ее с помощью нового вопроса. Конечно, я думаю, что может быть полезно дать ему соответствующую информацию, но, как я уже сказал выше, она не обязательно должна быть всеобъемлющей. Я думаю, что в предоставлении информации есть преимущества, но есть и недостатки. Я думаю, что, предоставив ему довольно фрагментарную информацию, я смогу помочь еще больше. - person myeongkil kim; 09.01.2021

Из документации по тестовой сети подкоманда deployCC установит актив- передать (базовый) чейнкод на peer0.org1.example.com и peer0.org2.example.com, а затем развернуть чейнкод на канале, указанном с помощью флага канала (или mychannel, если канал не указан).

Вы по-прежнему сможете развернуть свой цепной код, но вам нужно будет напрямую использовать команду узла Fabric вместо тестовых сетевых сценариев. Этот процесс описан в руководстве по Развертывание смарт-контракта в канале. более подробная информация содержится в документации по жизненному циклу цепочек Fabric.

person James Taylor    schedule 06.01.2021