Развертывание кода цепочки в Hyperledger Fabric не работает

#hyperledger-fabric #hyperledger #hyperledger-chaincode #chaincode

Вопрос:

Я попытался развернуть пользовательский цепной код в своей тестовой сети hyperledger. Поэтому я использовал учебник из https://www.youtube.com/watch?v=KFf1qzYP-bAamp;t=1380s и https://hyperledger-fabric.readthedocs.io/en/release-2.3/deploy_chaincode.html. Следуя учебным пособиям, сначала я думал, что процесс прошел успешно, но в конце концов я столкнулся с ошибками. Вот шаги, которые я сделал:

 peer lifecycle chaincode install newchaincode.tar.gz
 

И получил:

2021-06-20 16:41:18.750 UTC [cli.lifecycle.chaincode] Предложение об установке -> ИНФОРМАЦИЯ 001 Установлена удаленно: ответ:><статус:200 payload:»nLnewchaincode:a52b26224459812b50d72da7fc0644ff2b2c540bd656bbf457a235bca15b3a572213newchaincode» > 2021-06-20 16:41:18.750 UTC [cli.lifecycle.chaincode] Предложение об установке -<статус:200 payload:»nLnewchaincode:a52b26224459812b50d72da7fc0644ff2b2c540bd656bbf457a235bca15b3a572213newchaincode» >> ИНФОРМАЦИЯ 002 Код цепочки идентификатор пакета: новый код цепочки:a52b26224459812b50d72da7fc0644ff2b2c540bd656bbf457a235bca15b3a57

Также проверка того, был ли установлен цепной код, отработана:

 peer lifecycle chaincode queryinstalled
 

Идентификатор пакета: новый код:a52b26224459812b50d72da7fc0644ff2b2c540bd656bbf457a235bca15b3a57, Этикетка: новый код

После этого я экспортировал CC_Package_ID , а также установил форму утверждения для обеих организаций:

 peer lifecycle chaincode approveformyorg -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --channelID newchannel --name newchaincode --version 1.0 --package-id $CC_PACKAGE_ID --sequence 1 --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
 

ClientWait -> ИНФОРМАЦИЯ 001 txid [e2dfcfc6b5218423878132af6f34ebbef25cd793b258581900b21e1fcca98b63] зафиксирован со статусом (ДЕЙСТВИТЕЛЕН) на локальном хосте:7051

Затем проверка на готовность:

 peer lifecycle chaincode checkcommitreadiness --channelID newchannel --name newchaincode --version 1.0 --sequence 1 --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem --output json
 

{
«approvals»: {
«Org1MSP»: true,
«Org2MSP»: true
}
}

Then I committed my chaincode:

 peer lifecycle chaincode commit -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --channelID newchannel --name newchaincode --version 1.0 --sequence 1 --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem --peerAddresses localhost:7051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses localhost:9051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
 

2021-06-20 16:48:24.990 UTC [chaincodeCmd] ClientWait -> ИНФОРМАЦИЯ 001 txid [9336b174e344fb5fd977778e7365da0841b3285eff8c0fa13f6d3f03248442e5] зафиксирован со статусом (ДЕЙСТВИТЕЛЕН) на локальном хосте:9051
2021-06-20 16:48:24.993 UTC [chaincodeCmd] ClientWait -> ИНФОРМАЦИЯ 002 txid [9336b174e344fb5fd977778e7365da0841b3285eff8c0fa13f6d3f03248442e5] зафиксирован со статусом (ДЕЙСТВИТЕЛЕН) на локальном хосте:7051

И, наконец, проверил, правильно ли я совершил:

 peer lifecycle chaincode querycommitted --channelID newchannel --name newchaincode --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
 

Зафиксированное определение цепного кода для цепного кода «новый цепной код» на канале «новый канал»:
Версия: 1.0, Последовательность: 1, Плагин одобрения: escc, Плагин проверки: vscc, Утверждения: [Org1MSP: верно, Org2MSP: верно]

Итак, я думал, что установка цепного кода прошла успешно, но когда я пытаюсь вызвать CC, я получил это:

Ошибка: ошибка подтверждения во время вызова. ответ: статус:500 сообщение:»убедитесь, что новый цепной код успешно определен на новом канале канала, и повторите попытку: новый цепной код не найден»

Кроме того, когда я звоню docker ps , цепной код не запускается.

Комментарии:

1. вы установили правильный идентификатор пакета??,ваш идентификатор пакета должен быть newchaincode:a52b26224459812b50d72da7fc0644ff2b2c540bd656bbf457a235bca15b3a57

2. Да, я это сделал, также я обновил цепной код и повторил процесс еще раз, но происходит то же самое.

3. Просто еще раз вызвал cc и взглянул на журнал докеров. Получил это: «не удалось зарегистрировать цепной код: контейнер вышел с 1»

4. проверьте журналы одноранговых узлов, чтобы узнать, был ли установлен контракт с ними. Из приведенного выше описания неясно, был ли контракт установлен на одноранговых узлах (т. е. правильно ли установлены эти параметры для целей установки). Вы можете использовать --peerAddresses с peer lifecycle chaincode install , но я этого не вижу и не знаю, используете ли вы или человек на видео переменные среды вместо этого?

5. Я думаю, вы имеете в виду «экспорт CORE_PEER_TLS_ENABLED=истинный экспорт CORE_PEER_LOCALMSPID=экспорт «Org1MSP» CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt экспорт CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp экспорт CORE_PEER_ADDRESS=локальный хост:7051′ верно? Для обеих организаций ORG1MSP и ORG2MSP я сделал это

Ответ №1:

@Leon Я наткнулся на ту же ошибку, что и вы, т. Е. Утверждения 1 и 2 организации верны.. и все же выдает ошибку одобрения.

Я добавил флаг инициализации и флаг политики конфиденциальности в форму утверждения однорангового кода жизненного цикла (1 и 2),проверку готовности однорангового кода жизненного цикла и фиксацию однорангового кода жизненного цикла

—init-требуется true

—политика подписи «И(«Одноранговый узел Org1MSP»,»одноранговый узел Org2MSP»)»

Кроме того, добавьте флаг ниже для вызова однорангового цепного кода

—исИнит