Hyperledger fabric 从hyperledger结构中的节点sdk初始化网络通道时出错

Hyperledger fabric 从hyperledger结构中的节点sdk初始化网络通道时出错,hyperledger-fabric,hyperledger,blockchain,hyperledger-fabric-sdk-js,Hyperledger Fabric,Hyperledger,Blockchain,Hyperledger Fabric Sdk Js,背景: 我已经修改了第一个网络文件(每个文件中有2个组织和1个对等网络),并在其上安装了我自己的链码。此外,我还创建了一个connection.yaml文件以与网络交互 问题: 但是,当我尝试从nodeSDK获取网络通道并建立网关时,我遇到了以下错误: 错误:[网络]:\u initializeInternalChannel:无法初始化 频道试图联系2个对等方。最后一个错误是错误:2 未知:已删除流 无法评估事务:错误:无法初始化通道。 试图联系2个对等方。最后一个错误是错误:2未知:流 除去

背景: 我已经修改了第一个网络文件(每个文件中有2个组织和1个对等网络),并在其上安装了我自己的链码。此外,我还创建了一个connection.yaml文件以与网络交互

问题: 但是,当我尝试从nodeSDK获取网络通道并建立网关时,我遇到了以下错误:

错误:[网络]:\u initializeInternalChannel:无法初始化 频道试图联系2个对等方。最后一个错误是错误:2 未知:已删除流

无法评估事务:错误:无法初始化通道。 试图联系2个对等方。最后一个错误是错误:2未知:流 除去

下面你可以在我的客户端找到代码。执行
gateway.getNetwork('mychannel')
时可能会出现错误

let connectionProfile = yaml.safeLoad(fs.readFileSync('./connection.yaml', 'utf8'));
// Create a new gateway for connecting to our peer node.
const gateway = new Gateway();
await gateway.connect(connectionProfile, { wallet, identity: 'user1', discovery: { enabled: false } });
// Get the network (channel) our contract is deployed to.
const network = await gateway.getNetwork('mychannel');
// Get the contract from the network.

const contract = network.getContract('bankpeerContract');
var result = await contract.evaluateTransaction('queryAllStamps');
这是my connection.yaml文件:

---
name: mychannel.firstnetwork.connectionprofile
x-type: "hlfv1"
description: "BankPeerContract methods will be used through this profile"
version: "1.0"

channels:
  mychannel:
    orderers:
      - orderer.example.com
    peers:
      peer0.org1.example.com:
        endorsingPeer: true
        chaincodeQuery: true
        ledgerQuery: true
        eventSource: true
      peer0.org2.example.com:
        endorsingPeer: true
        chaincodeQuery: true
        ledgerQuery: true
        eventSource: true

organizations:
  Org1:
    mspid: Org1MSP
    peers:
      - peer0.org1.example.com
    certificateAuthorities:
      - certificate-authority-org1
    adminPrivateKey:
      path: ../first-network/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/63145b12cd86abb07b6b5797c5e9506faa8f799e81d3c71d11a6a60840e3b6ae_sk
    signedCert:
      path: ../first-network/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem

  Org2:
    mspid: Org2MSP
    peers:
      - peer0.org2.example.com
    certificateAuthorities:
      - certificate-authority-org2
    adminPrivateKey:
      path: ../first-network/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/keystore/4d9b19fdcce70620b45760f5d62c7c877200ab38553b7a8b85245b04ca0e8bdd_sk
    signedCert:
      path: ../first-network/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/signcerts/Admin@org2.example.com-cert.pem

orderers:
  orderer.example.com:
    url: grpc://localhost:7050
    grpcOptions:
      ssl-target-name-override: orderer.example.com
    tlsCACerts:
      path: ../first-network/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

peers:
  peer0.org1.example.com:
    url: grpc://localhost:7051
    grpcOptions:
      ssl-target-name-override: peer0.org1.example.com
      request-timeout: 120001
    tlsCACerts:
      path: ../first-network/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem

  peer0.org2.example.com:
    url: grpc://localhost:9051
    grpcOptions:
      ssl-target-name-override: peer0.org2.example.com
      request-timeout: 120001
    tlsCACerts:
      path: ../first-network/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem

certificateAuthorities:
  ca-org1:
    url: http://localhost:7054
    httpOptions:
      verify: false
    tlsCACerts:
      path: ../first-network/crypto-config/peerOrganizations/org1.example.com/ca/ca.org1.example.com-cert.pem
    registrar:
      - enrollId: admin
        enrollSecret: adminpw
    caName: certificate-authority-org1
  ca-org2:
    url: http://localhost:8054
    httpOptions:
      verify: false
    tlsCACerts:
      path: ../first-network/crypto-config/peerOrganizations/org2.example.com/ca/ca.org2.example.com-cert.pem
    registrar:
      - enrollId: admin
        enrollSecret: adminpw
    caName: certificate-authority-org2

我一直无法确定连接.yaml文件是否存在问题,或者网络中是否存在问题。

BYFN/EFYN在所有结构节点(对等节点、订购方、证书颁发机构)上启用TLS以保护通信安全。您的连接配置文件包含“grpc://”和“http://”URL-这些URL应更改为“grpc://”和“https://”。看起来TLS CA证书是正确的。

您是否已为这两个对等方安装并运行docker容器?如果是,则检查对等方是否已加入通道。@DheerajKumar是,容器已启动并运行。而且两个对等方都已加入该频道。请参阅作为比较。注意到您的
名称
条目没有双引号(示例是)-不确定其是否为强制输入。在双引号中提到了名称。没有任何区别。正如您所说,我在连接配置文件中将它们更改为“grpcs://”和“https://”。现在它给了我这个错误:
错误:[Network]:\u initializeInternalChannel:无法初始化通道。试图联系2个对等方。最后一个错误是错误:2未知:访问被拒绝:通道[myc1]创建者组织[Org1MSP]无法评估事务:错误:无法初始化通道。试图联系2个对等方。最后一个错误是错误:2未知:访问被拒绝:频道[myc1]创建者组织[Org1MSP]
我接受这个答案,尽管它解决了我一半的问题。我当然需要我的连接配置文件有“grpcs://”和“https://”。然而,我错过的下一件事是添加/注册一个属于first-network任何组织的用户。最初,我在客户端(NodeSDK)注册了一个不同的用户,因此我收到了我在上面的评论中提到的错误。在注册了一个用户(他是第一个网络的一部分)并更改了我的连接配置文件后,我成功地解决了所有错误。嗨,我面临着同样的问题。我已经在ca和客户端中注册了user1,但仍然收到相同的错误。能否请您更具体地说明您是如何解决此问题的?