Общая инфраструктура в Hyperledger Fabric

Я проверял вариант использования, возможно ли совместно использовать одноранговые узлы, вызывать функции чейнкода и выполнять транзакции с разными MSP. Это вариант использования, когда общая среда потребуется для некоторых организаций, которые не хотят тратить деньги на инфраструктуру, но могут захотеть использовать сеть блокчейнов, управляемую сетевым оператором.

Например, сетевой оператор с MSP org1 создает сеть Hyperledger Fabric. org4 хочет присоединиться к сети, но без пиров. Контейнер ЦС будет для этого org4. Может ли идентификатор org4 вызывать транзакции на org1 одноранговых узлах? Я попробовал это на самом деле. Проверьте журналы остальных клиентов ниже:

[Service Discovery Turned On]
2021-04-02T04:19:27.643Z - debug: [Channel]: _getServiceEndpoints - start - org4
2021-04-02T04:19:27.643Z - debug: [Channel]: _getServiceEndpoints - Endorser mspid not matched, not added peer0.org1.com:7051 - org1
2021-04-02T04:19:27.643Z - debug: [Channel]: _getServiceEndpoints - Endorser mspid not matched, not added peer1.org1.com:7051 - org1
2021-04-02T04:19:27.643Z - debug: [Channel]: _getServiceEndpoints - Endorser mspid not matched, not added peer1.networkoperator.com:7051 - networkoperator
2021-04-02T04:19:27.643Z - debug: [Channel]: _getServiceEndpoints - Endorser mspid not matched, not added peer0.networkoperator.com:7051 - networkoperator
2021-04-02T04:19:27.643Z - debug: [Channel]: _getServiceEndpoints - Endorser mspid not matched, not added peer0.org2.com:7051 - org2
2021-04-02T04:19:27.643Z - debug: [Channel]: _getServiceEndpoints - Endorser mspid not matched, not added peer1.org2.com:7051 - org2
2021-04-02T04:19:27.643Z - debug: [Channel]: _getServiceEndpoints - Endorser mspid not matched, not added peer0.org3.com:7051 - org3
2021-04-02T04:19:27.643Z - debug: [Channel]: _getServiceEndpoints - Endorser mspid not matched, not added peer1.org3.com:7051 - org3
2021-04-02T04:19:27.643Z - debug: [RoundRobinQueryHandler]: constructor: peers=[]

Приведенные выше журналы показывают, что rest-client пытается сопоставить идентификатор MSP с одноранговыми узлами.

Журналы без обнаружения службы:

[Service Discovery Turned Off]
2021-04-02T04:39:11.091Z - debug: [Channel]: _getServiceEndpoints - start - org4
2021-04-02T04:39:11.091Z - debug: [Channel]: _getServiceEndpoints - Endorser mspid not matched, not added peer0.org1.com - org1
2021-04-02T04:39:11.091Z - debug: [Channel]: _getServiceEndpoints - Endorser mspid not matched, not added peer1.org1.com - org1
2021-04-02T04:39:11.091Z - debug: [RoundRobinQueryHandler]: constructor: peers=[]

Как правило, эти организации присоединяются к общей инфраструктуре, и когда они будут готовы использовать свою собственную инфраструктуру, они будут мигрировать на нее. Тем временем они будут вызывать функции чейнкода через свои личности.


person Akshay Sood    schedule 02.04.2021    source источник
comment
Организации, у которых нет пиров, определенно могут вызывать транзакции, если они добавлены в соответствующие каналы. Вы добавили org4 ко всем соответствующим каналам?   -  person Gari Singh    schedule 02.04.2021
comment
Да, @ГариСингх. Я добавил эту организацию на канал. Я использую HLF 2.3.1   -  person Akshay Sood    schedule 02.04.2021
comment
Можете ли вы опубликовать больше вашего клиентского кода? Не уверен, какие именно функции вы вызываете   -  person Gari Singh    schedule 03.04.2021
comment
@GariSingh Я проверил журналы одноранговых узлов 2021-04-04 15:24:10.447 UTC [policies] SignatureSetToValidIdentities -> WARN 65875 invalid identity: certificate subject=CN=admin,OU=client serialnumber=529341260981649280325273063095564239165763549342 error="the supplied identity is not valid: x509: certificate signed by unknown authority"   -  person Akshay Sood    schedule 04.04.2021
comment
Идентификация org4 отправляет транзакцию одноранговым узлам org1, и эти одноранговые узлы выдают указанное выше предупреждение.   -  person Akshay Sood    schedule 04.04.2021
comment
Код все еще пытается использовать обнаружение службы, которое поддерживает только клиентов, которые находятся в той же организации, что и одноранговый узел (по умолчанию это администраторы, но также могут быть и члены). Поэтому, если вы попытаетесь использовать клиент org4 с обнаружением службы, это не удастся. Вам понадобится профиль подключения, который не использует обнаружение и содержит список одобряющих пиров.   -  person Gari Singh    schedule 04.04.2021
comment
Я понял. Я отключил обнаружение службы, добавил одноранговые узлы org1 в список целевых одноранговых узлов, удалил стратегию запросов, и все заработало. Спасибо   -  person Akshay Sood    schedule 05.04.2021


Ответы (2)


Fabric-sdk пытался сопоставить идентификатор MSP инициатора с идентификатором MSP доступного индоссанта, что привело к сбою всей транзакции, поскольку нет однорангового узла, соответствующего идентификатору MSP инициатора. Мне пришлось отключить обнаружение службы, добавить определенные одноранговые узлы в список целевых одноранговых узлов, чтобы это заработало.

Некоторый код:

const endorsingPeers = channel.getEndorsers('org1');

if (endorsingPeers.length > 0) transaction = transaction.setEndorsingPeers(endorsingPeers);
    
const response_payloads = await  transaction.evaluate(JSON.stringify(args))
person Akshay Sood    schedule 05.04.2021

В таком случае org4 будет использовать только криптографический материал, предоставленный ему сетевым оператором, для подключения к сети и вызова чейнкода. Следовать не имеет смысла для меня.

Возможно ли, чтобы идентификатор org4 вызывал транзакции на одноранговых узлах org1?

Насколько я понимаю, пока у вас есть криптографический материал для подключения к HLF и у вас есть правильный профиль подключения, клиент HLF, на котором работает org4, в конечном итоге отправит транзакцию всем одноранговым узлам, проверьте результат моделирования на клиенте HLF. стороны, а затем отправить транзакцию заказчику, чтобы она была зафиксирована на одноранговых узлах.

Итак, в вашем случае у нас будет новый пользователь, созданный для использования org4, а затем org4 будет использовать этот криптографический материал для вызова чейнкодов. Транзакция, отправленная любой организацией, в конечном итоге будет выполнена всей инфраструктурой участвующей организации, поэтому кто-то не хочет вносить свой вклад в инфраструктуру, он просто будет использовать криптоматериал для подключения к сети HLF, не добавляя и повторно используя существующие коды цепочки, установленные на одноранговых узлах.

person Siva    schedule 04.04.2021