无法获取系统通道配置块,如何解析orderer节点的blockfile_000000?
解决方案:从Orderer的blockfile提取系统通道配置块
首先明确:blockfile_000000是Orderer的链存储文件,它是多个区块拼接存储的格式,每个区块前会附加8字节的大端序长度前缀,直接用configtxlator或configtxgen解码整个文件会因为格式不匹配报错。以下是正确的提取和解码步骤:
方法1:手动截取单个区块
- 读取第一个区块(创世区块,即系统通道初始配置块)的长度:
BLOCK_LEN=$(od -An -t u8 -N 8 ./blockfile_000000)
- 截取对应长度的区块内容到单独文件:
dd if=./blockfile_000000 of=./genesis_block skip=8 bs=1 count=$BLOCK_LEN
- 解码区块为JSON格式:
configtxlator proto_decode --input ./genesis_block --type common.Block --output ./genesis_block.json
- 提取配置部分:
jq .data.data[0].payload.data.config ./genesis_block.json > ./config.json
方法2:使用Orderer自带命令(更简便)
直接用Orderer的inspect命令指定区块号提取,无需手动处理长度:
orderer inspect block ./blockfile_000000 --block-number 0 > ./genesis_block.json
之后同样可以用jq提取配置字段。
内容的提问来源于stack exchange,提问作者Miguel Mota
相关产品推荐
相关产品推荐

