Hyperledger-composer无法更改BlockTimeout

问题描述 投票:0回答:1

我正在使用hyperledger-composer进行游戏原型设计。我需要减少块时间,但是fabric-dev-servers中提供的指令不起作用。

我跟随howtobuild.txt中发现的~/fabric-dev-servers/fabric-scripts/hlfv12/composer然而使用composer network start --networkName ....安装网络网络无法启动错误:

Error: Error trying to start business network. Error: Failed to connect to any peer event hubs. It is required that at least 1 event hub has been connected to receive the commit event

我正在使用的版本是composer@20和织物码头图像与标签1.2.1(由下载)./startFabric.sh

我采取的步骤如下:

cd ~/fabric-dev-servers/fabric-scripts/hlfv12/composer

nano configtx.yaml

在这个文件里面我

  1. 将配置文件块移动到yaml的底部(以停止奇怪的错误)
  2. 将BatchTimeout更改为200ms
  3. 将MaxMessageCount更改为1

保存文件后我做了

rm -r crypto-config

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

获取新密钥并更新docker-composer.ymldocker-compose-dev.yml

$(ls -1 crypto-config/peerOrganizations/org1.example.com/ca/*_sk`

从密钥库获取密钥

 ls -1 crypto-config/peerOrganizations/org1.example.com/users/[email protected]/msp/keystore/*_sk

使用新密钥更新peerAdminCard销售脚本

nano ../createPeerAdminCard.sh 

生成

configtxgen -profile ComposerChannel -outputCreateChannelTx ./composer-channel.tx -channelID composerchannel`

configtxgen -profile ComposerOrdererGenesis -outputBlock ./composer-genesis.block

创建对等管理卡

cd ../ && ./createPeerAdminCard.sh

此时它开始下载结构停靠器映像,这些映像都成功运行

然后我创建我的BNA文件并尝试启动网络

cd /my/buisness/network
composer archive create -t dir -n .
composer network install --card PeerAdmin@hlfv1 --archiveFile [email protected]
composer network start --networkName my-game --networkVersion 0.0.1 --networkAdmin admin --networkAdminEnrollSecret adminpw --card PeerAdmin@hlfv1 --file networkadmin.card

这给出了错误

Error: Error trying to start business network. Error: Failed to connect to any peer event hubs. It is required that at least 1 event hub has been connected to receive the commit event

我采取的调试步骤如下

查看对等日志后,我可以看到向订货人发送块失败,因为composerchannel不存在,所以我手动尝试手动创建和加入通道

docker exec peer0.org1.example.com peer channel create -o orderer.example.com:7050 -c composerchannel -f /etc/hyperledger/configtx/composer-channel.tx

这是成功的

2019-03-23 00:07:38.131 UTC [cli/common] readBlock -> INFO 05e Received block: 0

然后我尝试加入对等体到频道

docker exec peer0.org1.example.com peer channel join -o orderer.example.com:7050 -b composerchannel.block --tls --cafile /etc/hyperledger/msp/users/[email protected]/tls/ca.crt --keyfile /etc/hyperledger/msp/users/[email protected]/tls/client.key --certfile /etc/hyperledger/msp/users/[email protected]/tls/client.crt

这给出了错误

proposal failed (err: bad proposal response 500: access denied for [JoinChain][composerchannel]: [Failed verifying that proposal's creator satisfies local MSP principal during channelless check policy with policy [Admins]: [This identity is not an admin]])

/etc/hyperledger/msp/etc/hyperledger/tls里面有很多不同的'Admin'Pems所以我几乎尝试了所有的组合

我很茫然,我已经在google上花了好几个小时试图找到有同样问题的人,但是我已经做空了。任何帮助将不胜感激。

UPDATE


结果明确定义了不需要的证书。运行此命令允许我加入频道。

docker exec peer0.org1.example.com peer channel join -o orderer.example.com:7050 -b composerchannel.block  --clientauth --tls

此时所有的docker容器都在运行,并且通道正在运行。我设法能够启动网络,一切运行正常(我可以请求链码,分类帐更新正常等)。但是,处理事务似乎仍需要2秒钟。我再次做了一些调试,以确保订单上的配置是正确的。

  1. 从orderer上的通道获取配置块
docker exec peer0.org1.example.com peer channel fetch config config_block.pb -o http_s_://orderer.example.com:7050 -c composerchannel --tls --cafile /etc/hyperledger/peer/msp/tlscacerts/tlsca.org1.example.com-cert.pem
  1. 将容器复制到本地计算机
docker cp 5eeaf8c650f8:/root/config_block.pb config_block.pb
  1. 从proto-buf转换为json(使用在fabric-samples中找到的configtxlator二进制文件)configtxlator docker exec peer0.org1.example.com proto_decode --input config_block.pb --type common.Block | jq .data.data[0].payload.data.config > config.json

获得通道的配置后,我可以看到BatchTimeout是200ms而BatchAmount是1,但我仍然有每个事务2秒的超时。

hyperledger-fabric hyperledger hyperledger-composer
1个回答
0
投票

在使用Hyperledger作曲家的同时,你必须记住这是一个很好的选择。我过去曾多次遵循这些相同的步骤并构建自定义网络。我认为您的问题可能是版本不匹配。尝试将作曲家降级到0.19。

另外,您是否尝试使用docker ps来确保所有必需的容器都在运行?

此外,在执行configtxgen命令之前,有一个简单的命令

export FABRIC_CFG_PATH=$PWD

你做了这个了吗?

© www.soinside.com 2019 - 2024. All rights reserved.