首页 > 解决方案 > Hyperledger Fabric - 如何在每次区块链网络测试后清除 DEV 环境?

问题描述

Fabric 1.4.3 版本。具有 1 个 Oderer (solo) + 1 个 Org 的区块链网络,在 Docker 上运行。

由于 PEER0 上的 PANIC 错误和对等崩溃,尝试实例化链代码。

无法实例化链码,因为 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

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 Fabric JIRA 上打开了一个关于这种情况的问题,我收到了我需要清除环境以确保没有先前试验的工件的信息。 在 Hyperledger Fabric 上发布 FABB-147(我的日志在那里)。

我看到一个问题记录在我的附近,但有所不同,在锚点更新后,同行会崩溃

现在我必须证明我的 Hyperledger Fabric 环境是清晰的。但是怎么做?

是否有任何记录在案的程序或清单来验证 Hyperledger Fabric 中是否没有来自先前试验的工件?

如果我抑制 orderer.yaml 和 docker-compose.yaml 的 ORDERER_GENERAL_GENESISFILE 和 ORDERER_GENERAL_GENESISPROFILE 设置,orderer 元素是否会正常启动,然后网络会理解它应该在创建新通道时使用 genesis.block 通知?

在此先感谢您的帮助。

标签: crashhyperledger-fabricchannelpeerhyperledger-chaincode

解决方案


  1. 运行此命令docker system prune
  2. 重新启动您的网络

希望这对你有帮助,因为它对我有帮助


推荐阅读