当前位置: 首页 > 知识库问答 >
问题:

使用Hyperledger Fabric Node JS创建通道时出错

韩经武
2023-03-14

我试图用Fabric SDK创建一个通道node.js.当我通过bash命令创建通道时,我没有问题(您可以看到下面的代码),但是当我使用node.jsSDK时,我遇到了一些错误。我正在使用TLS和客户端身份验证。我无法意识到错误意味着什么以及如何解决它。任何帮助都将不胜感激。

节点JS代码创建通道,在主机上执行:

var Fabric_Client = require('fabric-client');
var fs=require('fs');
var fabric_client = new Fabric_Client();

// Obtain tls cert and key from client.
let clientcert = fs.readFileSync('/home/rosalva40/Documentos/Own2/Own/data/tls/peer1-org1-cli-client.crt');
let clientkey = fs.readFileSync('/home/rosalva40/Documentos/Own2/Own/data/tls/peer1-org1-cli-client.key');
fabric_client.setTlsClientCertAndKey(clientcert.toString(),clientkey.toString())



//Orderer configuration
let pem1 = fs.readFileSync('/home/rosalva40/Documentos/Own2/Own/data/org0-ca-chain.pem');
const connectionopts = {
    pem: pem1.toString()
};
var order = fabric_client.newOrderer('grpcs://localhost:9101', connectionopts)


//setup identity admin
let cert = fs.readFileSync('/home/rosalva40/Documentos/Own2/Own/data/orgs/org1/admin/msp/signcerts/cert.pem');
let pk = fs.readFileSync('/home/rosalva40/Documentos/Own2/Own/data/orgs/org1/admin/msp/keystore/b17b8a06b4928a037e621cc784cac4f8a4913087c95c68162ecae6189993a1fa_sk');
const  mspid = 'org1MSP';
fabric_client.setAdminSigningIdentity(pk, cert, mspid);


// Setup create channel
var chanelName = 'mychannel';
const envelope = fs.readFileSync('/home/rosalva40/Documentos/Own2/Own/data/channel.tx');
channelConfig = fabric_client.extractChannelConfig(envelope);
signature = fabric_client.signChannelConfig(channelConfig);

const request = {
    name: chanelName,
    orderer: order,
    config: channelConfig,
    signatures : [signature],
    txId : fabric_client.newTransactionID(true)
};


//Create chanel
fabric_client.createChannel(request);

当我运行createChannel时。js,我在控制台中遇到以下错误:

2019-01-17T14:30:42.278Z-错误:[Remote.js]:错误:在截止日期URL之前连接失败:grpcs://localhost:91012019-01-17T14:30:42.283Z-错误:[order.js]:ordergrpcs://localhost:9101出现错误:在截止日期URL之前连接失败:grpcs://localhost:9101(节点:31051)未经处理的PromisejectionWarning:错误:在截止日期URL之前连接失败:grpcs://localhost:9101在checkState(/home/rosalva40/fabric samples/vote/node_modules/fabric client/node_modules/grpc/src/client.js:720:16)(node:31051)未经处理的Promisejection警告:未经处理的promise拒绝。这个错误要么是由于在没有catch块的情况下抛出异步函数的内部,要么是因为拒绝了没有使用catch块处理的promise。catch()。(拒绝id:2)(节点:31051)[DEP0018]弃用警告:未处理的promise拒绝被弃用。将来,未处理的promise拒绝将终止节点。具有非零退出代码的js进程

这是订购方节点日志:

2019-01-17 16:08:40.977UTC[grpc]Println-

这是在容器中执行的bash代码:

DATA=data
CHANNEL_TX_FILE=/$DATA/channel.tx
CHANNEL_NAME=mychannel 

# ORDERER CONNECTION ARGUMENTS
ORDERER_HOST=orderer1-org0
ORDERER_PORT_INT=7050
INT_CA_CHAINFILE=/${DATA}/org0-ca-chain.pem
ORDERER_PORT_ARGS="-o $ORDERER_HOST:$ORDERER_PORT_INT --tls --cafile $INT_CA_CHAINFILE --clientauth"

export CORE_PEER_TLS_CLIENTCERT_FILE=/$DATA/tls/peer1-org1-cli-client.crt
export CORE_PEER_TLS_CLIENTKEY_FILE=/$DATA/tls/peer1-org1-cli-client.key

ORDERER_CONN_ARGS="$ORDERER_PORT_ARGS --keyfile $CORE_PEER_TLS_CLIENTKEY_FILE --certfile $CORE_PEER_TLS_CLIENTCERT_FILE"

#ORGANIZATION ADMIN ENVIROMENT ARGUMENTS
ORG_ADMIN_HOME=/${DATA}/orgs/org1/admin
export CORE_PEER_MSPCONFIGPATH=$ORG_ADMIN_HOME/msp
export CORE_PEER_LOCALMSPID=org1MSP

#CHANNEL CREATE COMMAND
peer channel create --logging-level=DEBUG -c $CHANNEL_NAME -f $CHANNEL_TX_FILE $ORDERER_CONN_ARGS

共有1个答案

许嘉福
2023-03-14

应用程序似乎在连接订购方时出现问题。尝试使用以下方法:

var Client = require('fabric-client');
var Channel = require('fabric-client').Channel;
const fs = require('fs');
var client = Client.loadFromConfig("config/configfile.yaml");
/**
 * @param {String} channelName Channel name used in configtxgen to create the channel transaction (mychannel)
 * @param {String} channelConfigPath Path of the channel transaction (/home/root/channel-artifacts/channel.tx)
 * @param {String} orderer Orderer name (orderer.example.com)
 * @description Create channel
 */
async createChannel(channelName,orderer, channelConfigPath) {
    var envelope = fs.readFileSync(channelConfigPath);
    var channelConfig = client.extractChannelConfig(envelope);
    let signature = client.signChannelConfig(channelConfig);
    let request = {
        config: channelConfig,
        orderer: client.getOrderer(orderer),
        signatures: [signature],
        name: channelName,
        txId: client.newTransactionID(true)
    };
    const result = await client.createChannel(request)
    return result;
}

您可以检查配置文件的结构。yaml在这个链接中。别忘了在配置文件中设置客户端头。亚马尔

 类似资料:
  • Hyperledger面料:我正在使用面料样品。 在运行命令时 我在创建通道时遇到以下错误:

  • 尝试在这里使用Mapstruct做一些测试。我有以下类: 试验等级 测绘仪 在这里考虑模型 生成的通用MapperImpl: 当我尝试运行测试时,他给出了以下错误: MapperTest中的@Autowire不起作用。它声称:“无法自动连线。找不到“UsuarioMapper”类型的beans。 已尝试: gradle build(无错误) gradle build-x test(无错误) 使缓存

  • 我能够使用Azure CLI模板部署Azure Bot注册通道 https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-template-deploy-cli 但我不知道如何在同一脚本中为新创建的频道设置Facebook频道凭据。 https://docs.microsoft.com/en-us/bo

  • 问题内容: 几天来,我一直在尝试创建Spring CRUD应用程序。我糊涂了。我无法解决此错误。 还有这个 客户端控制器 ClientServiceImpl 客户资料库 我浏览了许多类似的问题,但是没有人回答不能帮助我。 问题答案: ClientRepository应该用标记注释。使用你当前的配置,Spring将不会扫描该类并对其有所了解。在启动和连接时,找不到ClientRepository类。

  • 我试图使用boto3创建一个Dynamodb表。但我得到以下错误: "botocore.exceptions.ClientError:调用CreateTable操作时出错(ValidationExcture):无效的KeySchema:第一个KeySchemaElement不是HASH键类型" 更多信息:我的帐户中没有任何全局表。 我试过的代码:

  • org.h2.jdbc.jdbcsqlsyntaxerrorexception:SQL语句“create TABLE HIBERNATE_SEQUENCE(NEXT_VAL BIGINT)engine=[*]myisam”中存在语法错误;应为“标识符”