Hyperledger Fabric链文件是什么?如何获取交易记录链文件?
Hyperledger Fabric链文件定义与位置查询(v1.1)
一、什么是Hyperledger Fabric链文件?
Hyperledger Fabric的链文件是区块链账本的核心组成部分之一,它负责持久化存储整个通道上的所有交易历史记录。简单来说:
- 它以区块为基本单位存储数据,每个区块包含一批经过共识的交易、区块头(含前一个区块的哈希值,保证链的不可篡改)等元数据。
- 链文件和「世界状态(World State)」共同构成Fabric的完整账本:世界状态是当前账本数据的快照(比如你交易中a和b的账户余额),而链文件则是所有交易的历史流水,用来追溯每一笔数据的变更过程,也可以用来验证世界状态的正确性。
二、链文件的存储位置(基于byfn.sh启动的网络)
你用./byfn.sh -m up启动的是Fabric官方的First Network,链文件默认存储在各个Peer节点的Docker容器内部,具体路径和访问方式如下:
1. 进入目标Peer容器
每个Peer节点都有自己的链文件副本(因为Fabric是分布式账本,每个Peer会同步通道上的所有区块),比如你要查看Org1的Peer0节点的链文件,先执行命令进入容器:
docker exec -it peer0.org1.example.com bash
如果要查看其他Peer,把命令里的容器名换成peer1.org1.example.com、peer0.org2.example.com或peer1.org2.example.com即可。
2. 链文件的具体路径
进入容器后,导航到对应通道的链文件目录(你的通道是mychannel):
cd /var/hyperledger/production/ledgersData/chains/chains/mychannel
执行ls命令,你会看到类似这样的文件:
blockfile_000000:存储创世区块和后续的交易区块(默认每个文件大小限制为64MB,满了会自动生成blockfile_000001等新文件)index:区块索引文件,用来快速定位区块chainstate:这个是世界状态的存储目录(不属于链文件,仅作参考)
3. 宿主机持久化访问(可选)
默认情况下byfn.sh没有将容器内的链数据目录映射到宿主机,如果你想在宿主机直接查看,可以修改docker-compose-base.yml中对应Peer的卷配置,添加如下映射(以peer0.org1为例):
volumes: - ./peer0.org1.example.com:/var/hyperledger/production
修改后重启网络,宿主机的./first-network/peer0.org1.example.com/ledgersData/chains/chains/mychannel目录就会同步容器内的链文件了。
内容的提问来源于stack exchange,提问作者countlessgrief
相关产品推荐
相关产品推荐

