#docker #hyperledger-fabric #hyperledger #hyperledger-chaincode #hyperledger-fabric-ca
#докер #hyperledger-ткань #hyperledger #hyperledger-цепной код #hyperledger-ткань-ca
Вопрос:
Доброго вам дня!
Я делаю некоторые довольно расширенные возможности работы с Hyperledger ткань настройки сети, используя Kubernetes и куча кастомных скриптов-каждое с командами вдохновленный fabric-samples
—для выполнения каждого этапа chaincode упаковки и установки, и я отладил проблему, я столкнулся относительно переключение существующего проекта ФИП от GO chaincode для ТС в энной степени (пробовал всякие тоже), и я озадачен, почему это не работает…
У меня есть много контекста и выходных данных, которые я могу предоставить, однако в двух словах:
- цепной код упаковывает, устанавливает, утверждает и фиксирует 100% успешно во всех трех моих одноранговых организациях (org1, org2, org3).
- все
peer lifecycle chaincode lt;querygt;
команды возвращают успешные результаты (установлены, одобрены, зафиксированы) - каждая команда, которой может быть передан
--init-required
флаг, имеет его, иinvoke
команда использует флаг--isInit
Однако при попытке вызвать он выдает ошибку (измененные выходные данные для конкретной среды).:
make sure the chaincode lt;cc_namegt; has been successfully defined on channel lt;channel_idgt; and try again: chaincode definition for 'lt;cc_namegt;' exists, but chaincode is not installed
Между тем, если я запрошу зафиксированный цепной код (работает на всех 3 организациях):
peer lifecycle chaincode querycommitted -C ${CHANNEL_ID} -n ${CC_NAME} gt;amp;log.txt cat log.txt
Выходы:
Committed chaincode definition for chaincode 'lt;cc_namegt;' on channel 'lt;channel_idgt;' Version: 1.0, Sequence: 1, Endorsement Plugin: escc, Validation Plugin: vscc, Approvals: [Org1MSP: true, Org2MSP: true, Org3MSP: true]
Кроме того, если я побегу peer lifecycle chaincode queryinstalled
:
========================= Querying installed chaincode inside Docker container [admin] for Organization org1... Installed chaincodes on peer: Package ID: lt;package_idgt;, Label: lt;labelgt; Query installed successful on peer0.org1 on channel allorgs [via admin]. ========================= Querying installed chaincode inside Docker container [admin] for Organization org2... Installed chaincodes on peer: Package ID: lt;package_idgt;, Label: lt;labelgt; Query installed successful on peer0.org2 on channel allorgs [via admin]. ========================= Querying installed chaincode inside Docker container [admin] for Organization org3... Installed chaincodes on peer: Package ID: lt;package_idgt;, Label: lt;labelgt; Query installed successful on peer0.org3 on channel allorgs [via admin]. =========================
To all intents and purposes, this is doing everything I have seen it do in the Go examples and should be considered installed, I’m not sure what else to try at this stage. I’ve had it configured where the package IDs generated on each org are different, but currently they all install the same packaged chaincode so all of those lt;package_idgt; entries match.
Finally, just to avoid wasting any time, this is the output for peer lifecycle chaincode queryapproved ...
:
========================= Querying approved chaincode inside Docker container [admin] for Organization org1... Approved chaincode definition for chaincode 'lt;cc_namegt;' on channel 'lt;channel_idgt;': sequence: 1, version: 1.0, init-required: true, package-id: lt;package_idgt;, endorsement plugin: escc, validation plugin: vscc Query approved successful on peer0.org1 on channel lt;channel_idgt; [via admin]. ========================= Querying approved chaincode inside Docker container [admin] for Organization org2... Approved chaincode definition for chaincode 'lt;cc_namegt;' on channel 'lt;channel_idgt;': sequence: 1, version: 1.0, init-required: true, package-id: lt;package_idgt;, endorsement plugin: escc, validation plugin: vscc Query approved successful on peer0.org2 on channel lt;channel_idgt; [via admin]. ========================= Querying approved chaincode inside Docker container [admin] for Organization org3... Approved chaincode definition for chaincode 'lt;cc_namegt;' on channel 'lt;channel_idgt;': sequence: 1, version: 1.0, init-required: true, package-id: lt;package_idgt;, endorsement plugin: escc, validation plugin: vscc Query approved successful on peer0.org3 on channel lt;channel_idgt; [via admin]. =========================
Возможно ли, что эта ошибка происходит по какой-то другой неясной причине, такой как сбой кода цепочки… или? Все предложения приветствуются. Я попытался спросить в чате Hyperledger, но там пока никто не ответил.
Заранее спасибо, Алекс
Ответ №1:
Я смутно припоминаю, что у меня была похожая проблема, и вам нужно убедиться, что идентификаторы пакетов и этикетки совпадают. Посмотрите на своих коллег, где установлен пакет цепного кода. Если вы используете стандартные тестовые образы docker, вы можете выполнить их и посмотреть в dir /var/hyperledger/production/lifecycle/chaincodes/
Например, мой идентификатор пакета- basic_1.0:db124ba32ae478421c66bb26fcd151326ae4ce5fa01e198a7ad9415ce31aa8c4
это имя basic
моего сетевого кода, а версия- 1.0
при создании определения сетевого кода
мой установленный цепной код
/var/hyperledger/production/lifecycle/chaincodes # ls basic_1.0.db124ba32ae478421c66bb26fcd151326ae4ce5fa01e198a7ad9415ce31aa8c4.tar.gz
мои метаданные упакованного цепного кода являются
{"path":"../../chaincode/node","type":"node","label":"basic_1.0"}
Убедитесь, что все соответствует правильно (метка представляет собой объединение имени и версии)
Комментарии:
1. интересно, спасибо. Это не сразу очевидная вещь (я не думаю, что где-либо читал об этом) и хороший потенциальный кандидат на исправление для некоторых людей (примите мой голос!)… однако мои уже установлены одинаково
![]()
2. Все должно быть точно выровнено, 1 файл присутствует на одноранговом узле, 2 у него правильное имя файла, 3 свойство метки метаданных в этом пакете правильное. Вы хотите сказать, что все это верно в вашем случае для всех ваших сверстников ?
3. это не связано с проблемой именования, однако позвольте мне проверить другую часть, о которой вы упомянули, потому что я явно не пытался перейти в этот каталог! Я скоро доложу, спасибо
4. да, файл хранится на моем одноранговом компьютере в этом каталоге для всех трех организаций… Я тоже попробую посмотреть метаданные сейчас
5. путь может быть отвлекающим маневром здесь, так как я думаю, что он игнорируется для кода цепочки узлов