Hyperledger Fabric - 如何在每次区块链网络测试后清除 DEV 环境?
Hyperledger Fabric - How to clear out the DEV environment after each blockchain network test?
Fabric 1.4.3 版本。具有 1 个 Oderer(单独)+ 1 个组织的区块链网络,运行 on 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 上提出了一个关于这种情况的问题,我收到了我需要清理环境以确保没有来自先前试验的工件的信息。
Issue FABB-147 at Hyperledger Fabric(我的日志在那里)。
我在 peers get crash after anchor peer update
看到了一个与我的记录相近但有所不同的问题
现在我必须证明我的 Hyperledger Fabric 环境是干净的。但是怎么办?
是否有任何记录的程序或清单来验证是否没有来自 Hyperledger Fabric 先前试验的工件?
如果我抑制 orderer.yaml 和 docker-compose.yaml 的 ORDERER_GENERAL_GENESISFILE 和 ORDERER_GENERAL_GENESISPROFILE 设置,orderer 元素是否会正常启动,然后网络会理解它应该使用 genesis.block 在创建新频道时通知?
在此先感谢您的帮助。
- 运行 这个命令
docker system prune
- 启动您的网络
再次
希望这对你有所帮助,因为它对我有帮助
虽然这不是清洁您的环境的答案,但这是您潜在问题的可能解决方案。
peer channel create
命令将在其当前工作目录中生成一个 $CHANNELNAME.block
文件。当运行 peer channel join
,不是创世块。
时,这是你需要使用的块
$> peer channel create ... -c $CHANNELNAME
$> peer channel join ... -b $CONFIGTXFOLDER/devgenesis.block
会导致你的同行大部分时间崩溃,毁掉你的一天,并且在从新的创世块重新创建分类帐后很少工作。试试这个:
$> peer channel create ... -c $CHANNELNAME
$> peer channel join ... -b $CHANNELNAME.block
我使用来自系统结构网络的创世块,加载到 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
我修改了脚本,现在可以加入频道了。然后我在频道上安装和实例化了新的链码,它们运行得很好。
Fabric 1.4.3 版本。具有 1 个 Oderer(单独)+ 1 个组织的区块链网络,运行 on 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 上提出了一个关于这种情况的问题,我收到了我需要清理环境以确保没有来自先前试验的工件的信息。 Issue FABB-147 at Hyperledger Fabric(我的日志在那里)。
我在 peers get crash after anchor peer update
看到了一个与我的记录相近但有所不同的问题现在我必须证明我的 Hyperledger Fabric 环境是干净的。但是怎么办?
是否有任何记录的程序或清单来验证是否没有来自 Hyperledger Fabric 先前试验的工件?
如果我抑制 orderer.yaml 和 docker-compose.yaml 的 ORDERER_GENERAL_GENESISFILE 和 ORDERER_GENERAL_GENESISPROFILE 设置,orderer 元素是否会正常启动,然后网络会理解它应该使用 genesis.block 在创建新频道时通知?
在此先感谢您的帮助。
- 运行 这个命令
docker system prune
- 启动您的网络 再次
希望这对你有所帮助,因为它对我有帮助
虽然这不是清洁您的环境的答案,但这是您潜在问题的可能解决方案。
peer channel create
命令将在其当前工作目录中生成一个 $CHANNELNAME.block
文件。当运行 peer channel join
,不是创世块。
$> peer channel create ... -c $CHANNELNAME
$> peer channel join ... -b $CONFIGTXFOLDER/devgenesis.block
会导致你的同行大部分时间崩溃,毁掉你的一天,并且在从新的创世块重新创建分类帐后很少工作。试试这个:
$> peer channel create ... -c $CHANNELNAME
$> peer channel join ... -b $CHANNELNAME.block
我使用来自系统结构网络的创世块,加载到 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
我修改了脚本,现在可以加入频道了。然后我在频道上安装和实例化了新的链码,它们运行得很好。