在 Hyperledger Fabric 中配置多通道

Swa*_*lam 5 hyperledger hyperledger-fabric

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

  1. crypto-config.yaml文件中,我声明了一个订购者和四个组织。在每个组织中,我都声明了模板数量:2 和用户数量:1(谁能解释一下模板数量的含义?是对等节点总数吗?)
  2. 然后使用cryptogen generate --config=./crypto-config.yaml命令生成密钥和证书。
  3. 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
Run Code Online (Sandbox Code Playgroud)

组织:

- &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
Run Code Online (Sandbox Code Playgroud)

订购者:&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:
Run Code Online (Sandbox Code Playgroud)

应用程序:&ApplicationDefaults

Organizations:
Run Code Online (Sandbox Code Playgroud)
  1. 然后我使用这个命令创建了创世块

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

可能,我需要制作两个创世块,因为有两个通道。在那种情况下,命令是什么而不是上面的命令?

  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
    
    Run Code Online (Sandbox Code Playgroud)
  2. 最后用这个命令补上:

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

每当我尝试运行时:

CHANNEL_NAME=mychannel2 docker-compose -f docker-compose-cli.yaml up –d
Run Code Online (Sandbox Code Playgroud)

它是说已经有同行在运行。

所以我的问题是:

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

arn*_*cee 0

一言以蔽之。但您可以通过跨链代码调用来完成此操作。

  • 如果peer0 订阅了两个频道怎么办?它能够在两个通道中进行通信并在两个通道中传输数据吗?

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