Hyperledger Composer-ACL规则执行时间过长

时间:2019-04-04 08:51:34

标签: acl hyperledger-composer

我有以下资产:

asset Group identified by Id {
 o String id
}

asset Foo identified by Id {
 o String id
 --> Group[] groups
}

以及以下参与者:

participant User identified by id {
 o String id
 --> Group[] groups
}

我只想将Foo的读取权限限制为仅属于同一组的用户。我有以下ACL规则:

participant(p): "org.example.network.User"
operation: READ
resource(r): "org.example.network.Foo"
condition: (p.groups.some(function (pg) {
    return r.groups.some(function (rg) {
        return rg.getIdentifier() === pg.getIdentifier();
    });
  })
)

该规则有效,但是速度太慢。在摩卡咖啡的测试运行中,读取操作需要8秒钟。太长了,因为Foo和User只有一个组。但是,如果像下面的示例中那样进行一级迭代,则读取操作仅花费0.5秒:

participant(p): "org.example.network.User"
operation: READ
resource(r): "org.example.network.Foo"
condition: (p.groups.some(function (pg) {
    return pg.id === 'some id';
  })
)

这种差异的原因是什么?为什么即使Foo和用户只有一个组,多次迭代也要花这么长时间?

0 个答案:

没有答案