在Hyperledger Fabric中配置多个通道

时间:2017-12-23 16:24:15

标签: hyperledger-fabric hyperledger

我正在尝试使用超级分类帐结构制作两个频道。在一个渠道中将有两个组织,在另一个渠道中,将有另外两个组织。在每个组织中,都会有两个同行。因此,4个组织共有8个同行,有两个频道。到现在为止我已经完成了这些:

  1. crypto-config.yaml档案中,我宣布了一个订货人和四个组织。在每个组织中,我已经声明了模板数:2和用户数:1(任何人都可以解释模板计数的含义吗?它是同行的总数吗?)
  2. 然后使用cryptogen generate --config=./crypto-config.yaml命令生成密钥和证书。
  3. configtx.yaml档案中,我已宣布两个频道及其组织名称:
  4. 配置文件:

    FourOrgsOrdererGenesis:
        Orderer:
            <<: *OrdererDefaults
            Organizations:
                - *OrdererOrg
        Consortiums:
            SampleConsortium:
                Organizations:
                    - *Org1
                    - *Org2
                    - *Org3
                    - *Org4
    TwoOrgsChannel1:
        Consortium: SampleConsortium
        Application:
            <<: *ApplicationDefaults
            Organizations:
                - *Org1
                - *Org2
    TwoOrgsChannel2:
        Consortium: SampleConsortium
        Application:
            <<: *ApplicationDefaults
            Organizations:
                - *Org3  
                - *Org4
    

    组织:

    - &OrdererOrg
        Name: OrdererOrg
        ID: OrdererMSP
        MSPDir: crypto-config/ordererOrganizations/acme.com/msp
    - &Org1
        Name: Org1MSP
    
        ID: Org1MSP
    
        MSPDir: crypto-config/peerOrganizations/org1.acme.com/msp
    
        AnchorPeers:
            - Host: peer0.org1.acme.com
              Port: 7051
    
    - &Org2
        Name: Org2MSP
    
        ID: Org2MSP
    
        MSPDir: crypto-config/peerOrganizations/org2.acme.com/msp
    
        AnchorPeers:
            - Host: peer0.org2.acme.com
              Port: 7051
    
    - &Org3
        Name: Org3MSP
    
        ID: Org3MSP
    
        MSPDir: crypto-config/peerOrganizations/org3.acme.com/msp
    
        AnchorPeers:
            - Host: peer0.org3.acme.com
              Port: 7051
    
    - &Org4
        Name: Org4MSP
    
        ID: Org4MSP
    
        MSPDir: crypto-config/peerOrganizations/org4.acme.com/msp
    
        AnchorPeers:
            - Host: peer0.org4.acme.com
              Port: 7051
    

    Orderer:&amp; OrdererDefaults

    OrdererType: solo
    
    Addresses:
        - orderer.acme.com:7050
    
    BatchTimeout: 2s
    
    BatchSize:
    
        MaxMessageCount: 10
    
        AbsoluteMaxBytes: 99 MB
    
        PreferredMaxBytes: 512 KB
    
    Kafka:
        Brokers:
            - 127.0.0.1:9092
    
    Organizations:
    

    应用程序:&amp; ApplicationDefaults

    Organizations:
    
    1. 然后我使用此命令创建了genesis块

      configtxgen -profile FourOrgsOrdererGenesis -outputBlock ./channel-artifacts/genesis.block

    2. 可能我需要制作两个成因块,因为有两个通道。在那种情况下,命令是什么而不是一个?

      1. 我使用以下命令进行频道事务处理和锚点对等事务。

        configtxgen -profile TwoOrgsChannel1 -outputCreateChannelTx ./channel-artifacts/channel1.tx -channelID mychannel1
        configtxgen -profile TwoOrgsChannel2 -outputCreateChannelTx ./channel-artifacts/channel2.tx -channelID mychannel2    
        configtxgen -profile TwoOrgsChannel1-outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID mychannel1 -asOrg Org1MSP
        configtxgen -profile TwoOrgsChannel1 -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID mychannel1 -asOrg Org2MSP
        configtxgen -profile TwoOrgsChannel2-outputAnchorPeersUpdate ./channel-artifacts/Org3MSPanchors.tx -channelID mychannel2 -asOrg Org3MSP
        configtxgen -profile TwoOrgsChannel2-outputAnchorPeersUpdate ./channel-artifacts/Org4MSPanchors.tx -channelID mychannel2 -asOrg Org4MSP
        
      2. 最后用这个命令来弥补:

        CHANNEL_NAME=mychannel1 docker-compose -f docker-compose-cli.yaml up –d

      3. 每当我试图跑步时:

        CHANNEL_NAME=mychannel2 docker-compose -f docker-compose-cli.yaml up –d
        

        据说同龄人正在跑步。

        所以我的问题是:

        • 如何为不同的组织创建多个渠道?一世 没有得到任何详细的例子。
        • 是否可以在两个频道之间进行通信?
        • 如果peer0订阅了两个频道怎么办?它能够吗? 沟通两个渠道并在两个渠道中传输数据?

3 个答案:

答案 0 :(得分:1)

经过一些反复试验,我发现了问题。实际上,我想,如果我想制作多个频道,那么我必须多次使用docker-compose命令,这是不正确的。创建多个渠道的正确语法是:

  

cryptogen generate --config =。/ crypto-config.yaml

     

导出FABRIC_CFG_PATH = $ PWD

     

configtxgen -profile FourOrgsOrdererGenesis -outputBlock   ./channel-artifacts/genesis.block

     

configtxgen -profile TwoOrgsChannel1 -outputCreateChannelTx   ./channel-artifacts/channel1.tx-channelID mychannel1

     

configtxgen -profile TwoOrgsChannel2 -outputCreateChannelTx   ./channel-artifacts/channel2.tx-channelID mychannel2

     

configtxgen -profile TwoOrgsChannel1 -outputAnchorPeersUpdate   ./channel-artifacts/Org1MSPanchors.tx-channelID mychannel1 -asOrg   Org1MSP

     

configtxgen -profile TwoOrgsChannel1 -outputAnchorPeersUpdate   ./channel-artifacts/Org2MSPanchors.tx -channelID mychannel1 -asOrg   Org2MSP

     

configtxgen -profile TwoOrgsChannel2 -outputAnchorPeersUpdate   ./channel-artifacts/Org3MSPanchors.tx -channelID mychannel2 -asOrg   Org3MSP

     

configtxgen -profile TwoOrgsChannel2 -outputAnchorPeersUpdate   ./channel-artifacts/Org4MSPanchors.tx-channelID mychannel2 -asOrg   Org4MSP

     

docker-compose -f docker-compose-cli.yaml up -d

答案 1 :(得分:0)

  

一个字回答否。但你可以通过跨链代码调用来实现。

  • 如果peer0订阅了两个频道怎么办?是否能够在两个渠道中传播两个渠道并传输数据?
  

是的,它可以做到这一点。您可以参考http://hyperledger-fabric.readthedocs.io/en/release/channels.html。   不能直接进行信道间数据传输。但您可以从另一个链代码(在通道B上工作)调用链代码(在通道A上工作),前提是您有权在两个通道上调用链代码。

答案 2 :(得分:0)

尝试此配置文件配置

FourOrgsOrdererGenesis:
    Orderer:
        <<: *OrdererDefaults
        Organizations:
            - *OrdererOrg
    Consortiums:
        ConsortiumOne:
            Organizations:
                - *Org1
                - *Org2
        ConsortiumTwo:
            Organizations:
                - *Org3
                - *Org4
TwoOrgsChannel1:
    Consortium: ConsortiumOne
    Application:
        <<: *ApplicationDefaults
        Organizations:
            - *Org1
            - *Org2
TwoOrgsChannel2:
    Consortium: ConsortiumTwo
    Application:
        <<: *ApplicationDefaults
        Organizations:
            - *Org3
            - *Org4

这对我有用。

Setting Hyperlegder Fabric Network Multiple Chaincodes Channels,希望本文也能对您有所帮助。