Я занимаюсь разработкой приложения для композиторов Hyperledger и хочу получить все транзакции определенного клиента (memberInvoking).
Это мой код в разрешении .acl:
rule ProducerCanReadClientTxHistorian {
description: "Read historian of an client"
participant: "org.hyperledger.composer.system.Participant"
operation: READ
resource: "org.hyperledger.composer.system.HistorianRecord"
action: ALLOW
}
Это запрос:
query selectTxOfClientID {
description: "Select all tx of Client x"
statement:
SELECT org.hyperledger.composer.system.HistorianRecord
WHERE (participantInvoking == _$clientId)
}
Но когда я выполняю этот запрос, предоставляя идентификатор участника с помощью REST API, он отправляет пустое тело ответа.
Как ты решил это?
снимок экрана остальных API для входного значения.
Значение clientId равно 2814, следует ли указать другое значение (например, «resource: org.example.Client # 2814») или другое значение?
Ответ " GET / system / историк " (который возвращает весь историк) имеет вид:
{
"$class": "org.hyperledger.composer.system.HistorianRecord",
"transactionId": "4524d8b127be3b2fab008d73228cedf92bfc7cf46ada6e8355070ebbbe83f74e",
"transactionType": "org.example.Tx",
"transactionInvoked": "resource:org.example.Tx#4524d8b127be3b2fa28cedf92bfc7cf46ada6e8355070ebbbe83f74e",
"participantInvoking": "resource:org.example.Client#2814",
"identityUsed": "resource:org.hyperledger.composer.system.Identity#6fe4f7cbc1fce39598fdc1c1afe4d3324466c78ee40f0ab1fa3c",
"eventsEmitted": [
{
"$class": "org.example.TxEvent",
"newTimestamp": "0000000001",
"newProdottoUsato": "resource:org.example.Product#900",
"newCount": 0,
"eventId": "4524d8b127be3b2fd73228cedf92bfc7cf46ada6e8355070ebbbe83f74e#0",
"timestamp": "2019-01-11T11:33:48.129Z"
}
],
"transactionTimestamp": "2019-01-11T11:33:48.129Z"
},