首页 > 解决方案 > 基于自己的 hyperledger-fabric 架构创建业务网络 .bna

问题描述

我正在建立一个超级账本结构网络,其中包含 4 个组织,每个组织有 2 个 Peers 和 couchdb 实例,4 个 CA-Server 和一个 Orderer。我修改了 BYFN-Tutorial 并扩展了给定的 yaml 文件。网络完美启动,并能够使用提供的 Chaincode 示例运行 e2e 测试。现在我想根据我的 connectionProfile.json 设置一个 .bna 文件:

  1. 我创建了一个新的 AdminPeerCard -> 作品
  2. 将卡片导入作曲家 -> 作品
  3. 尝试生成 .bna composer archive create -> works
  4. 安装 .bna 并启动网络 -> 工作
  5. 作曲家网络 Ping -> 错误

错误:尝试 ping 时出错。错误:2 未知:访问被拒绝:频道 [mychannel] creator org [Org1MSP] 命令失败

当我尝试通过 Hyperledger Playground 连接时出现同样的问题

我的问题:这是用 4 个组织初始化区块链的推荐方法吗?

操作系统:Ubuntu 16.04 TLS Composer 版本:v0.20.5 HLF:1.4 Docker:18.06

禁用 TLS 以假装握手错误。

这是 docker-compose-e2e.yaml 文件:

     version: '2'
     volumes:
       orderer.example.com:
       peer0.org1.example.com:
       peer1.org1.example.com:
       peer0.org2.example.com:
       peer1.org2.example.com:
       peer0.org3.example.com:
       peer1.org3.example.com:
       peer0.org4.example.com:
       peer1.org4.example.com:

     networks:
       byfn:
     services:

       orderer.example.com:
         extends:
           file:   base/docker-compose-base.yaml
           service: orderer.example.com
         container_name: orderer.example.com
         networks:
           - byfn

       peer0.org1.example.com:
         container_name: peer0.org1.example.com
         extends:
           file:  base/docker-compose-base.yaml
           service: peer0.org1.example.com
         networks:
           - byfn

       peer1.org1.example.com:
         container_name: peer1.org1.example.com
         extends:
           file:  base/docker-compose-base.yaml
           service: peer1.org1.example.com
         networks:
           - byfn

       peer0.org2.example.com:
         container_name: peer0.org2.example.com
         extends:
           file:  base/docker-compose-base.yaml
           service: peer0.org2.example.com
         networks:
           - byfn

       peer1.org2.example.com:
         container_name: peer1.org2.example.com
         extends:
           file:  base/docker-compose-base.yaml
           service: peer1.org2.example.com
         networks:
           - byfn

       peer0.org3.example.com:
         container_name: peer0.org3.example.com
         extends:
           file:  base/docker-compose-base.yaml
           service: peer0.org3.example.com
         networks:
           - byfn

       peer1.org3.example.com:
         container_name: peer1.org3.example.com
         extends:
           file:  base/docker-compose-base.yaml
           service: peer1.org3.example.com
         networks:
           - byfn

       peer0.org4.example.com:
         container_name: peer0.org4.example.com
         extends:
           file:  base/docker-compose-base.yaml
           service: peer0.org4.example.com
         networks:
           - byfn

       peer1.org4.example.com:
         container_name: peer1.org4.example.com
         extends:
           file:  base/docker-compose-base.yaml
           service: peer1.org4.example.com
         networks:
           - byfn

这是我的 docker-compose-cli.yaml :

   version: '2'

     volumes:
       orderer.example.com:
       peer0.org1.example.com:
       peer1.org1.example.com:
       peer0.org2.example.com:
       peer1.org2.example.com:
       peer0.org3.example.com:
       peer1.org3.example.com:
       peer0.org4.example.com:
       peer1.org4.example.com:


     networks:
       byfn:

     services:


       ca.org1.example.com:
         extends:
           file: base/docker-compose-base.yaml
           service: ca.org1.example.com
         container_name: ca.org1.example.com
         networks: 
           - byfn

       ca.org2.example.com:
         extends:
           file: base/docker-compose-base.yaml
           service: ca.org2.example.com
         container_name: ca.org2.example.com
         networks: 
           - byfn

       ca.org3.example.com:
         extends:
           file: base/docker-compose-base.yaml
           service: ca.org3.example.com
         container_name: ca.org3.example.com
         networks: 
           - byfn

       ca.org4.example.com:
         extends:
           file: base/docker-compose-base.yaml
           service: ca.org4.example.com
         container_name: ca.org4.example.com
         networks: 
           - byfn


       orderer.example.com:
         extends:
           file:   base/docker-compose-base.yaml
           service: orderer.example.com
         container_name: orderer.example.com
         networks:
           - byfn

       peer0.org1.example.com:
         container_name: peer0.org1.example.com
         extends:
           file:  base/docker-compose-base.yaml
           service: peer0.org1.example.com
         networks:
           - byfn

       peer1.org1.example.com:
         container_name: peer1.org1.example.com
         extends:
           file:  base/docker-compose-base.yaml
           service: peer1.org1.example.com
         networks:
           - byfn

       peer0.org2.example.com:
         container_name: peer0.org2.example.com
         extends:
           file:  base/docker-compose-base.yaml
           service: peer0.org2.example.com
         networks:
           - byfn

       peer1.org2.example.com:
         container_name: peer1.org2.example.com
         extends:
           file:  base/docker-compose-base.yaml
           service: peer1.org2.example.com
         networks:
           - byfn

       peer0.org3.example.com:
         container_name: peer0.org3.example.com
         extends:
           file:  base/docker-compose-base.yaml
           service: peer0.org3.example.com
         networks:
           - byfn

       peer1.org3.example.com:
         container_name: peer1.org3.example.com
         extends:
           file:  base/docker-compose-base.yaml
           service: peer1.org3.example.com
         networks:
           - byfn

       peer0.org4.example.com:
         container_name: peer0.org4.example.com
         extends:
           file:  base/docker-compose-base.yaml
           service: peer0.org4.example.com
         networks:
           - byfn

       peer1.org4.example.com:
         container_name: peer1.org4.example.com
         extends:
           file:  base/docker-compose-base.yaml
           service: peer1.org4.example.com
         networks:
           - byfn

       cli:
         container_name: cli
         image: hyperledger/fabric-tools:$IMAGE_TAG
         tty: true
         stdin_open: true
         environment:
           - GOPATH=/opt/gopath
           - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
           #- FABRIC_LOGGING_SPEC=DEBUG
           - FABRIC_LOGGING_SPEC=INFO
           - CORE_PEER_ID=cli
           - CORE_PEER_ADDRESS=peer0.org1.example.com:7051
           - CORE_PEER_LOCALMSPID=Org1MSP
           - CORE_PEER_TLS_ENABLED=false
         #  - CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt
         # - CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key
         #  - CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
           - CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
         working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
         command: /bin/bash
         volumes:
             - /var/run/:/host/var/run/
             - ./../chaincode/:/opt/gopath/src/github.com/chaincode
             - ./crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/
             - ./scripts:/opt/gopath/src/github.com/hyperledger/fabric/peer/scripts/
             - ./channel-artifacts:/opt/gopath/src/github.com/hyperledger/fabric/peer/channel-artifacts
         depends_on:
           - orderer.example.com
           - peer0.org1.example.com
           - peer1.org1.example.com
           - peer0.org2.example.com
           - peer1.org2.example.com
           - peer0.org3.example.com
           - peer1.org3.example.com
           - peer0.org4.example.com
           - peer1.org4.example.com

         networks:
           - byfn

这是我的 docker-composerbase.yaml:

    version: '2'

services:

  ca.org1.example.com:
    image: hyperledger/fabric-ca:amd64-1.4.0-rc2 
    environment:
      - FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server
      - FABRIC_CA_SERVER_CA_NAME=ca.org1.example.com
    #  - FABRIC_CA_SERVER_TLS_ENABLED=true
    #  - FABRIC_CA_SERVER_TLS_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org1.example.com-cert.pem
    #  - FABRIC_CA_SERVER_TLS_KEYFILE=/etc/hyperledger/fabric-ca-server-config/CA1_PRIVATE_KEY
    #  - FABRIC_CA_SERVER_TLS_KEYFILE=/etc/hyperledger/fabric-ca-server-config/*_sk
    ports:
      - "7054:7054"
    #command: sh -c 'fabric-ca-server start --ca.certfile /etc/hyperledger/fabric-ca-server-config/ca.org1.example.com-cert.pem --ca.keyfile /etc/hyperledger/fabric-ca-server-config/CA1_PRIVATE_KEY -b admin:adminpw -d'
    #command: sh -c 'fabric-ca-server start --ca.certfile /etc/hyperledger/fabric-ca-server-config/ca.org1.example.com-cert.pem --ca.keyfile /etc/hyperledger/fabric-ca-server-config/*_sk -b admin:adminpw -d'
    command: sh -c 'fabric-ca-server start -b admin:adminpw'
    volumes:
      - ./crypto-config/peerOrganizations/org1.example.com/ca/:/etc/hyperledger/fabric-ca-server-config
    container_name: ca.org1.example.com
    networks:
      - byfn

  ca.org2.example.com:
    image: hyperledger/fabric-ca:amd64-1.4.0-rc2 
    environment:
      - FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server
      - FABRIC_CA_SERVER_CA_NAME=ca.org2.example.com
    #  - FABRIC_CA_SERVER_TLS_ENABLED=true
    #  - FABRIC_CA_SERVER_TLS_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org2.example.com-cert.pem
    #  - FABRIC_CA_SERVER_TLS_KEYFILE=/etc/hyperledger/fabric-ca-server-config/CA2_PRIVATE_KEY
    ports:
      - "8054:7054"
    #command: sh -c 'fabric-ca-server start --ca.certfile /etc/hyperledger/fabric-ca-server-config/ca.org2.example.com-cert.pem --ca.keyfile /etc/hyperledger/fabric-ca-server-config/CA2_PRIVATE_KEY -b admin:adminpw -d'
    command: sh -c 'fabric-ca-server start -b admin:adminpw'
    volumes:
      - ./crypto-config/peerOrganizations/org2.example.com/ca/:/etc/hyperledger/fabric-ca-server-config
    container_name: ca.org2.example.com
    networks:
      - byfn

  ca.org3.example.com:
    image: hyperledger/fabric-ca:amd64-1.4.0-rc2 
    environment:
      - FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server
      - FABRIC_CA_SERVER_CA_NAME=ca.org3.example.com
    #  - FABRIC_CA_SERVER_TLS_ENABLED=true
    #  - FABRIC_CA_SERVER_TLS_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org3.example.com-cert.pem
    #  - FABRIC_CA_SERVER_TLS_KEYFILE=/etc/hyperledger/fabric-ca-server-config/CA3_PRIVATE_KEY
    ports:
      - "9054:7054"
    #command: sh -c 'fabric-ca-server start --ca.certfile /etc/hyperledger/fabric-ca-server-config/ca.org3.example.com-cert.pem --ca.keyfile /etc/hyperledger/fabric-ca-server-config/CA3_PRIVATE_KEY -b admin:adminpw -d'
    command: sh -c 'fabric-ca-server start -b admin:adminpw'
    volumes:
      - ./crypto-config/peerOrganizations/org3.example.com/ca/:/etc/hyperledger/fabric-ca-server-config
    container_name: ca.org3.example.com
    networks:
      - byfn

  ca.org4.example.com:
    image: hyperledger/fabric-ca:amd64-1.4.0-rc2 
    environment:
      - FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server
      - FABRIC_CA_SERVER_CA_NAME=ca.org4.example.com
    #  - FABRIC_CA_SERVER_TLS_ENABLED=true
    #  - FABRIC_CA_SERVER_TLS_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org4.example.com-cert.pem
    #  - FABRIC_CA_SERVER_TLS_KEYFILE=/etc/hyperledger/fabric-ca-server-config/CA4_PRIVATE_KEY
    ports:
      - "10054:7054"
    #command: sh -c 'fabric-ca-server start --ca.certfile /etc/hyperledger/fabric-ca-server-config/ca.org4.example.com-cert.pem --ca.keyfile /etc/hyperledger/fabric-ca-server-config/CA4_PRIVATE_KEY -b admin:adminpw -d'
    command: sh -c 'fabric-ca-server start -b admin:adminpw'
    volumes:
      - ./crypto-config/peerOrganizations/org4.example.com/ca/:/etc/hyperledger/fabric-ca-server-config
    container_name: ca.org4.example.com
    networks:
      - byfn



  orderer.example.com:
    container_name: orderer.example.com
    image: hyperledger/fabric-orderer:$IMAGE_TAG
    environment:
      - FABRIC_LOGGING_SPEC=debug
      - ORDERER_GENERAL_LOGLEVEL=debug
      - ORDERER_GENERAL_LISTENADDRESS=0.0.0.0
      - ORDERER_GENERAL_GENESISMETHOD=file
      - ORDERER_GENERAL_GENESISFILE=/var/hyperledger/orderer/orderer.genesis.block
      - ORDERER_GENERAL_LOCALMSPID=OrdererMSP
      - ORDERER_GENERAL_LOCALMSPDIR=/var/hyperledger/orderer/msp
      # enabled TLS
      - ORDERER_GENERAL_TLS_ENABLED=false
    #  - 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_KAFKA_TOPIC_REPLICATIONFACTOR=1
    #  - ORDERER_KAFKA_VERBOSE=true
    working_dir: /opt/gopath/src/github.com/hyperledger/fabric
    command: orderer
    volumes:
    - ../channel-artifacts/genesis.block:/var/hyperledger/orderer/orderer.genesis.block
    - ../crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp:/var/hyperledger/orderer/msp
    - ../crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/:/var/hyperledger/orderer/tls
    - orderer.example.com:/var/hyperledger/production/orderer
    ports:
      - 7050:7050

  peer0.org1.example.com:
    container_name: peer0.org1.example.com
    extends:
      file: peer-base.yaml
      service: peer-base
    environment:
      - CORE_PEER_ID=peer0.org1.example.com
      - CORE_PEER_ADDRESS=peer0.org1.example.com:7051
      - CORE_PEER_GOSSIP_BOOTSTRAP=peer1.org1.example.com:7051
      - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051
      - CORE_PEER_LOCALMSPID=Org1MSP
    volumes:
        - /var/run/:/host/var/run/
        - ../crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp:/etc/hyperledger/fabric/msp
        - ../crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls:/etc/hyperledger/fabric/tls
        - peer0.org1.example.com:/var/hyperledger/production
    ports:
      - 7051:7051
      - 7053:7053

  peer1.org1.example.com:
    container_name: peer1.org1.example.com
    extends:
      file: peer-base.yaml
      service: peer-base
    environment:
      - CORE_PEER_ID=peer1.org1.example.com
      - CORE_PEER_ADDRESS=peer1.org1.example.com:7051
      - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org1.example.com:7051
      - CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org1.example.com:7051
      - CORE_PEER_LOCALMSPID=Org1MSP
    volumes:
        - /var/run/:/host/var/run/
        - ../crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp:/etc/hyperledger/fabric/msp
        - ../crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls:/etc/hyperledger/fabric/tls
        - peer1.org1.example.com:/var/hyperledger/production
    ports:
      - 8051:7051
      - 8053:7053

  peer0.org2.example.com:
    container_name: peer0.org2.example.com
    extends:
      file: peer-base.yaml
      service: peer-base
    environment:
      - CORE_PEER_ID=peer0.org2.example.com
      - CORE_PEER_ADDRESS=peer0.org2.example.com:7051
      - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org2.example.com:7051
      - CORE_PEER_GOSSIP_BOOTSTRAP=peer1.org2.example.com:7051
      - CORE_PEER_LOCALMSPID=Org2MSP
    volumes:
        - /var/run/:/host/var/run/
        - ../crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp:/etc/hyperledger/fabric/msp
        - ../crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls:/etc/hyperledger/fabric/tls
        - peer0.org2.example.com:/var/hyperledger/production
    ports:
      - 9051:7051
      - 9053:7053

  peer1.org2.example.com:
    container_name: peer1.org2.example.com
    extends:
      file: peer-base.yaml
      service: peer-base
    environment:
      - CORE_PEER_ID=peer1.org2.example.com
      - CORE_PEER_ADDRESS=peer1.org2.example.com:7051
      - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org2.example.com:7051
      - CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org2.example.com:7051
      - CORE_PEER_LOCALMSPID=Org2MSP
    volumes:
        - /var/run/:/host/var/run/
        - ../crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp:/etc/hyperledger/fabric/msp
        - ../crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls:/etc/hyperledger/fabric/tls
        - peer1.org2.example.com:/var/hyperledger/production
    ports:
      - 10051:7051
      - 10053:7053



  peer0.org3.example.com:
    container_name: peer0.org3.example.com
    extends:
      file: peer-base.yaml
      service: peer-base
    environment:
      - CORE_PEER_ID=peer0.org3.example.com
      - CORE_PEER_ADDRESS=peer0.org3.example.com:7051
      - CORE_PEER_GOSSIP_BOOTSTRAP=peer1.org3.example.com:7051
      - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org3.example.com:7051
      - CORE_PEER_LOCALMSPID=Org3MSP
    volumes:
        - /var/run/:/host/var/run/
        - ../crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp:/etc/hyperledger/fabric/msp
        - ../crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls:/etc/hyperledger/fabric/tls
        - peer0.org3.example.com:/var/hyperledger/production
    ports:
      - 11051:7051
      - 11053:7053

  peer1.org3.example.com:
    container_name: peer1.org3.example.com
    extends:
      file: peer-base.yaml
      service: peer-base
    environment:
      - CORE_PEER_ID=peer1.org3.example.com
      - CORE_PEER_ADDRESS=peer1.org3.example.com:7051
      - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org3.example.com:7051
      - CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org3.example.com:7051
      - CORE_PEER_LOCALMSPID=Org3MSP
    volumes:
        - /var/run/:/host/var/run/
        - ../crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/msp:/etc/hyperledger/fabric/msp
        - ../crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/tls:/etc/hyperledger/fabric/tls
        - peer1.org3.example.com:/var/hyperledger/production

这是我的 peer-base.yaml:

    version: '2'

    services:
      peer-base:
        image: hyperledger/fabric-peer:$IMAGE_TAG
        environment:
          - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
          # the following setting starts chaincode containers on the same
          # bridge network as the peers
          # https://docs.docker.com/compose/networking/
          - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=${COMPOSE_PROJECT_NAME}_byfn
          #- FABRIC_LOGGING_SPEC=INFO
          - FABRIC_LOGGING_SPEC=DEBUG
          - CORE_PEER_TLS_ENABLED=false
          - CORE_PEER_GOSSIP_USELEADERELECTION=true
          - CORE_PEER_GOSSIP_ORGLEADER=false
          - CORE_PEER_PROFILE_ENABLED=true
        #  - 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
        working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
        command: peer node start

这是我的connectionProfile.json:

{
    "name": "byfn-network",
    "x-type": "hlfv1",
    "x-commitTimeout": 1200,
    "version": "1.0.0",
    "client": {
        "organization": "Org1",
        "connection": {
            "timeout": {
                "peer": {
                    "endorser": "1200",
                    "eventHub": "1200",
                    "eventReg": "1200"
                },
                "orderer": "1200"
            }
        }
    },
    "channels": {
        "mychannel": {
            "orderers": [
                "orderer.example.com"
            ],
            "peers": {
                "peer0.org1.example.com": {
                    "endorsingPeer": true,
                    "chaincodeQuery": true,
                    "eventSource": true
                },
                "peer1.org1.example.com": {
                    "endorsingPeer": true,
                    "chaincodeQuery": true,
                    "eventSource": true
                },
                "peer0.org2.example.com": {
                    "endorsingPeer": true,
                    "chaincodeQuery": true,
                    "eventSource": true
                },
                "peer1.org2.example.com": {
                    "endorsingPeer": true,
                    "chaincodeQuery": true,
                    "eventSource": true
                },
                "peer0.org3.example.com": {
                    "endorsingPeer": true,
                    "chaincodeQuery": true,
                    "eventSource": true
                },
                "peer1.org3.example.com": {
                    "endorsingPeer": true,
                    "chaincodeQuery": true,
                    "eventSource": true
                },
                "peer0.org4.example.com": {
                    "endorsingPeer": true,
                    "chaincodeQuery": true,
                    "eventSource": true
                },
                "peer1.org4.example.com": {
                    "endorsingPeer": true,
                    "chaincodeQuery": true,
                    "eventSource": true
                }
            }
        }
    },
    "organizations": {
        "Org1": {
            "mspid": "Org1MSP",
            "peers": [
                "peer0.org1.example.com",
                "peer1.org1.example.com"
            ],
            "certificateAuthorities": [
                "ca.org1.example.com"
            ]
        },
        "Org2": {
            "mspid": "Org2MSP",
            "peers": [
                "peer0.org2.example.com",
                "peer1.org2.example.com"
            ],
            "certificateAuthorities": [
                "ca.org2.example.com"
            ]
        },
        "Org3": {
            "mspid": "Org3MSP",
            "peers": [
                "peer0.org3.example.com",
                "peer1.org3.example.com"
            ],
            "certificateAuthorities": [
                "ca.org3.example.com"
            ]
        },
        "Org4": {
            "mspid": "Org4MSP",
            "peers": [
                "peer0.org4.example.com",
                "peer1.org4.example.com"
            ],
            "certificateAuthorities": [
                "ca.org4.example.com"
            ]
        }
    },
    "orderers": {
        "orderer.example.com": {
            "url": "grpc://localhost:7050"
        }
    },
    "peers": {
        "peer0.org1.example.com": {
            "url": "grpc://localhost:7051",
            "eventUrl": "grpc://localhost:7053"
        },
        "peer1.org1.example.com": {
            "url": "grpc://localhost:8051",
            "eventUrl": "grpc://localhost:8053"
        },
        "peer0.org2.example.com": {
            "url": "grpc://localhost:9051",
            "eventUrl": "grpc://localhost:9053"
        },
        "peer1.org2.example.com": {
            "url": "grpc://localhost:10051",
            "eventUrl": "grpc://localhost:10053"
        },
        "peer0.org3.example.com": {
            "url": "grpc://localhost:11051",
            "eventUrl": "grpc://localhost:11053"
        },
        "peer1.org3.example.com": {
            "url": "grpc://localhost:12051",
            "eventUrl": "grpc://localhost:12053"
        },
        "peer0.org4.example.com": {
            "url": "grpc://localhost:13051",
            "eventUrl": "grpc://localhost:13053"
        },
        "peer1.org4.example.com": {
            "url": "grpc://localhost:14051",
            "eventUrl": "grpc://localhost:14053"
        }
    },
    "certificateAuthorities": {
        "ca.org1.example.com": {
            "url": "http://localhost:7054",
            "caName": "ca.org1.example.com",
            "httpOptions": {
                "verify": false
            }
        },
        "ca.org2.example.com": {
            "url": "http://localhost:8054",
            "caName": "ca.org2.example.com",
            "httpOptions": {
                "verify": false
            }
        },
        "ca.org3.example.com": {
            "url": "http://localhost:9054",
            "caName": "ca.org3.example.com",
            "httpOptions": {
                "verify": false
            }
        },
        "ca.org4.example.com": {
            "url": "http://localhost:10054",
            "caName": "ca.org4.example.com",
            "httpOptions": {
                "verify": false
            }
        }
    }
}

预期结果: - 使用我的网络定义(4 个 Orgs,8 个 Peers)创建 .bna - 启动 rest-server 以通过 Web 界面与区块链交互

标签: hyperledger-fabrichyperledgerhyperledger-composer

解决方案


推荐阅读