如何读取本地Hyperledger Fabric网络的账本文件?
账本文件存储位置
- 采用Docker部署的Hyperledger Fabric 2.2测试网络中,每个Peer节点的账本数据默认存储在对应容器的
/var/hyperledger/production/ledgersData路径下:chains子目录:存储各通道的原始区块文件stateLeveldb子目录:存储世界状态数据(默认使用LevelDB作为状态数据库时生效)ledgerProvider子目录:存储账本元数据
- 若需要查看宿主机上的实际存储路径,可先查询Peer节点对应的Docker卷名(格式通常为
docker_peer0.org1.example.com),再执行命令查看:docker volume inspect <对应Peer的卷名>
历史交易与区块查看方法
方法1:使用Peer CLI工具(官方原生支持)
- 首先进入目标Peer节点的容器
按照fabcar示例默认配置启动的网络,容器内已经预置好了Peer CLI的所需环境变量,可直接执行后续命令。docker exec -it peer0.org1.example.com bash - 拉取指定通道的区块文件
示例为拉取mychannel通道的最新区块保存为本地文件:
也可将peer channel fetch newest mychannel.block -c mychannelnewest替换为指定区块号,拉取对应高度的区块。 - 解码区块文件为可读JSON格式
使用configtxlator工具解码二进制区块文件:
生成的JSON文件中,configtxlator proto_decode --input mychannel.block --type common.Block --output mychannel_block.jsonheader字段包含区块号、前序区块哈希等元数据,data.data字段存储当前区块包含的所有交易明细。 - 查看单资产的历史变更记录
fabcar示例链码已经默认实现了GetHistoryForKey接口,可直接通过链码查询指定资产的所有历史交易:
命令中的peer chaincode query -C mychannel -n fabcar -c '{"Args":["GetHistoryForKey", "CAR0"]}'CAR0可替换为你要查询的资产键名。
内容的提问来源于stack exchange,提问作者Tenno
相关产品推荐
相关产品推荐

