Структура Hyper Ledge: политика одобрения не отражает

#hyperledger-fabric #hyperledger-chaincode

#hyperledger-fabric #hyperledger-цепной код

Вопрос:

У меня есть настройка из трех организаций, и я установил цепной код на всех трех одноранговых узлах организации с политикой одобрения OutOf(2, 'Org1MSP.member', 'Org2MSP.member', 'Org3MSP.member') . Цепной код, установленный на ORG2, отличается от ORG1 и ORG3, поскольку он выдает ответ с другим значением, чем цепной код ORG1 и ORG3. Один из атрибутов ответа жестко запрограммирован в контракте ORG2.

Теперь, учитывая вышеуказанную политику и настройки, я бы предположил, что ответ ORG2 отличается от ответа ORG1 и ORG3, а ответы ORG1 и ORG3 идентичны, тем не менее транзакция должна быть успешной, поскольку 2 из трех удовлетворены. Но при отправке транзакции я получаю сообщение об ошибке ниже. Он отлично работает, когда я устанавливаю правильный цепной код на ORG2. Может кто-нибудь, пожалуйста, помочь указать, что я делаю не так. Для цепного кода и приложения я использую java sdk. Пожалуйста, дайте мне знать, если вам нужны какие-либо конкретные детали.

Ошибка: ответы на предложения содержат 2 несовместимые группы с 0, которые являются недопустимыми. Ожидается, что все они будут согласованы, и ни один из них не будет недействительным

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

1. Можете ли вы дать мне информацию о цепном коде? Являются ли цепные коды между реальными организациями одинаковыми?

2. @myeongkilkim Спасибо за ваш ответ. Я нашел свою ошибку. Я установил значение обнаружения false в коде своего клиентского приложения. Из-за чего он терпел неудачу. Как только я включил его, он работал нормально, как и ожидалось. Еще раз спасибо, что обратились за помощью. Отвечаю на ваш вопрос. Консорциум состоит из трех организаций, 2 имеют точно такой же цепной код, а у одной есть цепной код, который дает другой результат, хотя интерфейс контракта тот же. Это я сделал намеренно, чтобы проверить, работает ли политика одобрения, как описано.

Ответ №1:

Я нашел свою ошибку. Я установил значение обнаружения false в коде своего клиентского приложения. Из-за чего он терпел неудачу. Как только я включил его (установил значение true), он работал нормально, как и ожидалось. Вы можете использовать приведенную ниже команду обнаружения, чтобы проверить политики одобрения, применимые к установленному цепному коду.

 discover --configFile discovery/config.yaml endorsers --channel mychannel  --server peer0.org3.example.com:11051 --chaincode papercontract