Hyperledger fabric 在Hyperledger结构中配置多个通道

Hyperledger fabric 在Hyperledger结构中配置多个通道,hyperledger-fabric,hyperledger,Hyperledger Fabric,Hyperledger,我正在尝试使用hyper ledger结构制作两个频道。在一个渠道中会有两个组织,在另一个渠道中会有另外两个组织。在每个组织中,都会有两个对等组织。因此,共有4个组织中的8个对等点,具有两个渠道。到目前为止,我已经完成了以下工作: 在crypto config.yaml文件中,我声明了一个订购方和四个组织。在每个组织中,我都声明了模板计数:2和用户计数:1(有人能解释一下模板计数的含义吗?它是一个节点总数吗?) 然后使用cryptogengengenerate--config=./crypto-

我正在尝试使用hyper ledger结构制作两个频道。在一个渠道中会有两个组织,在另一个渠道中会有另外两个组织。在每个组织中,都会有两个对等组织。因此,共有4个组织中的8个对等点,具有两个渠道。到目前为止,我已经完成了以下工作:

  • crypto config.yaml
    文件中,我声明了一个订购方和四个组织。在每个组织中,我都声明了模板计数:2和用户计数:1(有人能解释一下模板计数的含义吗?它是一个节点总数吗?)
  • 然后使用
    cryptogengengenerate--config=./crypto-config.yaml
    命令生成密钥和证书
  • configtx.yaml
    文件中,我用组织名称声明了两个通道:
  • 配置文件:

    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
    
    订购者:&orderdefaults

    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:
    
    Organizations:
    
    应用程序:&ApplicationDefaults

    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:
    
    Organizations:
    
  • 然后我用这个命令创建了genesis块

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

  • 可能,我需要制作两个genesis区块,因为有两个通道。在这种情况下,命令将是什么而不是上面的命令

  • 我使用了以下命令来进行通道事务和锚定对等事务

    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
    
  • 最后使用此命令来弥补:

    CHANNEL\u NAME=mychannel1 docker-compose-f docker-compose-cli.yaml-up–d

  • 每当我尝试跑步时:

    CHANNEL_NAME=mychannel2 docker-compose -f docker-compose-cli.yaml up –d
    
    据说已经有同龄人在跑步了

    因此,我的问题是:

    • 如何为不同的组织创建多个渠道?我 没有得到任何详细的例子
    • 有可能在两个通道之间进行通信吗
    • 如果peer0同时订阅了这两个通道怎么办?它能做到吗 在两个通道中进行通信并传输数据
        • 如何为不同的组织创建多个渠道?我没有得到任何详细的例子

          我想你需要一个genesis块来引导订购者。Rest需要多通道配置事务文件。(.tx)。您可以使用这些通道文件,使用SDK(请参阅或)或使用fabric cli的对等命令创建和加入通道(我找不到文档,但您可以尝试以下部分:,)

        • 有可能在两个通道之间进行通信吗

        一个词回答“否”。但您可以通过跨链码呼叫来实现

        • 如果peer0同时订阅了这两个通道怎么办?它是否能够在两个通道中进行通信和传输数据
        是的,它能做到。你可以参考。 无法直接进行通道间数据传输。但您可以从另一个链码(在通道B上工作)调用链码(在通道a上工作),前提是您有权在两个通道上调用链码


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

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

        导出结构\u CFG\u路径=$PWD

        配置TXGEN-配置文件FourOrgSorderGenesis-输出块 ./channel artifacts/genesis.block

        configtxgen-配置文件TwoOrgsChannel1-outputCreateChannelTx ./channel artifacts/channel1.tx-channelID mychannel1

        configtxgen-配置文件TwoOrgsChannel2-outputCreateChannelTx ./channel artifacts/channel2.tx-channelID mychannel2

        配置TXGEN-配置文件TwoOrgsChannel1-输出端口更新 ./channel artifacts/Org1MSPanchors.tx-channelID mychannel1-asOrg Org1MSP

        配置TXGEN-配置文件TwoOrgsChannel1-输出端口更新 ./channel artifacts/Org2MSPanchors.tx-channelID mychannel1-asOrg Org2MSP

        configtxgen-配置文件TwoOrgsChannel2-输出端口更新 ./channel artifacts/Org3MSPanchors.tx-channelID mychannel2-asOrg Org3MSP

        configtxgen-配置文件TwoOrgsChannel2-输出端口更新 ./channel artifacts/Org4MSPanchors.tx-channelID mychannel2-asOrg Org4MSP

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


        尝试此配置文件配置

        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
        
        FourOrgSordergenesis:
        订购方:
        
        你能发布错误日志吗,因为我一直在尝试同样的方法,但没有出现这样的错误。嗨@jaswans,谢谢你的回复。经过反复试验,我发现了我的问题。我在docker compose命令之前使用了通道名称,这是不正确的。正确的命令是:docker compose-f docker-compose-cli.yaml up–dHi@arnabkaycee,感谢您的澄清。我对另一件事很好奇。您知道一个对等方是否可以在没有任何通道的情况下向另一个对等方发送数据?如果为否,则在所有事务中对所有数据进行加密,因为通道使用对称加密进行加密。不是吗?@SwawibeAlam你说的没有频道发送数据是什么意思?同龄人通过流言蜚语交换事务和链码数据。嗨@arnabkaycee,我的意思是“不通过渠道发送数据”,没有渠道能做任何事情吗?如果我错了,请纠正我。HFV1.0中的过程是:首先,对等方加入一个通道。客户向背书人发送提案。背书人提供背书并通过渠道将其发送给客户。客户在频道中向订购方广播背书。订购方在通道中将块发送给提交方。一切都发生在一个通道内。现在,举例来说,如果我只有一个组织。我不需要频道。有没有可能在没有频道的情况下完成所有这些事情?嗨@arnabkaycee,我还有一个问题。您知道吗,通道数据的默认加密机制是什么?我认为这是一种对称加密。但我是