Не удалось получить план одобрения при попытке инициализировать объект канала для использования обнаружения службы
Я пытаюсь использовать функцию обнаружения служб в Fabric 1.4. Моя сеть по умолчанию, 2 организации и 2 пира на организацию. Я пытаюсь вызвать цепной код с помощью функции обнаружения служб, а не путем установки конкретных целевых пиров. (Перед использованием обнаружения службы я установил конкретных индоссантов в целевых свойствах объекта запроса предложения транзакции.)
Чтобы использовать службу обнаружения, я установил discover: true
чтобы сверстники в моем профиле подключения. Затем я просто добавил ниже код для моего invoke
функция.
await channel.initialize({ discover: true, asLocalhost: true })
Следуя инструкциям в документе fabric-node-sdk, я изменил порты каждого узла для использования обнаружения служб в docker-compose
сеть.
Все отлично работает, включая создание канала, установку цепного кода и создание цепного кода. Кроме того, вызов цепного кода работает нормально, если я не использовал функцию обнаружения служб.
Тем не менее, если я добавил await channel.initialize({ discover: true, asLocalhost: true })
в моем invoke
функция, это initialize
Функция выдает ошибку, как показано ниже:
Error: No endorsement plan available for {"chaincodes":[{"name":"etri-bcdms-token-chaincode"}]}
(Я установил свою политику одобрения во время создания экземпляра)
В узле печатаются следующие журналы:
Failed constructing descriptor for chaincode chaincodes:<name:"etri-bcdms-token-chaincode" > ,: cannot satisfy any principal combination
Полный код моей функции вызова ниже:
const client = this._useFabricCA
? await getUserClient(orgID, userID)
: await getOrgAdminClient(orgID)
if (!client) {
throw Error(`failed to get the client for ${orgID}`)
}
const channel = client.getChannel(channelID)
if (!channel) {
throw Error(`failed to get the channel for ${channelID}`)
}
// Service discovery
await channel.initialize({ discover: true, asLocalhost: true })
const chaincodeSetting = getChaincodeSetting(channelID)
if (!chaincodeSetting) {
throw Error(`no chaincode set on the channel ${channelID}`)
}
const txID = client.newTransactionID()
const request: ChaincodeInvokeRequest = {
// targets: targetList,
chaincodeId: chaincodeSetting.id,
fcn,
args,
txId: txID
}
// Process the endorsement
const results = await channel.sendTransactionProposal(request)
Есть ли какой-нибудь совет для такого рода ошибок? Куда я могу вложить деньги, чтобы исправить эту ошибку и использовать сервис обнаружения? Любой совет будет очень благодарен.
0 ответов
Вы должны добавить одноранговый одноранговый узел от каждой организации в канале, это решило проблему для меня. Якорные одноранговые узлы необходимы для обнаружения службы, поскольку для обнаружения службы используется протокол сплетни