首页 > 技术文章 > Fabric设置锚节点的第二种办法

ezgod 2020-12-18 10:49 原文

之前我们已经讲过通过更新应用通道区块配置文件的方式设置锚节点信息,这中方式有个前提就是,在开始时我们没有设置组织信息和生成相应的msp信息,如果我们在规划网络的时候已经有确定的组织信息,我们可以通过在configtx文件中设置锚节点的信息来生成组织锚节点的交易文件,下面我们来看看如何通过这种方式来设置锚节点

编写configtx.yaml文件

以下是我的文件:

Profiles: 

    #以下部分定义了整个系统配置信息

    # TestTwoOrgsOrdererGenesis是组织定义表示符,可以自定义,这个也是命令中的-profile参数对应参数
    TestTwoOrgsOrdererGenesis:
        #orderer配置属性,这个标识不能自定义,属于系统关键词
        Orderer:
            #这个表示引用下面OrdererDefaults的属性
            <<: *OrdererDefaults
            Organizations:
                    - *OrdererOrg
        #定义了系统中包含的组织
        Consortiums:
            SampleConsortium:
                #系统中包含的组织
                Organizations:
                        - *Org1  #引用下文定义的配置
                        - *Org2

  #通道配置信息

  #通道定义标识符,可以自定义
  TestTwoOrgsChannel:
      Consortium: SampleConsortium
      Application:
            <<: *ApplicationDefaults  #引用下文的Application定义
            Organizations:
                    - *Org1
                    - *Org2
#order节点相关的配置
Organizations:

    - &OrdererOrg   #order节点配置信息
        Name: OrdererOrg    #order节点名称
        ID: OrdererMSP      #orderer节点编号,orderer.yaml的 LocalMSPID必须要和这个ID相同
        #MSP文件夹路径
        MSPDir: /home/zym/fabric-ws/simple-demo/crypto-config/ordererOrganizations/simple-network.com/msp
        
    - &Org1
        Name: Org1MSP   #组织名称
        ID: Org1MSP     #组织编号
        MSPDir: /home/zym/fabric-ws/simple-demo/crypto-config/peerOrganizations/org1.simple-network.com/msp #组织MSP文件名
        AnchorPeers:        #组织的锚点信息
                - Host: peer0.org1.simple-network.com   
                - Port: 7051
    - &Org2
        Name: Org2MSP
        ID: Org2MSP
        MSPDir: /home/zym/fabric-ws/simple-demo/crypto-config/peerOrganizations/org2.simple-network.com/msp
        AnchorPeers:
                - Host: peer0.org2.simple-network.com
                - Port: 7051

#orderer节点的配置信息     
Orderer: &OrdererDefaults
    #orderer节点的共识方法
    OrdererType: solo
    
    #orderer的监听地址
    Addresses:
        - orderer.simple-network.com:7050

    BatchTimeout: 2s

    BatchSize:

        MaxMessageCount: 10

        AbsoluteMaxBytes: 98 MB

        PreferredMaxBytes: 512 KB
    #kafka相关配置
    Kafka:
        Brokers:
            - 127.0.0.1:9092

    Organizations:

Application: &ApplicationDefaults

    Organizations:

文件中标红的地方就是我们填加的组织锚节点信息,下面我们通过这个文件来生成创世区块,通道交易文件,还有锚节点交易文件

下面我们来创建我们实验用的configtx.yaml文件 order 和组织的生成msp信息的yaml文件

configtx文件内容:

Organizations:
  - &OrdererOrg
     Name: OrdererOrg
     ID: OrdererMSP
     MSPDir: crypto-config/ordererOrganizations/example.com/msp
  - &Org1
     Name: Org1MSP
     ID: Org1MSP
     MSPDir: crypto-config/peerOrganizations/org1.example.com/msp
     AnchorPeers:
       - Host: peer0.org1.example.com
         Port: 7051
  - &Org2
     Name: Org2MSP
     ID: Org2MSP
     MSPDir: crypto-config/peerOrganizations/org2.example.com/msp
     AnchorPeers:
       - Host: peer0.org2.example.com
         Port: 7051
Orderer: &OrdererDefaults
  OrdererType: solo
  Addresses:
    - orderer.example.com:7050
  BatchTimeout: 2s
  BatchSize:
    MaxMessageCount: 10
    AbsoluteMaxBytes: 98 MB
    PreferredMaxBytes: 512 KB
  Kafka:
    Brokers:
      - 127.0.0.1:9092
  Organizations:
Application: &ApplicationDefaults
  Organizations:
Profiles:
  TwoOrgsOrdererGenesis:
    Orderer:
        <<: *OrdererDefaults
        Organizations:
          - *OrdererOrg
    Consortiums:
        SampleConsortium:
            Organizations:
                - *Org1
                - *Org2
  TwoOrgsChannel:
    Consortium: SampleConsortium
    Application:
      <<: *ApplicationDefaults
      Organizations:
        - *Org1
        - *Org2

crypto-config-order.yaml文件内容

OrdererOrgs:
  - Name: Orderer
    Domain: example.com
    Specs:
      - Hostname: orderer

crypto-config-orgs.yaml文件内容

PeerOrgs:
  - Name: Org1
    Domain: org1.example.com
    Template:
      Count: 2
    Users:
      Count: 1
  - Name: Org2
    Domain: org2.example.com
    Template:
      Count: 2
    Users:
      Count: 1

下面我们来生成order和org的msp信息

执行下面的命令:

1 ./bin/cryptogen generate --config=./crypto-config-orgs.yaml
2 
3 ./bin/cryptogen generate --config=./crypto-config-order.yaml

完成后我们的结果是:

 

 

 

 

 下面我们来根据configtx文件生成创世区块文件,通道交易文件,锚节点交易文件

执行以下命令:

生成创世区块文件

./bin/configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./channel-artifacts/genesis.block

 

 

 

生成通道交易文件:

./bin/configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/mychannel.tx -channelID mychannel

 

 

 创建Org1MSP组织锚点更新文件

configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID mychannel -asOrg Org1MSP

 

 创建org2MSP组织锚点更新文件

configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID mychannel -asOrg Org2MSP

 

 生成完成:

 

 

后续 步骤就是,完成通道创建后需要更新锚节点使其加入到通道配置当中

使用命令:

1 docker exec -it cli bash
2 peer channel update -o orderer.example.com:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -c mychannel -f ./channel-artifacts/Org1MSPanchors.tx

 

org2的锚节点设置也参考上面的命令即可,但是首先必须将环境设置成org2的 

 

至此我们已经完成了锚节点的添加

 

参考文档:

https://developer.aliyun.com/article/769612?spm=a2c6h.14164896.0.0.167a1219cOBn0T

https://www.cnblogs.com/show58/p/13180824.html

 

 

 

创建Org1MSP组织锚点更新文件

推荐阅读