hyperledger-fabric - 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
在这个文件里面我
- 将配置文件块移动到 ymal 的底部(以停止奇怪的错误)
- 将 BatchTimeout 更改为 200 毫秒
- 将 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 秒。我再次进行了一些调试以确保订单上的配置正确。
- 从 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
- 从容器复制到本地机器
docker cp 5eeaf8c650f8:/root/config_block.pb config_block.pb
- 从 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 composer 时,你必须记住它已经过时了。我过去多次遵循这些相同的步骤并构建了自定义网络。我认为您的问题可能是版本不匹配。尝试将作曲家降级到 0.19。
此外,您是否尝试执行 docker ps 以确保所有必需的容器都在运行?
此外,在执行 configtxgen 命令之前,有一个简单的命令
export FABRIC_CFG_PATH=$PWD
你做了这个了吗?
推荐阅读
- apache-flink - Apache Flink:JDBCInputFormat 返回什么类型的记录?
- linux - VS 代码无法在 Linux 上加载我的统一项目
- java - 可以使用组合而不是继承来实现 Polymorphysim 吗?(在 Java 中)
- python - Python 3.6.5,与 multiprocessing.dummy.Pool.map() 的并行性
- java - Libgdx 随机图像在每一帧都发生变化
- c - C将readdir写入char数组变量?
- cron-task - 工作不工作早现在工作
- batch-file - Taskkill 批处理文件以关闭无响应的应用程序关闭正在运行且响应的应用程序
- android - 如何在最新版本的 Android Studio 中修复 android...Coordinator Layout?
- python - 写入另一个文件时出现python脚本错误