Привет, сообщество Hyperledger,
Итак, я тестировал некоторые вещи с Hyperledger Fabric, и мне стало интересно, возможно ли, чтобы 2 канала в какой-то степени обменивались информацией.
Например, допустим, у нас есть 3 организации Org1, Org2 и Org3.
Org1 и Org3 являются торговыми посредниками, а Org2 — грузоотправителем.
Org2 связывается с Org1 через канал 2-1, а Org2 связывается с Org3 через канал 2-3. Но Org1 и Org3 не могут взаимодействовать друг с другом, так как они не имеют общего бизнеса.
Но Org2 хочет хранить всю эту информацию в одной-единственной книге, потому что ей намного проще обрабатывать свои данные, просматривая все время только одну книгу, чем две разные.
Итак, есть ли способ для Org2 иметь канал только для себя, канал 2 и автоматически создавать транзакции на нем, когда Org2 получает или создает транзакции на каналах 2-1 и 2-3?
Например, предположим, что организация 1 сделала заказ (id #A1598) на 20 автомобилей через канал 2-1, а организация 3 сделала заказ (id #B502) на 2 тонны картофеля через канал 2-3. Есть ли способ для канала 2 автоматически получать эти данные? Чтобы транзакция также была записана на нем со всеми ссылками, которые могли бы помочь Org2 проверить транзакцию на канале 2-1, если однажды возникнет проблема.
И когда Org2 будет запрашивать Channel2 для всех транзакций, будет что-то вроде этого:
[{
id: 'A1598',
channel: '2-1',
org: 'Org1',
details: '20 cars',
price: 'xxxxx$'
},
{
id: 'B502',
channel: '2-3',
org: 'Org3',
details: '2 tons of potatoes',
price: 'xxxxx$'
}]
Автоматическое реагирование на транзакции, выполняемые в одном канале, и выполнение каких-либо действий в другом — хороший пример использования событий.
Пример цепного кода:
eventPayload := "Order requested by Org1" + someOtherPayload
payloadAsBytes := []byte(eventPayload)
stub.SetEvent("Order requested", payloadAsBytes)
Итак, проецируем его на ваш пример:
For example, let's say Org1 has made an order (id #A1598) of 20 cars through Channel 2-1 and Org3 has made an order (id #B502) of 2 tons of potatoes through Channel 2-3. Is there a way for Channel 2 to get automatically those data too ?
Когда org1 (торговый посредник) заказывает 20 автомобилей, он генерирует событие в чейнкоде (например, выше «запрошенный заказ») об этом событии, которое вы можете прослушать с пользователем org2 из вашего бэкэнда, который является зарегистрированным участником этого канала. Когда теперь org3 создает заказ, также генерируется событие («запрошенный заказ»). Теперь зарегистрированный пользователь org2, который также имеет доступ к каналу с org1, может спросить на этом канале, превышает ли новая транзакция лимит дня, и может отреагировать соответствующим образом.
См., например, этот учебник для узел. Или просто найдите подходящий учебник, который подходит для вашего языка программирования.