Мне наконец удалось это сделать.
1.
const result = await contract.evaluateTransaction('getPoints','ID1');
должен быть изменен на:
const result = await contract.submitTransaction('getPoints','ID1');
, чтобы получать информацию от пиров ввнешняя организация.
2.
Если используются личные данные, важно, чтобы поля "memberOnlyRead"
и "memberOnlyWrite"
(1) были удалены илив файле collections_config.json
установите false
.
пример:
[
{
"name": "collectionFacepoints",
"policy": "OR('Org1MSP.member')",
"requiredPeerCount": 2,
"maxPeerCount": 2,
"blockToLive": 0,
"memberOnlyRead": false
}
]
3.
В gateway.connect(connectionProfile, connectionOptions)
этоважно добавить discovery.enable=true
к connectionOptions
.
пример:
await gateway.connect(
connectionProfile,
{
wallet,
identity: identityConfig.identityLabel,
discovery: {
enabled: true,
asLocalhost: true
},
eventHandlerOptions: {
strategy: DefaultEventHandlerStrategies.NETWORK_SCOPE_ALLFORTX
}
}
);
4.
К сожалению, кажется, что клиент изOrgCam не может напрямую запрашивать код цепи, установленный в одноранговых узлах org1, но это можно сделать, добавив пустой (2) одноранговый узел OrgCam, который действует как одноранговый одноранговый узел.
- (1):
"memberOnlyWrite"
еще не доступно.См. здесь . - (2): «пустой» я имею в виду без установленного на нем цепного кода.