Hyperledger Fabric 2 коллеги из одной организации, вызывающие проблемы с кодами цепочек и couchdb - PullRequest
0 голосов
/ 17 мая 2018

У меня очень странная проблема с Hyperledger Fabric node.js sdk проблемой.

Сейчас моя сеть состоит из:

a.) Одиночной организации b.) 2 пираэта организация (peer0 и peer1).c.) 1 заказчик d.) 1 ca

При использовании node.js sdk оба участника присоединились к каналу, как видно из фрагмента кода ниже:

var fabric_client = new Fabric_Client();
var channel = fabric_client.newChannel(channelName);
var peer = fabric_client.newPeer('grpc://localhost:7051');
var peer2 = fabric_client.newPeer('grpc://localhost:8051');
channel.addPeer(peer);
channel.addPeer(peer2);
var order = fabric_client.newOrderer('grpc://localhost:7050')
channel.addOrderer(order);

Я звонюфункция цепного кода, записанная в golang, которая генерирует уникальный идентификатор, создает его хэш (SHA256) и сохраняет в couchdb и регистрирует этот хэш в контейнере следующим образом:

"password":"5ef32e670c38727ce5011dad62ff1a150362433789fdd878f2623a08bbdc990b"

Проблема в том,когда node.js SDK настроен с одним узлом.Он сохраняет тот же хеш в couchdb, который показывает журнал.Но при настройке с 2 пирами, как показано выше фрагмент кода SDK.Зарегистрированный хэш и хэш couchdb не совпадают.

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

Любая помощь / комментарий приветствуются.Спасибо

1 Ответ

0 голосов
/ 17 мая 2018

Несколько вещей:

1) Не уверен, какова ваша политика одобрения, но, если она принята по умолчанию, тогда, вообще говоря, вам нужно запросить одобрение только у одного партнера в организации

2) Самое главное вы не должны использовать недетерминированные функции в вашем коде цепи. Если у вас на самом деле было несколько организаций, а политика одобрения требовала подписей от нескольких организаций, то ваша транзакция в любом случае не состоялась бы (поскольку участники из разных организаций генерировали бы разные ответы из-за используемой вами недетерминированной функции уникального идентификатора). В этом случае, поскольку требуется только одно подтверждение, состояние, скорее всего, будет обновлено, но при этом будет использоваться значение первого ответа.

...