• Fabric创建通道、组织加入通道


    Fabric创建通道、加入组织

    1. 生成各个组织以及Orderer的证书材料(使用Fabric-CA 工具生成)

    2. 生成Orderer的系统通道

      # myconfigtx 目录下为configtx.yaml 文件,详细内容见下
      export FABRIC_CFG_PATH=${PWD}/myconfigtx 
      
      # 生成的创世块的名称要与 orderer 的docker-compose 挂载的文件名一致, - ../system-genesis-block/genesis.block:/var/hyperledger/orderer/orderer.genesis.block
      configtxgen -profile FaddeiOrdererGenesis -channelID faddei-system-channel -outputBlock ./system-genesis-block/genesis.block 
      

    3. 生成应用通道

      # Faddei 为 configtx.yaml 应用通道的名称
      configtxgen -profile FaddeiChannel -outputCreateChannelTx ./channel-artifacts/faddeichannel.tx -channelID faddeichannel
      

    4. 启动Peer节点及Orderer节点

      docker-compose -f docker/docker-compose-ca.yaml up -d
      docker-compose -f docker/docker-compose-test-net.yaml up -d
      
    5. 反复执行几次 docker ps -a 确保所有容器正常启动,并且容器不会异常退出(如果第2步中生成的创世块的名称,跟orderer的docker-compose 挂在文件的名称不对应的话,orderer节点会挂掉),图中不含ca节点

    6. 切换到Org1的管理员

      export CORE_PEER_TLS_ENABLED=true
      export CORE_PEER_LOCALMSPID="Org1MSP"
      export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
      export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
      export CORE_PEER_ADDRESS=localhost:7051
      
      export PATH=$PATH:$PWD/../bin/
      
      export FABRIC_CFG_PATH=$PWD/../config/
      export ORDERER_CA=${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
      
    7. 执行 peer channel list 检查,可以看到Org1 的 peer 当前尚未加入任何通道

    8. 最后创建通道

      # 需要指定 orderer的地址, 通道名称第3步中设置的名称 faddeichannel,以及 faddeichannel.tx,orderer 的证书
      peer channel create -o localhost:7050  --ordererTLSHostnameOverride orderer.example.com -c faddeichannel -f ./channel-artifacts/faddeichannel.tx --outputBlock ./channel-artifacts/faddeichannel.block --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
      

    9. 将Peer节点加入通道,并检查是否成功

      peer channel join -b ./channel-artifacts/faddeichannel.block
      peer channel list
      

    10. 以上为从零创建通道的步骤

    以下为configtx.yaml 文件内容,其中只包括一个组织,一个Orderer节点。其他组织加入通道可通过SDK或者脚本完成

    # Copyright IBM Corp. All Rights Reserved.
    #
    # SPDX-License-Identifier: Apache-2.0
    #
    
    ---
    ################################################################################
    #
    #   Section: Organizations
    #
    #   - This section defines the different organizational identities which will
    #   be referenced later in the configuration.
    #
    ################################################################################
    Organizations:
    
        # SampleOrg defines an MSP using the sampleconfig.  It should never be used
        # in production but may be used as a template for other definitions
        - &OrdererOrg
            # DefaultOrg defines the organization which is used in the sampleconfig
            # of the fabric.git development environment
            Name: OrdererOrg
    
            # ID to load the MSP definition as
            ID: OrdererMSP
    
            # MSPDir is the filesystem path which contains the MSP configuration
            MSPDir: ../organizations/ordererOrganizations/example.com/msp
    
            # Policies defines the set of policies at this level of the config tree
            # For organization policies, their canonical path is usually
            #   /Channel/<Application|Orderer>/<OrgName>/<PolicyName>
            Policies:
                Readers:
                    Type: Signature
                    Rule: "OR('OrdererMSP.member')"
                Writers:
                    Type: Signature
                    Rule: "OR('OrdererMSP.member')"
                Admins:
                    Type: Signature
                    Rule: "OR('OrdererMSP.admin')"
    
            OrdererEndpoints:
                - orderer.example.com:7050
    
        - &Org1
            # DefaultOrg defines the organization which is used in the sampleconfig
            # of the fabric.git development environment
            Name: Org1MSP
    
            # ID to load the MSP definition as
            ID: Org1MSP
    
            MSPDir: ../organizations/peerOrganizations/org1.example.com/msp
    
            # Policies defines the set of policies at this level of the config tree
            # For organization policies, their canonical path is usually
            #   /Channel/<Application|Orderer>/<OrgName>/<PolicyName>
            Policies:
                Readers:
                    Type: Signature
                    Rule: "OR('Org1MSP.admin', 'Org1MSP.peer', 'Org1MSP.client')"
                Writers:
                    Type: Signature
                    Rule: "OR('Org1MSP.admin', 'Org1MSP.client')"
                Admins:
                    Type: Signature
                    Rule: "OR('Org1MSP.admin')"
                Endorsement:
                    Type: Signature
                    Rule: "OR('Org1MSP.peer')"
    
            # leave this flag set to true.
            AnchorPeers:
                # AnchorPeers defines the location of peers which can be used
                # for cross org gossip communication.  Note, this value is only
                # encoded in the genesis block in the Application section context
                - Host: peer0.org1.example.com
                  Port: 7051
    
    
    ################################################################################
    #
    #   SECTION: Capabilities
    #
    #   - This section defines the capabilities of fabric network. This is a new
    #   concept as of v1.1.0 and should not be utilized in mixed networks with
    #   v1.0.x peers and orderers.  Capabilities define features which must be
    #   present in a fabric binary for that binary to safely participate in the
    #   fabric network.  For instance, if a new MSP type is added, newer binaries
    #   might recognize and validate the signatures from this type, while older
    #   binaries without this support would be unable to validate those
    #   transactions.  This could lead to different versions of the fabric binaries
    #   having different world states.  Instead, defining a capability for a channel
    #   informs those binaries without this capability that they must cease
    #   processing transactions until they have been upgraded.  For v1.0.x if any
    #   capabilities are defined (including a map with all capabilities turned off)
    #   then the v1.0.x peer will deliberately crash.
    #
    ################################################################################
    Capabilities:
        # Channel capabilities apply to both the orderers and the peers and must be
        # supported by both.
        # Set the value of the capability to true to require it.
        Channel: &ChannelCapabilities
            # V2_0 capability ensures that orderers and peers behave according
            # to v2.0 channel capabilities. Orderers and peers from
            # prior releases would behave in an incompatible way, and are therefore
            # not able to participate in channels at v2.0 capability.
            # Prior to enabling V2.0 channel capabilities, ensure that all
            # orderers and peers on a channel are at v2.0.0 or later.
            V2_0: true
    
        # Orderer capabilities apply only to the orderers, and may be safely
        # used with prior release peers.
        # Set the value of the capability to true to require it.
        Orderer: &OrdererCapabilities
            # V2_0 orderer capability ensures that orderers behave according
            # to v2.0 orderer capabilities. Orderers from
            # prior releases would behave in an incompatible way, and are therefore
            # not able to participate in channels at v2.0 orderer capability.
            # Prior to enabling V2.0 orderer capabilities, ensure that all
            # orderers on channel are at v2.0.0 or later.
            V2_0: true
    
        # Application capabilities apply only to the peer network, and may be safely
        # used with prior release orderers.
        # Set the value of the capability to true to require it.
        Application: &ApplicationCapabilities
            # V2_0 application capability ensures that peers behave according
            # to v2.0 application capabilities. Peers from
            # prior releases would behave in an incompatible way, and are therefore
            # not able to participate in channels at v2.0 application capability.
            # Prior to enabling V2.0 application capabilities, ensure that all
            # peers on channel are at v2.0.0 or later.
            V2_0: true
    
    ################################################################################
    #
    #   SECTION: Application
    #
    #   - This section defines the values to encode into a config transaction or
    #   genesis block for application related parameters
    #
    ################################################################################
    Application: &ApplicationDefaults
    
        # Organizations is the list of orgs which are defined as participants on
        # the application side of the network
        Organizations:
    
        # Policies defines the set of policies at this level of the config tree
        # For Application policies, their canonical path is
        #   /Channel/Application/<PolicyName>
        Policies:
            Readers:
                Type: ImplicitMeta
                Rule: "ANY Readers"
            Writers:
                Type: ImplicitMeta
                Rule: "ANY Writers"
            Admins:
                Type: ImplicitMeta
                Rule: "MAJORITY Admins"
            LifecycleEndorsement:
                Type: ImplicitMeta
                Rule: "MAJORITY Endorsement"
            Endorsement:
                Type: ImplicitMeta
                Rule: "MAJORITY Endorsement"
    
        Capabilities:
            <<: *ApplicationCapabilities
    ################################################################################
    #
    #   SECTION: Orderer
    #
    #   - This section defines the values to encode into a config transaction or
    #   genesis block for orderer related parameters
    #
    ################################################################################
    Orderer: &OrdererDefaults
    
        # Orderer Type: The orderer implementation to start
        OrdererType: etcdraft
    
        EtcdRaft:
            Consenters:
            - Host: orderer.example.com
              Port: 7050
              ClientTLSCert: ../organizations/ordererOrganizations/example.com/orderers/orderer.example.com/tls/server.crt
              ServerTLSCert: ../organizations/ordererOrganizations/example.com/orderers/orderer.example.com/tls/server.crt
    
        # Batch Timeout: The amount of time to wait before creating a batch
        BatchTimeout: 2s
    
        # Batch Size: Controls the number of messages batched into a block
        BatchSize:
    
            # Max Message Count: The maximum number of messages to permit in a batch
            MaxMessageCount: 10
    
            # Absolute Max Bytes: The absolute maximum number of bytes allowed for
            # the serialized messages in a batch.
            AbsoluteMaxBytes: 99 MB
    
            # Preferred Max Bytes: The preferred maximum number of bytes allowed for
            # the serialized messages in a batch. A message larger than the preferred
            # max bytes will result in a batch larger than preferred max bytes.
            PreferredMaxBytes: 512 KB
    
        # Organizations is the list of orgs which are defined as participants on
        # the orderer side of the network
        Organizations:
    
        # Policies defines the set of policies at this level of the config tree
        # For Orderer policies, their canonical path is
        #   /Channel/Orderer/<PolicyName>
        Policies:
            Readers:
                Type: ImplicitMeta
                Rule: "ANY Readers"
            Writers:
                Type: ImplicitMeta
                Rule: "ANY Writers"
            Admins:
                Type: ImplicitMeta
                Rule: "MAJORITY Admins"
            # BlockValidation specifies what signatures must be included in the block
            # from the orderer for the peer to validate it.
            BlockValidation:
                Type: ImplicitMeta
                Rule: "ANY Writers"
    
    ################################################################################
    #
    #   CHANNEL
    #
    #   This section defines the values to encode into a config transaction or
    #   genesis block for channel related parameters.
    #
    ################################################################################
    Channel: &ChannelDefaults
        # Policies defines the set of policies at this level of the config tree
        # For Channel policies, their canonical path is
        #   /Channel/<PolicyName>
        Policies:
            # Who may invoke the 'Deliver' API
            Readers:
                Type: ImplicitMeta
                Rule: "ANY Readers"
            # Who may invoke the 'Broadcast' API
            Writers:
                Type: ImplicitMeta
                Rule: "ANY Writers"
            # By default, who may modify elements at this config level
            Admins:
                Type: ImplicitMeta
                Rule: "MAJORITY Admins"
    
        # Capabilities describes the channel level capabilities, see the
        # dedicated Capabilities section elsewhere in this file for a full
        # description
        Capabilities:
            <<: *ChannelCapabilities
    
    ################################################################################
    #
    #   Profile
    #
    #   - Different configuration profiles may be encoded here to be specified
    #   as parameters to the configtxgen tool
    #
    ################################################################################
    Profiles:
    
        FaddeiOrdererGenesis:
            <<: *ChannelDefaults
            Orderer:
                <<: *OrdererDefaults
                Organizations:
                    - *OrdererOrg
                Capabilities:
                    <<: *OrdererCapabilities
            Consortiums:
            	# FaddeiConsortium 为联盟名称
                FaddeiConsortium:
                    Organizations:
                        - *Org1
        # FaddeiChannel 为应用通道名称
        FaddeiChannel:
            Consortium: FaddeiConsortium
            <<: *ChannelDefaults
            Application:
                <<: *ApplicationDefaults
                Organizations:
                    - *Org1
                Capabilities:
                    <<: *ApplicationCapabilities
    
  • 相关阅读:
    python的进阶--爬虫小试
    【centos 7】搭FTP服务和web访问
    centos 7 安装python3.5
    centos 6.5 安装mysql 5.6.35--libc.so.6(GLIBC_2.14)(64bit)
    windows 10 下安装python 2.7
    centos7-硬盘坏道检测
    centos7 默认进入系统命令行模式修改
    zabbix安装配置(2.4.5)
    Centos 7 mysql 安装使用记
    docker部署angular和asp.net core组成的前后端分离项目
  • 原文地址:https://www.cnblogs.com/faddei/p/14273203.html
Copyright © 2020-2023  润新知