Не удалось подключиться к шлюзу с помощью fabric-sdk-go

#hyperledger-fabric #hyperledger-fabric-sdk-go

Вопрос:

когда я использую fabric-sdk-go для подключения к локальной сети, он не работает, потому что tls.сертификат не существует или пуст для однорангового узла peer1.org1.adbc.com. Когда я использую оболочку, все может работать нормально, и команда invoke может быть вызвана на каждом узле.Эта сеть основана на примере структуры версии 2.3. На этой основе я добавил узел в каждой организации. Это сообщение об ошибке.

 Failed to connect to gateway: Failed to apply config option: failed to initialize configuration: unable to load endpoint config: failed to initialize endpoint config from config backend: network configuration load failed: failed to load channel configs: failed to load channel peers: tls.certificate does not exist or empty for peer peer1.org1.adbc.com  

Это docker-compose.yaml

 # Copyright IBM Corp. All Rights Reserved. # # SPDX-License-Identifier: Apache-2.0 #  version: '3.7'  volumes:  orderer.adbc.com:  peer0.org1.adbc.com:  peer1.org1.adbc.com:  peer0.org2.adbc.com:  peer1.org2.adbc.com:  networks:  test:  name: fabric_test  services:   orderer.adbc.com:  container_name: orderer.adbc.com  image: hyperledger/fabric-orderer:latest  labels:  service: hyperledger-fabric  environment:  - FABRIC_LOGGING_SPEC=INFO  - ORDERER_GENERAL_LISTENADDRESS=0.0.0.0  - ORDERER_GENERAL_LISTENPORT=7050  - ORDERER_GENERAL_LOCALMSPID=OrdererMSP  - ORDERER_GENERAL_LOCALMSPDIR=/var/hyperledger/orderer/msp  # enabled TLS  - ORDERER_GENERAL_TLS_ENABLED=true  - ORDERER_GENERAL_TLS_PRIVATEKEY=/var/hyperledger/orderer/tls/server.key  - ORDERER_GENERAL_TLS_CERTIFICATE=/var/hyperledger/orderer/tls/server.crt  - ORDERER_GENERAL_TLS_ROOTCAS=[/var/hyperledger/orderer/tls/ca.crt]  - ORDERER_GENERAL_CLUSTER_CLIENTCERTIFICATE=/var/hyperledger/orderer/tls/server.crt  - ORDERER_GENERAL_CLUSTER_CLIENTPRIVATEKEY=/var/hyperledger/orderer/tls/server.key  - ORDERER_GENERAL_CLUSTER_ROOTCAS=[/var/hyperledger/orderer/tls/ca.crt]  - ORDERER_GENERAL_BOOTSTRAPMETHOD=none  - ORDERER_CHANNELPARTICIPATION_ENABLED=true  - ORDERER_ADMIN_TLS_ENABLED=true  - ORDERER_ADMIN_TLS_CERTIFICATE=/var/hyperledger/orderer/tls/server.crt  - ORDERER_ADMIN_TLS_PRIVATEKEY=/var/hyperledger/orderer/tls/server.key  - ORDERER_ADMIN_TLS_ROOTCAS=[/var/hyperledger/orderer/tls/ca.crt]  - ORDERER_ADMIN_TLS_CLIENTROOTCAS=[/var/hyperledger/orderer/tls/ca.crt]  - ORDERER_ADMIN_LISTENADDRESS=0.0.0.0:7053  - ORDERER_OPERATIONS_LISTENADDRESS=0.0.0.0:17050  working_dir: /opt/gopath/src/github.com/hyperledger/fabric  command: orderer  volumes:  - ../system-genesis-block/genesis.block:/var/hyperledger/orderer/orderer.genesis.block  - ../organizations/ordererOrganizations/adbc.com/orderers/orderer.adbc.com/msp:/var/hyperledger/orderer/msp  - ../organizations/ordererOrganizations/adbc.com/orderers/orderer.adbc.com/tls/:/var/hyperledger/orderer/tls  - orderer.adbc.com:/var/hyperledger/production/orderer  ports:  - 7050:7050  - 7053:7053  - 17050:17050  networks:  - test   peer0.org1.adbc.com:  container_name: peer0.org1.adbc.com  image: hyperledger/fabric-peer:latest  labels:  service: hyperledger-fabric  environment:  #Generic peer variables  - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock  - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=fabric_test  - FABRIC_LOGGING_SPEC=INFO  #- FABRIC_LOGGING_SPEC=DEBUG  - CORE_PEER_TLS_ENABLED=true  - CORE_PEER_PROFILE_ENABLED=false  - CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt  - CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key  - CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt  # Peer specific variables  - CORE_PEER_ID=peer0.org1.adbc.com  - CORE_PEER_ADDRESS=peer0.org1.adbc.com:7051  - CORE_PEER_LISTENADDRESS=0.0.0.0:7051  - CORE_PEER_CHAINCODEADDRESS=peer0.org1.adbc.com:7052  - CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:7052  - CORE_PEER_GOSSIP_BOOTSTRAP=peer1.org1.adbc.com:8051  - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.adbc.com:7051  - CORE_PEER_LOCALMSPID=Org1MSP  volumes:  - ${DOCKER_SOCK}:/host/var/run/docker.sock  - ../organizations/peerOrganizations/org1.adbc.com/peers/peer0.org1.adbc.com/msp:/etc/hyperledger/fabric/msp  - ../organizations/peerOrganizations/org1.adbc.com/peers/peer0.org1.adbc.com/tls:/etc/hyperledger/fabric/tls  - peer0.org1.adbc.com:/var/hyperledger/production  working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer  command: peer node start  ports:  - 7051:7051  networks:  - test   peer1.org1.adbc.com:  container_name: peer1.org1.adbc.com  image: hyperledger/fabric-peer:latest  labels:  service: hyperledger-fabric  environment:  #Generic peer variables  - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock  - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=fabric_test  - FABRIC_LOGGING_SPEC=INFO  #- FABRIC_LOGGING_SPEC=DEBUG  - CORE_PEER_TLS_ENABLED=true  - CORE_PEER_PROFILE_ENABLED=false  - CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt  - CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key  - CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt  # Peer specific variables  - CORE_PEER_ID=peer1.org1.adbc.com  - CORE_PEER_ADDRESS=peer1.org1.adbc.com:8051  - CORE_PEER_LISTENADDRESS=0.0.0.0:8051  - CORE_PEER_CHAINCODEADDRESS=peer1.org1.adbc.com:7052  - CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:7052  - CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org1.adbc.com:7051  - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org1.adbc.com:8051  - CORE_PEER_LOCALMSPID=Org1MSP  volumes:  - ${DOCKER_SOCK}:/host/var/run/docker.sock  - ../organizations/peerOrganizations/org1.adbc.com/peers/peer1.org1.adbc.com/msp:/etc/hyperledger/fabric/msp  - ../organizations/peerOrganizations/org1.adbc.com/peers/peer1.org1.adbc.com/tls:/etc/hyperledger/fabric/tls  - peer1.org1.adbc.com:/var/hyperledger/production  working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer  command: peer node start  ports:  - 8051:8051  networks:  - test  peer0.org2.adbc.com:  container_name: peer0.org2.adbc.com  image: hyperledger/fabric-peer:latest  labels:  service: hyperledger-fabric  environment:  #Generic peer variables  - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock  - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=fabric_test  - FABRIC_LOGGING_SPEC=INFO  #- FABRIC_LOGGING_SPEC=DEBUG  - CORE_PEER_TLS_ENABLED=true  - CORE_PEER_PROFILE_ENABLED=false  - CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt  - CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key  - CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt  # Peer specific variables  - CORE_PEER_ID=peer0.org2.adbc.com  - CORE_PEER_ADDRESS=peer0.org2.adbc.com:9051  - CORE_PEER_LISTENADDRESS=0.0.0.0:9051  - CORE_PEER_CHAINCODEADDRESS=peer0.org2.adbc.com:9052  - CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:9052  - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org2.adbc.com:9051  - CORE_PEER_GOSSIP_BOOTSTRAP=peer1.org2.adbc.com:10051  - CORE_PEER_LOCALMSPID=Org2MSP  volumes:  - ${DOCKER_SOCK}:/host/var/run/docker.sock  - ../organizations/peerOrganizations/org2.adbc.com/peers/peer0.org2.adbc.com/msp:/etc/hyperledger/fabric/msp  - ../organizations/peerOrganizations/org2.adbc.com/peers/peer0.org2.adbc.com/tls:/etc/hyperledger/fabric/tls  - peer0.org2.adbc.com:/var/hyperledger/production  working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer  command: peer node start  ports:  - 9051:9051  networks:  - test  peer1.org2.adbc.com:  container_name: peer1.org2.adbc.com  image: hyperledger/fabric-peer:latest  labels:  service: hyperledger-fabric  environment:  #Generic peer variables  - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock  - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=fabric_test  - FABRIC_LOGGING_SPEC=INFO  #- FABRIC_LOGGING_SPEC=DEBUG  - CORE_PEER_TLS_ENABLED=true  - CORE_PEER_PROFILE_ENABLED=false  - CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt  - CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key  - CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt  # Peer specific variables  - CORE_PEER_ID=peer1.org2.adbc.com  - CORE_PEER_ADDRESS=peer1.org2.adbc.com:10051  - CORE_PEER_LISTENADDRESS=0.0.0.0:10051  - CORE_PEER_CHAINCODEADDRESS=peer1.org2.adbc.com:10052  - CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:10052  - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org2.adbc.com:10051  - CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org2.adbc.com:9051  - CORE_PEER_LOCALMSPID=Org2MSP  volumes:  - ${DOCKER_SOCK}:/host/var/run/docker.sock  - ../organizations/peerOrganizations/org2.adbc.com/peers/peer1.org2.adbc.com/msp:/etc/hyperledger/fabric/msp  - ../organizations/peerOrganizations/org2.adbc.com/peers/peer1.org2.adbc.com/tls:/etc/hyperledger/fabric/tls  - peer1.org2.adbc.com:/var/hyperledger/production  working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer  command: peer node start  ports:  - 10051:10051  networks:  - test   cli:  container_name: cli  image: hyperledger/fabric-tools:latest  labels:  service: hyperledger-fabric  tty: true  stdin_open: true  environment:  - GOPATH=/opt/gopath  - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock  - FABRIC_LOGGING_SPEC=INFO  #- FABRIC_LOGGING_SPEC=DEBUG  working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer  command: /bin/bash  volumes:  - ../organizations:/opt/gopath/src/github.com/hyperledger/fabric/peer/organizations  - ../scripts:/opt/gopath/src/github.com/hyperledger/fabric/peer/scripts/  depends_on:  - peer0.org1.adbc.com  - peer0.org2.adbc.com  - peer1.org1.adbc.com  - peer1.org2.adbc.com  networks:  - test  

это конфигурация подключения

 --- name: test-network-org1 version: 1.0.0 client:  organization: Org1  connection:  timeout:  peer:  endorser: '300' organizations:  Org1:  mspid: Org1MSP  peers:  - peer0.org1.adbc.com  - peer1.org1.adbc.com  certificateAuthorities:  - ca.org1.adbc.com peers:  peer0.org1.adbc.com:  url: grpcs://localhost:7051  tlsCACerts:  pem: |  -----BEGIN CERTIFICATE-----  MIICGzCCAcGgAwIBAgIUMLjRu7uVatvrmN1BQ9Seprx5ooUwCgYIKoZIzj0EAwIw  ajELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMQ8wDQYDVQQH  EwZEdXJoYW0xFjAUBgNVBAoTDW9yZzEuYWRiYy5jb20xGTAXBgNVBAMTEGNhLm9y  ZzEuYWRiYy5jb20wHhcNMjExMDIyMTYxMDAwWhcNMzYxMDE4MTYxMDAwWjBqMQsw  CQYDVQQGEwJVUzEXMBUGA1UECBMOTm9ydGggQ2Fyb2xpbmExDzANBgNVBAcTBkR1  cmhhbTEWMBQGA1UEChMNb3JnMS5hZGJjLmNvbTEZMBcGA1UEAxMQY2Eub3JnMS5h  ZGJjLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABC/S114fxHG5/bJobeHm  mskHOl/I2BkSM 1yzH8XEXAXtSd27V57t1OJgDYHw9nSyoQWjQjIqXnakp9Cya4N  ddKjRTBDMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEBMB0GA1Ud  DgQWBBTsgWbGM94 Ux1Jn1sLIOjtP6S2HzAKBggqhkjOPQQDAgNIADBFAiEAyH1/  PdzwEn1ZzLKt7/1J3kOnZC8NbI6saKS6DX/J 5sCIAy TgDKqywS6KNLo5CupFqe  qJ2oPzdO9edv5mXUwhju  -----END CERTIFICATE-----    grpcOptions:  ssl-target-name-override: peer0.org1.adbc.com  hostnameOverride: peer0.org1.adbc.com  peer1.org1.adbc.com:  url: grpcs://localhost:8051  tlsCACerts:  pem: |  -----BEGIN CERTIFICATE-----  MIICGzCCAcGgAwIBAgIUMLjRu7uVatvrmN1BQ9Seprx5ooUwCgYIKoZIzj0EAwIw  ajELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMQ8wDQYDVQQH  EwZEdXJoYW0xFjAUBgNVBAoTDW9yZzEuYWRiYy5jb20xGTAXBgNVBAMTEGNhLm9y  ZzEuYWRiYy5jb20wHhcNMjExMDIyMTYxMDAwWhcNMzYxMDE4MTYxMDAwWjBqMQsw  CQYDVQQGEwJVUzEXMBUGA1UECBMOTm9ydGggQ2Fyb2xpbmExDzANBgNVBAcTBkR1  cmhhbTEWMBQGA1UEChMNb3JnMS5hZGJjLmNvbTEZMBcGA1UEAxMQY2Eub3JnMS5h  ZGJjLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABC/S114fxHG5/bJobeHm  mskHOl/I2BkSM 1yzH8XEXAXtSd27V57t1OJgDYHw9nSyoQWjQjIqXnakp9Cya4N  ddKjRTBDMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEBMB0GA1Ud  DgQWBBTsgWbGM94 Ux1Jn1sLIOjtP6S2HzAKBggqhkjOPQQDAgNIADBFAiEAyH1/  PdzwEn1ZzLKt7/1J3kOnZC8NbI6saKS6DX/J 5sCIAy TgDKqywS6KNLo5CupFqe  qJ2oPzdO9edv5mXUwhju  -----END CERTIFICATE-----    grpcOptions:  ssl-target-name-override: peer1.org1.adbc.com  hostnameOverride: peer1.org1.adbc.com certificateAuthorities:  ca.org1.adbc.com:  url: https://localhost:7054  caName: ca-org1  tlsCACerts:  pem:   - |  -----BEGIN CERTIFICATE-----  MIICGzCCAcGgAwIBAgIUMLjRu7uVatvrmN1BQ9Seprx5ooUwCgYIKoZIzj0EAwIw  ajELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMQ8wDQYDVQQH  EwZEdXJoYW0xFjAUBgNVBAoTDW9yZzEuYWRiYy5jb20xGTAXBgNVBAMTEGNhLm9y  ZzEuYWRiYy5jb20wHhcNMjExMDIyMTYxMDAwWhcNMzYxMDE4MTYxMDAwWjBqMQsw  CQYDVQQGEwJVUzEXMBUGA1UECBMOTm9ydGggQ2Fyb2xpbmExDzANBgNVBAcTBkR1  cmhhbTEWMBQGA1UEChMNb3JnMS5hZGJjLmNvbTEZMBcGA1UEAxMQY2Eub3JnMS5h  ZGJjLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABC/S114fxHG5/bJobeHm  mskHOl/I2BkSM 1yzH8XEXAXtSd27V57t1OJgDYHw9nSyoQWjQjIqXnakp9Cya4N  ddKjRTBDMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEBMB0GA1Ud  DgQWBBTsgWbGM94 Ux1Jn1sLIOjtP6S2HzAKBggqhkjOPQQDAgNIADBFAiEAyH1/  PdzwEn1ZzLKt7/1J3kOnZC8NbI6saKS6DX/J 5sCIAy TgDKqywS6KNLo5CupFqe  qJ2oPzdO9edv5mXUwhju  -----END CERTIFICATE-----    httpOptions:  verify: false  

This is my code:

 os.Setenv("DISCOVERY_AS_LOCALHOST", "true") wallet, err := gateway.NewFileSystemWallet("wallet") if err != nil {  fmt.Printf("Failed to create wallet: %sn", err)  os.Exit(1) }  if !wallet.Exists("appUser") {  err = populateWallet(wallet)  if err != nil {  fmt.Printf("Failed to populate wallet contents: %sn", err)  os.Exit(1)  } }  ccpPath := filepath.Join(  "..",  "organizations",  "peerOrganizations",  "org1.adbc.com",  "connection-org1.yaml", ) gw, err := gateway.Connect(  gateway.WithConfig(config.FromFile(filepath.Clean(ccpPath))),  gateway.WithIdentity(wallet, "appUser"), )  

Модули являются

 "github.com/hyperledger/fabric-sdk-go/pkg/core/config" "github.com/hyperledger/fabric-sdk-go/pkg/gateway"  

Как я могу подключить свою сеть с помощью fabric-sdk-go, как в примере?