Не удалось получить план одобрения при попытке инициализировать объект канала для использования обнаружения службы

Я пытаюсь использовать функцию обнаружения служб в 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 ответов

Вы должны добавить одноранговый одноранговый узел от каждой организации в канале, это решило проблему для меня. Якорные одноранговые узлы необходимы для обнаружения службы, поскольку для обнаружения службы используется протокол сплетни

Другие вопросы по тегам