невозможно вызвать цепной код из клиента: Ошибка обработки транзакции. Ошибка: требуется сертификат в кодировке PEM - PullRequest
1 голос
/ 09 января 2020

я пытаюсь вызвать команду chaincode от клиента, когда я получаю Error processing transaction. Error: PEM encoded certificate is required это мой код клиента, который я использую для подключения к сети fabri c и вызова кода цепи. я могу вызывать и выполнять команды chaincode из одноранговой сети, но почему я не могу сделать это с клиента. Я думаю, что это может сделать что-то с параметром TLS или что-то. Может кто-нибудь сказать мне, что я скучаю. спасибо

`
    'use strict';
    const fs = require('fs');
    const yaml = require('js-yaml');
    const { FileSystemWallet, Gateway } = require('fabric-network');
    const CommercialPaper = require('../chaincode/lib/paper');

   // A wallet stores a collection of identities for use
    const wallet = new FileSystemWallet('../identity/user/isabella/wallet');

  async function main() {

         const gateway = new Gateway();


   try {
          const userName = 'User1@org1.bionic.com';

         // Load connection profile; will be used to locate a gateway             
        let connectionProfile = 
        yaml.safeLoad(fs.readFileSync('../gateway/networkConnection.yaml', 'utf8')
        );

// Set connection options; identity and wallet
let connectionOptions = {
  identity: userName,
  wallet: wallet,
  discovery: { enabled: false, asLocalhost: true }
};

await gateway.connect(connectionProfile, connectionOptions);

const network = await gateway.getNetwork('bionicchannel');
console.error('error occured');

// Get addressability to commercial paper contract

const contract = await network.getContract('papercontract');

const issueResponse = await contract.submitTransaction(
  'issue',
  'BionicSoftware',
  '00001',
  '2020-05-31',
  '2020-11-30',
  '5000000');}

Ответы [ 2 ]

0 голосов
/ 13 января 2020

проблема была в файле yaml конфигурации соединения после указания адреса ca, который был недоступен в то время, когда все работало.

0 голосов
/ 09 января 2020

Если у вас включен TLS, вам, вероятно, не хватает сертификатов на стороне клиента (Node SDK). Я предлагаю оставить TLS включенным, но удалить взаимную аутентификацию, чтобы клиенту не приходилось каждый раз выполнять аутентификацию.

Необходимо изменить переменные среды на docker compose, установив в CLIENTAUTHREQUIRED значение false и снова генерируя сертификаты в кошелек для клиента.

...