Связь между 2 каналами - PullRequest
       27

Связь между 2 каналами

0 голосов
/ 09 апреля 2019

Hello Hyperledger community,

Итак, я тестировал некоторые вещи с помощью 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?

Например, скажем, Org1 сделал заказ (id # A1598) на 20 автомобилей через канал 2-1, а Org3 сделал заказ (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$'
}]

1 Ответ

0 голосов
/ 10 апреля 2019

Автоматическое реагирование на транзакции, выполняемые в одном канале, и выполнение чего-либо в другом является хорошим примером использования для событий.

Пример ChainCode:

eventPayload := "Order requested by Org1" + someOtherPayload
payloadAsBytes := []byte(eventPayload)
stub.SetEvent("Order requested", payloadAsBytes)

Итак, проецируя это на ваш пример:

Например, скажем, Org1 сделал заказ (id # A1598) на 20 автомобилей по каналу 2-1, а Org3 сделал заказ (id # B502) на 2 тонны картофеля черезКанал 2-3.Есть ли способ для канала 2 автоматически получать эти данные?

Когда org1 (посредник) заказывает 20 автомобилей, он генерирует событие в коде цепочки (например, выше «заказанный запрос») для этого события.может слушать пользователя org2 из вашего бэкэнда, который зарегистрирован на этом канале.Когда теперь org3 создает ордер, также генерируется событие («ордер запрошен»).Теперь зарегистрированный пользователь org2, который также имеет доступ к каналу с org1, может спросить на этом канале, превышает ли новая транзакция лимит дня и может ли он соответствующим образом отреагировать.

См., Например, это руководство для узла .Или просто найдите соответствующий учебник, который обслуживает ваш язык программирования.

...