Hyperledger-composer не может изменить BlockTimeout - PullRequest
0 голосов
/ 23 марта 2019

Я работаю над созданием прототипа игры, используя hyperledger-composer. Мне нужно уменьшить время ожидания блока, однако инструкции, предоставленные в фабрике-серверах не работают.

Я следовал 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 и образы док-станции Fabric с тегом 1.2.1 (как загружено) ./startFabric.sh

Я предпринял следующие шаги:

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

nano configtx.yaml

внутри этого файла I

  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, и все они успешно запускаются

Затем я создаю свой файл 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]])

В /etc/hyperledger/msp и /etc/hyperledger/tls есть много разных "административных" Pems, поэтому я в значительной степени пробую все комбинации

Я в растерянности, я часами заходил в Google, пытаясь найти кого-то с такой же проблемой, но не смог. Любая помощь будет оценена.

UPDATE


Оказывается, явно определяя сертификаты там, где они не нужны. выполнение этой команды позволило мне присоединиться к каналу.

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

В этот момент все док-контейнеры работали, и канал работал. Мне удается запустить сеть, и все работает нормально (я мог запросить код цепи, регистр обновлялся и т. д.). Однако для обработки транзакции все равно требуется 2 секунды. Снова я сделал некоторую отладку, чтобы удостовериться, что конфигурация в заказе была правильна.

  1. получить блок конфигурации из канала на заказчике
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 (используя бинарный файл 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 секунды на транзакцию.

1 Ответ

0 голосов
/ 27 марта 2019

Работая с Hyperledger composer, вы должны помнить, что он устарел. В прошлом я много раз повторял одни и те же шаги и создавал собственные сети. Я думаю, что ваша проблема может быть из-за несоответствия версий. Попробуйте понизить композитор до 0.19.

Кроме того, вы пытались сделать Docker PS, чтобы убедиться, что все необходимые контейнеры работают?

Кроме того, перед выполнением команды configtxgen есть простая команда

export FABRIC_CFG_PATH=$PWD

Ты это сделал?

...