Hyperledger Composer中Channels与Permission.acl之间的区别

时间:2018-07-13 07:09:37

标签: hyperledger-fabric hyperledger hyperledger-composer

在Hyperledger作曲器中,如果我们能够在同一通道中使用permission.acl限制事务的可见性(历史记录的可见性以及对资源的CRUD操作),是否需要使用多个通道。如果两者的用法不同,请解释一下它们之间的区别。

如果只有一个渠道并通过Permission.acl分隔了交易的可见性,我们如何限制多个参与者/组织的事件,即将事件提取给所有者或特定组织。

预先感谢

Praveen

2 个答案:

答案 0 :(得分:0)

使用一个通道,即使您限制通过ACL访问/查看事务,所有事务也将提交给该通道上的所有对等方,因此,如果您需要保护特定对等方之间的私有事务,请在不同通道上将这些对等方分开。 对于事件,您可以为同一事务发布不同的事件,并且让每个客户订阅不同的事件。 示例事务(更新资产所有者)发布两个事件(事件A,事件B) 并且客户端可以选择仅订阅(事件A),而另一个客户端可以订阅(事件B)

答案 1 :(得分:0)

权限访问控制(ACL):允许对业务网络的资产和参与者实施不同级别的授权。分类帐(数据)在加入渠道的所有对等点和业务网络之间共享。

渠道:您可以“物理地”分离同级之间的分类帐。如果对等方未加入频道,则它没有数据副本。

通道和ACL的组合允许创建复杂的数据访问配置。

关于事件,我认为您可以根据参与者的身份实施不同的事件:

async function sampleTx(tx) {
    var currentParticipant = getCurrentParticipant();
    let factory = getFactory();

    let eventOne = factory.newEvent('org.example', 'EventOne');
    let eventTwo = factory.newEvent('org.example', 'EventTwo');

    if(currentParticipant.getFullyQualifiedType() !== 'org.example.ParticipantOne'){
      //....
      emit(eventOne);

    } else if(currentParticipant.getFullyQualifiedType() !== 'org.example.ParticipantTwo'){
      //....
      emit(eventTwo);
    }
}
相关问题