Hyperledger Composer - правило ACL выполняется слишком долго - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть следующие активы:

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
}

Я хочу ограничить разрешение READ для 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 есть только одна группа и пользователь?

...