Hyperledger Fabri c - Как очистить среду DEV после каждого сетевого теста цепочки блоков? - PullRequest
0 голосов
/ 27 марта 2020

Фабри c 1.4.3 версия. Сеть блокчейнов с 1 Oderer (соло) + 1 Org, работающая на Docker.

Попытка создания цепного кода из-за ошибки PANI C на PEER0 и сбоев однорангового узла.

Невозможно создать цепной код, потому что PEER0 вылетает при выполнении процесса.

В командной строке CLI docker я выполнил следующую последовательность команд:

1) $> peer channel create -o $ORDERERNAME -c $CHANNELNAME -f $CONFIGTXFOLDER/devchannel.tx --tls --cafile=$ORDERER_TLSCACERT

Результат в Cli : UTC [cli.common] readBlock -> INFO 04e Received block: 0

2) $> peer channel join -o $ORDERERNAME -b $CONFIGTXFOLDER/devgenesis.block --tls --cafile=$ORDERER_TLSCACERT

Результат в Cli: UTC [channelCmd] executeJoin -> INFO 03e Successfully submitted proposal to join channel

3) $> peer chaincode install -n $CHCODENAME -p $CHCODEPATH -v $CHCODEVERSION -l node --tls --cafile $ADMIN_PEER_TLSCACERT

Результат в Cli: UTC [chaincodeCmd] install -> INFO 04a Installed remotely response:<status:200 payload:"OK" >

4) $> peer chaincode instantiate -C $CHANNELNAME -n $CHCODENAME -v $CHCODEVERSION -o $ORDERERNAME -c '{"Args":["init","a","100","b","200"]}' -P "AND ('GuaraniMSP.admin')" --tls --cafile $ORDERER_TLSCACERT --tlsRootCertFiles $CORE_PEER_TLS_ROOTCERT_FILE

Результат до cra sh в PEER0:

UTC [gossip.state] commitBlock -> ERRO 87e Got error while committing(unexpected Previous block hash. Expected PreviousHash = [c87a4b77e4c790f78b0c2e3c97d97de9907a09daf5dc2f039c7e3b3e1440f5d1], PreviousHash referred in the latest block= [953e31164a84d6d1b9b446130d1e7d5af8ede818284e8fa7c315b2125b519e38]
github.com/hyperledger/fabric/common/ledger/blkstorage/fsblkstorage.(*blockfileMgr).addBlock

[...]

UTC [gossip.state] deliverPayloads -> PANI 87f Cannot commit block to the ledger due to unexpected Previous block hash. Expected PreviousHash = [c87a4b77e4c790f78b0c2e3c97d97de9907a09daf5dc2f039c7e3b3e1440f5d1], PreviousHash referred in the latest block= [953e31164a84d6d1b9b446130d1e7d5af8ede818284e8fa7c315b2125b519e38]
github.com/hyperledger/fabric/common/ledger/blkstorage/fsblkstorage.(*blockfileMgr).addBlock

[...]

/opt/go/src/runtime/asm_amd64.s:1333
panic: Cannot commit block to the ledger due to unexpected Previous block hash. Expected PreviousHash = [c87a4b77e4c790f78b0c2e3c97d97de9907a09daf5dc2f039c7e3b3e1440f5d1], PreviousHash referred in the latest block= [953e31164a84d6d1b9b446130d1e7d5af8ede818284e8fa7c315b2125b519e38]
github.com/hyperledger/fabric/common/ledger/blkstorage/fsblkstorage.(*blockfileMgr).addBlock

[...]

Я открыл проблему в Hyperledger Fabri c JIRA по этому поводу ситуации, и я получил информацию, которая мне нужна, чтобы очистить среду, чтобы убедиться, что нет никаких артефактов из предыдущих испытаний. Выпуск FABB-147 в Hyperledger Fabri c (Мои журналы есть).

Я обнаружил проблему, задокументированную близко к моей, но с различиями, в одноранговые узлы получают кр sh после обновления однорангового узла

Теперь я должен подтвердить, что моя среда Hyperledger Fabri c чистая. Но как?

Существует ли какая-либо документированная процедура или контрольный список для проверки отсутствия артефактов предыдущих испытаний в Hyperledger Fabri c?

Если я подавляю настройки ORDERER_GENERAL_GENESISFILE и ORDERER_GENERAL_GENESISPROFILE или ORDERER_GENERAL_GENESISPROFILE. yaml и docker -compose.yaml, будет ли элемент orderer запускаться нормально, и тогда сеть поймет, что при создании нового канала ему следует использовать информацию genesis.block?

Заранее спасибо за помощь .

Ответы [ 3 ]

0 голосов
/ 23 апреля 2020

Хотя это и не решение для очистки вашей среды, вот возможное решение вашей основной проблемы.

Команда peer channel create сгенерирует файл $CHANNELNAME.block в своем текущем рабочем каталоге. Это блок, который вы должны использовать, когда запускаете peer channel join, , а не блок генеза .

$> peer channel create  ... -c $CHANNELNAME 
$> peer channel join ... -b $CONFIGTXFOLDER/devgenesis.block

. Это испортит ваш день, заставив ваших сверстников взломать sh большую часть время и редко работают после воссоздания главной книги из нового блока генезиса. Попробуйте вместо этого:

$> peer channel create  ... -c $CHANNELNAME 
$> peer channel join ... -b $CHANNELNAME.block
0 голосов
/ 26 апреля 2020

Я использовал блок genesis из системной сети fabri c, загруженный в Ordener (из orderer.yaml или docker-compose.yaml), чтобы присоединиться к каналу, и это было неправильно.

источником моей ошибки было то, что я использовал блок системного генеза вместо блока генезиса, сгенерированного в команде peer channel create.

Я понял, что команда peer channel create использует модель блока транзакций (.tx) в качестве входных данных и выходных данных он генерирует блок происхождения (.block), который должен использоваться в качестве входных данных в команде peer channel join.

Правильная последовательность:

Шаг 1) $> peer channel create -o $ORDERERNAME -c $CHANNELNAME -f $CONFIGTXFOLDER/devchanneltrack.tx --outputBlock $CHANNELFOLDER/devchannelgen.block --tls --cafile=$ORDERER_TLSCACERT

Шаг 2) $> peer channel join -o $ORDERERNAME -b $CHANNELFOLDER/devchannelgen.block --tls --cafile=$ORDERER_TLSCACERT

Я внес исправления в сценарии, и теперь я могу присоединиться к каналу. Затем я выполнил установку и создание новых цепных кодов на канале, и они отлично работали.

0 голосов
/ 08 апреля 2020
  1. Запустите эту команду docker system prune
  2. Запустите вашу сеть снова

надеюсь, что это поможет вам, поскольку это помогло мне

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...