首页 > 解决方案 > Hyperledger-composer 无法更改 BlockTimeout

问题描述

我正在使用 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. 将配置文件块移动到 ymal 的底部(以停止奇怪的错误)
  2. 将 BatchTimeout 更改为 200 毫秒
  3. 将 MaxMessageCount 更改为 1

保存文件后我做

rm -r crypto-config

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

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

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

从密钥库中获取密钥

 ls -1 crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/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

此时开始下载fabric docker镜像,全部运行成功

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

cd /my/buisness/network
composer archive create -t dir -n .
composer network install --card PeerAdmin@hlfv1 --archiveFile my-game@0.0.1.bna
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/Admin@org1.example.com/tls/ca.crt --keyfile /etc/hyperledger/msp/users/Admin@org1.example.com/tls/client.key --certfile /etc/hyperledger/msp/users/Admin@org1.example.com/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]])

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

我很茫然,我已经在谷歌上找了几个小时试图找到有同样问题的人,但都失败了。任何帮助将不胜感激。

更新


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

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 为 200 毫秒,BatchAmount 为 1,但我仍然有每个事务的 2 秒超时。

标签: hyperledger-fabrichyperledgerhyperledger-composer

解决方案


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

此外,您是否尝试执行 docker ps 以确保所有必需的容器都在运行?

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

export FABRIC_CFG_PATH=$PWD

你做了这个了吗?


推荐阅读