Как использовать нод SDK для вызова цепного кода с включенным TLS? - PullRequest
0 голосов
/ 22 января 2019

Я настраиваю сеть с переменными окружения, как описано в этом ответе: Как настроить сеть блокчейна с TLS в одноранговых узлах и заказчиках?

И использовал следующий код для загрузки загрузки сертификатов, используемых в CLI:

let serverCert = fs.readFileSync('./tlsca.com-cert.pem');
let clientCert = fs.readFileSync('./server.crt');
let clientKey = fs.readFileSync('./server.key');

fabricClient.setTlsClientCertAndKey(Buffer.from(clientCert).toString(), Buffer.from(clientKey).toString());

let peer = fabricClient.newPeer(peerEndpoint, {
    'pem': Buffer.from(serverCert).toString()
});
peerList.push(peer);
channel.addPeer(peer);

channel.addOrderer(fabricClient.newOrderer(ordererEndpoint, {
    'pem': Buffer.from(serverCert).toString()
}));

Цепной код работал с командой peer invoke, но он не работает с узлом sdk, учитывая следующую ошибку:

routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED

1 Ответ

0 голосов
/ 23 января 2019

Попробуйте использовать этот метод:

var Client = require('fabric-client');
var Channel = require('fabric-client').Channel;
var client = Client.loadFromConfig("config/configfile.yaml");

async function invokeTransaction(channelName, mspId, chaincodeId, fcn, args){
    var channel = new Channel(channelName, client);
    let tx_id = client.newTransactionID(true);
    let chaincodeInvokeRequest = {
        targets: client.getPeersForOrg(mspId),
        chaincodeId: chaincodeId,
        txId: tx_id,
        fcn: fcn,
        args: args
    }
    var result = await channel.sendTransactionProposal(chaincodeInvokeRequest, 60000);
    if(result[0][0].response.status != 200){
        return result[0][0].response;
    }
    let transactionRequest = {
        txId: tx_id,
        proposal: result[1],
        proposalResponses: result[0]
    }
    var response = await channel.sendTransaction(transactionRequest, 60000);
    return response;
}

Вы можете проверить небольшой учебник по созданию файла профиля конфигурации здесь . Не забудьте установить заголовок клиента в вашем configfile.yaml

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...