我正在尝试使用超级分类帐结构制作两个频道。在一个渠道中将有两个组织,在另一个渠道中,将有另外两个组织。在每个组织中,都会有两个同行。因此,4个组织共有8个同行,有两个频道。到现在为止我已经完成了这些:
crypto-config.yaml
档案中,我宣布了一个订货人和四个组织。在每个组织中,我已经声明了模板数:2和用户数:1(任何人都可以解释模板计数的含义吗?它是同行的总数吗?)cryptogen generate --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
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:
然后我使用此命令创建了genesis块
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
最后用这个命令来弥补:
CHANNEL_NAME=mychannel1 docker-compose -f docker-compose-cli.yaml up –d
每当我试图跑步时:
CHANNEL_NAME=mychannel2 docker-compose -f docker-compose-cli.yaml up –d
据说同龄人正在跑步。
所以我的问题是:
答案 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)
如何为不同的组织创建多个渠道?我没有得到任何详细的例子。
我认为你需要一个创世块来引导orderer。休息你需要多个通道配置事务文件。 (.tx)。您可以使用这些通道文件使用SDK(请参阅https://fabric-sdk-node.github.io/tutorial-channel-create.html或https://github.com/hyperledger/fabric-samples/tree/release/balance-transfer/app)或使用fabric-cli的peer命令创建和加入频道(我找不到文档,但您可以尝试以下部分:https://github.com/hyperledger/fabric-samples/blob/release/first-network/scripts/script.sh#L61,https://github.com/hyperledger/fabric-samples/blob/release/first-network/scripts/script.sh#L92)
是否可以在两个频道之间进行通信?
一个字回答否。但你可以通过跨链代码调用来实现。
是的,它可以做到这一点。您可以参考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,希望本文也能对您有所帮助。