2通道之间的通讯

时间:2019-04-09 10:22:55

标签: hyperledger-fabric hyperledger

Hyper Hyperledger社区,

所以我当时正在使用Hyperledger Fabric测试一些东西,我想知道两个渠道是否可以在某种程度上共享信息。

例如,假设我们有3个组织Org1,Org2和Org3。

Org1和Org3是转售商,Org2是托运人。

Org2通过通道2-1与Org1通信,Org2通过通道2-3与Org3通信。但是Org1和Org3无法彼此通信,因为它们不会共同共享任何业务。

但是Org2希望将所有这些信息都保存在一个分类账中,因为通过始终查看一个分类账而不是两个分类账,可以更轻松地处理数据。

那么,Org2是否有一种方法可以让自己的Channel(频道2)拥有一个频道,并在Org2在Channel 2-1和2-3上接收或创建交易时自动在其上创建交易?

例如,假设Org1通过2-1通道订购了20辆汽车(id#A1598),Org3通过2-3通道订购了2吨马铃薯的订单(id#B502)。通道2是否也有办法自动获取这些数据?这样一来,交易记录上就会包含所有参考,这些参考可以指导Org2一天出现问题时在Channel 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 :(得分:0)

对于在一个渠道中完成的交易自动做出反应,而在另一渠道中完成某件事则是事件的好用例。

ChainCode示例:

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

因此将其投影到您的示例中:

  

例如,假设Org1通过2-1通道订购了20辆汽车(id#A1598),Org3通过2-3通道订购了2吨马铃薯的订单(id#B502)。频道2是否也有办法自动获取这些数据?

当org1(转销商)订购20辆汽车时,此事件会在链码中发出一个事件(例如,在“请求的订单”上方),您可以与后端的org2用户一起收听,该用户是该频道的注册成员。现在,org3创建订单时,还会发出一个事件(“请求订单”)。现在,已同时注册了org1频道的org2已注册用户可以在该频道上询问新交易是否超出了当天的限制并可以做出相应的反应。

例如,请参见本教程的node。或者只是搜索适合您的编程语言的教程。