搭建第一个fabric网络(版本1.4.2)——(四)配置生成

配置生成

以下操作均于centos7.6虚拟机环境使用root用户完成,可以根据具体需求进行选择实体机与不同用户选择

该教程(搭建第一个fabric网络1.4.2版本)基本完全基于官方文档进行,适用于缺乏了解的新手与感兴趣的人群


官方文档地址:


1.cryptogen生成证书

使用cryptogen为我们的网络实体生成各种加密材料( x509 证书和签名秘钥)。这些证书是身份的代表,在实体之间通信和交易的时候,它们允许对身份验证进行签名和验证。

首先编辑crypto-config.yaml文件,如下:(这里不对文件内容作解释,之后有专门章节解释

# Copyright IBM Corp. All Rights Reserved.
#
# SPDX-License-Identifier: Apache-2.0
#

# ---------------------------------------------------------------------------
# "OrdererOrgs" - Definition of organizations managing orderer nodes
# ---------------------------------------------------------------------------
OrdererOrgs: #orderer组织,生成5个orderer的身份证明
  - Name: Orderer
    Domain: orderer.com
    Specs:
      - Hostname: orderer0
      - Hostname: orderer1
      - Hostname: orderer2
      - Hostname: orderer3
      - Hostname: orderer4
  
# ---------------------------------------------------------------------------
# "PeerOrgs" - Definition of organizations managing peer nodes
# ---------------------------------------------------------------------------
PeerOrgs: #peer组织,各1个节点与用户
  - Name: Org1
    Domain: org1.com
    EnableNodeOUs: true
    Template:
      Count: 1
    Users:
      Count: 1
  - Name: Org2
    Domain: org2.com
    EnableNodeOUs: true
    Template:
      Count: 1
    Users:
      Count: 1

使用命令进行生成:

# 在当前目录执行,执行完毕会在当前目录生成包含身份证明数据(x509 证书和签名秘钥)的目录
cryptogen generate --config=./crypto-config.yaml

生成的文件目录结构如下:

crypto-config
├── ordererOrganizations
│   └── orderer.com
│       ├── ca
│       │   ├── ca.orderer.com-cert.pem
│       │   └── cb40525e702e671eca53aa829ce166dccb4e64df45703902cbe13060c2cb1cfb_sk
│       ├── msp
│       │   ├── admincerts
│       │   │   └── Admin@orderer.com-cert.pem
│       │   ├── cacerts
│       │   │   └── ca.orderer.com-cert.pem
│       │   └── tlscacerts
│       │       └── tlsca.orderer.com-cert.pem
│       ├── orderers
│       │   ├── orderer0.orderer.com
│       │   │   ├── msp
│       │   │   │   ├── admincerts
│       │   │   │   │   └── Admin@orderer.com-cert.pem
│       │   │   │   ├── cacerts
│       │   │   │   │   └── ca.orderer.com-cert.pem
│       │   │   │   ├── keystore
│       │   │   │   │   └── b6853a1df22aa09f409731486ad9eb5682903a0cad32869527b5a8e4c92305f1_sk
│       │   │   │   ├── signcerts
│       │   │   │   │   └── orderer0.orderer.com-cert.pem
│       │   │   │   └── tlscacerts
│       │   │   │       └── tlsca.orderer.com-cert.pem
│       │   │   └── tls
│       │   │       ├── ca.crt
│       │   │       ├── server.crt
│       │   │       └── server.key
│       │   ├── orderer1.orderer.com
│       │   │   ├── msp
│       │   │   │   ├── admincerts
│       │   │   │   │   └── Admin@orderer.com-cert.pem
│       │   │   │   ├── cacerts
│       │   │   │   │   └── ca.orderer.com-cert.pem
│       │   │   │   ├── keystore
│       │   │   │   │   └── 17ee9e7c96496dbb631249a72d1208735c517bd9f151f2363b629c19bbcdd722_sk
│       │   │   │   ├── signcerts
│       │   │   │   │   └── orderer1.orderer.com-cert.pem
│       │   │   │   └── tlscacerts
│       │   │   │       └── tlsca.orderer.com-cert.pem
│       │   │   └── tls
│       │   │       ├── ca.crt
│       │   │       ├── server.crt
│       │   │       └── server.key
│       │   ├── orderer2.orderer.com
│       │   │   ├── msp
│       │   │   │   ├── admincerts
│       │   │   │   │   └── Admin@orderer.com-cert.pem
│       │   │   │   ├── cacerts
│       │   │   │   │   └── ca.orderer.com-cert.pem
│       │   │   │   ├── keystore
│       │   │   │   │   └── 67cb0f79598c93ad1e9feeeb4fcc91f56b6d2883f5af2dd759ef0904c79b3e42_sk
│       │   │   │   ├── signcerts
│       │   │   │   │   └── orderer2.orderer.com-cert.pem
│       │   │   │   └── tlscacerts
│       │   │   │       └── tlsca.orderer.com-cert.pem
│       │   │   └── tls
│       │   │       ├── ca.crt
│       │   │       ├── server.crt
│       │   │       └── server.key
│       │   ├── orderer3.orderer.com
│       │   │   ├── msp
│       │   │   │   ├── admincerts
│       │   │   │   │   └── Admin@orderer.com-cert.pem
│       │   │   │   ├── cacerts
│       │   │   │   │   └── ca.orderer.com-cert.pem
│       │   │   │   ├── keystore
│       │   │   │   │   └── 0eb958cd99142e4d3c3828f9e1b8b71e88fabc4bd7e367ca317fb8a387773651_sk
│       │   │   │   ├── signcerts
│       │   │   │   │   └── orderer3.orderer.com-cert.pem
│       │   │   │   └── tlscacerts
│       │   │   │       └── tlsca.orderer.com-cert.pem
│       │   │   └── tls
│       │   │       ├── ca.crt
│       │   │       ├── server.crt
│       │   │       └── server.key
│       │   └── orderer4.orderer.com
│       │       ├── msp
│       │       │   ├── admincerts
│       │       │   │   └── Admin@orderer.com-cert.pem
│       │       │   ├── cacerts
│       │       │   │   └── ca.orderer.com-cert.pem
│       │       │   ├── keystore
│       │       │   │   └── 14b2244bfec1b657ef9b5553f71898affe4b909f514a4ceda0140010fb084e31_sk
│       │       │   ├── signcerts
│       │       │   │   └── orderer4.orderer.com-cert.pem
│       │       │   └── tlscacerts
│       │       │       └── tlsca.orderer.com-cert.pem
│       │       └── tls
│       │           ├── ca.crt
│       │           ├── server.crt
│       │           └── server.key
│       ├── tlsca
│       │   ├── b96fccf689f6fc0f9e2eae84d79bc043647e1ca9e42dba611d7e0b4bed964220_sk
│       │   └── tlsca.orderer.com-cert.pem
│       └── users
│           └── Admin@orderer.com
│               ├── msp
│               │   ├── admincerts
│               │   │   └── Admin@orderer.com-cert.pem
│               │   ├── cacerts
│               │   │   └── ca.orderer.com-cert.pem
│               │   ├── keystore
│               │   │   └── f07b713faf1a7d5758374e2107d3feedf4d564f6edb747168ce59e1264f74804_sk
│               │   ├── signcerts
│               │   │   └── Admin@orderer.com-cert.pem
│               │   └── tlscacerts
│               │       └── tlsca.orderer.com-cert.pem
│               └── tls
│                   ├── ca.crt
│                   ├── client.crt
│                   └── client.key
└── peerOrganizations
    ├── org1.com
    │   ├── ca
    │   │   ├── ca08395fb3cfb0d1b698416bb3abd9f57483fce46f380ac79bc16c53744439df_sk
    │   │   └── ca.org1.com-cert.pem
    │   ├── msp
    │   │   ├── admincerts
    │   │   │   └── Admin@org1.com-cert.pem
    │   │   ├── cacerts
    │   │   │   └── ca.org1.com-cert.pem
    │   │   ├── config.yaml
    │   │   └── tlscacerts
    │   │       └── tlsca.org1.com-cert.pem
    │   ├── peers
    │   │   └── peer0.org1.com
    │   │       ├── msp
    │   │       │   ├── admincerts
    │   │       │   │   └── Admin@org1.com-cert.pem
    │   │       │   ├── cacerts
    │   │       │   │   └── ca.org1.com-cert.pem
    │   │       │   ├── config.yaml
    │   │       │   ├── keystore
    │   │       │   │   └── 72c79456aa95890758259901e37c48487adbb373ddeb4d563c755ecaea900973_sk
    │   │       │   ├── signcerts
    │   │       │   │   └── peer0.org1.com-cert.pem
    │   │       │   └── tlscacerts
    │   │       │       └── tlsca.org1.com-cert.pem
    │   │       └── tls
    │   │           ├── ca.crt
    │   │           ├── server.crt
    │   │           └── server.key
    │   ├── tlsca
    │   │   ├── 9a0b43daa17c7e5a8e048c51f4d45b97838ab1b0efdc535aba20f0c38129935d_sk
    │   │   └── tlsca.org1.com-cert.pem
    │   └── users
    │       ├── Admin@org1.com
    │       │   ├── msp
    │       │   │   ├── admincerts
    │       │   │   │   └── Admin@org1.com-cert.pem
    │       │   │   ├── cacerts
    │       │   │   │   └── ca.org1.com-cert.pem
    │       │   │   ├── keystore
    │       │   │   │   └── a9b98d7f41aa787b6738e5289ce1de06ff5248d5d77b8e42ea338a81e11a8482_sk
    │       │   │   ├── signcerts
    │       │   │   │   └── Admin@org1.com-cert.pem
    │       │   │   └── tlscacerts
    │       │   │       └── tlsca.org1.com-cert.pem
    │       │   └── tls
    │       │       ├── ca.crt
    │       │       ├── client.crt
    │       │       └── client.key
    │       └── User1@org1.com
    │           ├── msp
    │           │   ├── admincerts
    │           │   │   └── User1@org1.com-cert.pem
    │           │   ├── cacerts
    │           │   │   └── ca.org1.com-cert.pem
    │           │   ├── keystore
    │           │   │   └── f031fec28dbcc5f267941ef4a414ab2b0f5a8a887bb580f9656e694a0f821f67_sk
    │           │   ├── signcerts
    │           │   │   └── User1@org1.com-cert.pem
    │           │   └── tlscacerts
    │           │       └── tlsca.org1.com-cert.pem
    │           └── tls
    │               ├── ca.crt
    │               ├── client.crt
    │               └── client.key
    └── org2.com
        ├── ca
        │   ├── a4d9659f098499ce52016d3a4f5ecabefb453993424bdafe1f2da9d8ae4a83c7_sk
        │   └── ca.org2.com-cert.pem
        ├── msp
        │   ├── admincerts
        │   │   └── Admin@org2.com-cert.pem
        │   ├── cacerts
        │   │   └── ca.org2.com-cert.pem
        │   ├── config.yaml
        │   └── tlscacerts
        │       └── tlsca.org2.com-cert.pem
        ├── peers
        │   └── peer0.org2.com
        │       ├── msp
        │       │   ├── admincerts
        │       │   │   └── Admin@org2.com-cert.pem
        │       │   ├── cacerts
        │       │   │   └── ca.org2.com-cert.pem
        │       │   ├── config.yaml
        │       │   ├── keystore
        │       │   │   └── 846ff9356b6134ead2f5e9e98abfaee96b07aef1d5058977527932290efb439a_sk
        │       │   ├── signcerts
        │       │   │   └── peer0.org2.com-cert.pem
        │       │   └── tlscacerts
        │       │       └── tlsca.org2.com-cert.pem
        │       └── tls
        │           ├── ca.crt
        │           ├── server.crt
        │           └── server.key
        ├── tlsca
        │   ├── c84a4fb8ac90cfe80826975b8902fa279e38a0947028b663e455ac9da495320b_sk
        │   └── tlsca.org2.com-cert.pem
        └── users
            ├── Admin@org2.com
            │   ├── msp
            │   │   ├── admincerts
            │   │   │   └── Admin@org2.com-cert.pem
            │   │   ├── cacerts
            │   │   │   └── ca.org2.com-cert.pem
            │   │   ├── keystore
            │   │   │   └── 3dbe15dfafd8464c1c2467c1ec07c04d28b33a84a54d86b370c4af04a6821d31_sk
            │   │   ├── signcerts
            │   │   │   └── Admin@org2.com-cert.pem
            │   │   └── tlscacerts
            │   │       └── tlsca.org2.com-cert.pem
            │   └── tls
            │       ├── ca.crt
            │       ├── client.crt
            │       └── client.key
            └── User1@org2.com
                ├── msp
                │   ├── admincerts
                │   │   └── User1@org2.com-cert.pem
                │   ├── cacerts
                │   │   └── ca.org2.com-cert.pem
                │   ├── keystore
                │   │   └── 2ac7ac78c2037355571ead990e2ad10ed3d47f1fa9580c37d90d9d27d7bb769a_sk
                │   ├── signcerts
                │   │   └── User1@org2.com-cert.pem
                │   └── tlscacerts
                │       └── tlsca.org2.com-cert.pem
                └── tls
                    ├── ca.crt
                    ├── client.crt
                    └── client.key

2.configtxgen生成配置交易

configtxgen 工具用来创建四个配置构件:

  • 排序节点的 创世区块,
  • 通道 配置交易,
  • 两个 锚节点交易,一个对应一个 Peer 组织。

排序区块是排序服务的创世区块,通道配置交易在通道创建的时候广播给排序服务。锚节点交易,指定了每个组织在此通道上的锚节点。

首先编辑configtx.yaml文件,如下:(这里不对文件内容作解释,之后有专门章节解释

Organizations:
    - &Orderer
        Name: Orderer
        ID: Orderer
        MSPDir: /home/test/crypto/crypto-config/ordererOrganizations/orderer.com/msp
        Policies:
            Readers:
                Type: Signature
                Rule: "OR('Orderer.member')"
            Writers:
                Type: Signature
                Rule: "OR('Orderer.member')"
            Admins:
                Type: Signature
                Rule: "OR('Orderer.admin')"
    - &Org1
        Name: Org1
        ID: Org1
        MSPDir: /home/test/crypto/crypto-config/peerOrganizations/org1.com/msp
        Policies:
            Readers:
                Type: Signature
                Rule: "OR('Org1.admin', 'Org1.peer', 'Org1.client')"
            Writers:
                Type: Signature
                Rule: "OR('Org1.admin', 'Org1.client')"
            Admins:
                Type: Signature
                Rule: "OR('Org1.admin')"
        AnchorPeers:
            - Host: peer0.org1.com
              Port: 7051
    - &Org2
        Name: Org2
        ID: Org2
        MSPDir: /home/test/crypto/crypto-config/peerOrganizations/org2.com/msp
        Policies:
            Readers:
                Type: Signature
                Rule: "OR('Org2.admin', 'Org2.peer', 'Org2.client')"
            Writers:
                Type: Signature
                Rule: "OR('Org2.admin', 'Org2.client')"
            Admins:
                Type: Signature
                Rule: "OR('Org2.admin')"
        AnchorPeers:
            - Host: peer0.org2.com
              Port: 7051

Capabilities:
    Channel: &ChannelCapabilities
        V1_4_2: true
    Orderer: &OrdererCapabilities
        V1_4_2: true
    Application: &ApplicationCapabilities
        V1_4_2: true
        V1_3: false
        V1_2: false
        V1_1: false
Application: &ApplicationDefaults
    Organizations:
    Policies: &ApplicationDefaultPolicies
        Readers:
            Type: ImplicitMeta
            Rule: "ANY Readers"
        Writers:
            Type: ImplicitMeta
            Rule: "ANY Writers"
        Admins:
            Type: ImplicitMeta
            Rule: "MAJORITY Admins"
    Capabilities:
        <<: *ApplicationCapabilities
Orderer: &OrdererDefaults
    OrdererType: etcdraft
    Addresses:
        - orderer0.orderer.com:7050
        - orderer1.orderer.com:7050
        - orderer2.orderer.com:7050
        - orderer3.orderer.com:9050
        - orderer4.orderer.com:9050
    BatchTimeout: 2s
    BatchSize:
        MaxMessageCount: 10
        AbsoluteMaxBytes: 10 MB
        PreferredMaxBytes: 2 MB
    MaxChannels: 0
    Kafka:
        Brokers:
            - kafka0:9092
    EtcdRaft:
        Consenters:
            - Host: orderer0.orderer.com
              Port: 7050
              ClientTLSCert: /home/test/crypto/crypto-config/ordererOrganizations/orderer.com/orderers/orderer0.orderer.com/tls/server.crt
              ServerTLSCert: /home/test/crypto/crypto-config/ordererOrganizations/orderer.com/orderers/orderer0.orderer.com/tls/server.crt
            - Host: orderer1.orderer.com
              Port: 7050
              ClientTLSCert: /home/test/crypto/crypto-config/ordererOrganizations/orderer.com/orderers/orderer1.orderer.com/tls/server.crt
              ServerTLSCert: /home/test/crypto/crypto-config/ordererOrganizations/orderer.com/orderers/orderer1.orderer.com/tls/server.crt
            - Host: orderer2.orderer.com
              Port: 7050
              ClientTLSCert: /home/test/crypto/crypto-config/ordererOrganizations/orderer.com/orderers/orderer2.orderer.com/tls/server.crt
              ServerTLSCert: /home/test/crypto/crypto-config/ordererOrganizations/orderer.com/orderers/orderer2.orderer.com/tls/server.crt
            - Host: orderer3.orderer.com
              Port: 9050
              ClientTLSCert: /home/test/crypto/crypto-config/ordererOrganizations/orderer.com/orderers/orderer3.orderer.com/tls/server.crt
              ServerTLSCert: /home/test/crypto/crypto-config/ordererOrganizations/orderer.com/orderers/orderer3.orderer.com/tls/server.crt
            - Host: orderer4.orderer.com
              Port: 9050
              ClientTLSCert: /home/test/crypto/crypto-config/ordererOrganizations/orderer.com/orderers/orderer4.orderer.com/tls/server.crt
              ServerTLSCert: /home/test/crypto/crypto-config/ordererOrganizations/orderer.com/orderers/orderer4.orderer.com/tls/server.crt
        Options:
            TickInterval: 500ms
            ElectionTick: 10
            HeartbeatTick: 1
            MaxInflightBlocks: 5
            SnapshotIntervalSize: 20 MB
    Organizations:
    Policies:
        Readers:
            Type: ImplicitMeta
            Rule: "ANY Readers"
        Writers:
            Type: ImplicitMeta
            Rule: "ANY Writers"
        Admins:
            Type: ImplicitMeta
            Rule: "MAJORITY Admins"
        BlockValidation:
            Type: ImplicitMeta
            Rule: "ANY Writers"
    Capabilities:
        <<: *OrdererCapabilities
Channel: &ChannelDefaults
    Policies:
        Readers:
            Type: ImplicitMeta
            Rule: "ANY Readers"
        Writers:
            Type: ImplicitMeta
            Rule: "ANY Writers"
        Admins:
            Type: ImplicitMeta
            Rule: "MAJORITY Admins"
    Capabilities:
        <<: *ChannelCapabilities

Profiles:
    SampleDevModeEtcdRaft:
        <<: *ChannelDefaults
        Orderer:
            <<: *OrdererDefaults
            Organizations:
                - *Orderer
        Application:
            <<: *ApplicationDefaults
            Organizations:
                - *Orderer
        Consortiums:
            SampleConsortium:
                Organizations:
                    - *Org1
                    - *Org2

    TwoOrgsChannel:
        Consortium: SampleConsortium
        <<: *ChannelDefaults
        Application:
            <<: *ApplicationDefaults
            Organizations:
                - *Org1
                - *Org2
            Capabilities:
                <<: *ApplicationCapabilities

使用下列命令进行配置生成:

# 生成创世块
configtxgen -profile SampleDevModeEtcdRaft -channelID test-sys-channel -outputBlock genesis.block
# 通道配置交易
configtxgen -profile TwoOrgsChannel -outputCreateChannelTx channel.tx -channelID mychannel
# 锚节点配置
configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate Org1anchors.tx -channelID mychannel -asOrg Org1
# 锚节点配置
configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate Org2anchors.tx -channelID mychannel -asOrg Org2

生成后应有如下文件

channel.tx  configtx.yaml  genesis.block  mychannel.block  Org1anchors.tx  Org2anchors.tx

至此,相关配置已经生成完毕,接下来我们可以使用docker进行网络的启动了。

另外在启动前,我们需要把生成的相关文件copy到其他机器上,使用copy的方式或者scp命令均可,这里不再赘述。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容