参考书籍:《Hyperledger Fabric菜鸟进阶攻略》—— 黎跃春等编著
账本数据
分类账本保存着所有交易变化的记录,具有有序和防篡改的特点。每一次交易,链码需要将数据变化记录在账本中,需要记录的数据称为状态,以键值对(key-value)的形式进行存储。
Fabric中的账本由两个不同但相关的部分组成。
- 世界状态
- 区块链
世界状态在Fabric中以键值对的方式保存一组分类账本数据状态的最新值。保存世界状态的实际上是一个NoSQL数据库,以便对状态的存储及检索;可以使应用程序无须遍历整个事务日志而快速获取当前账本的最新值。其value可以是一个简单的值,也可以由一组键值对组成的复杂数据组成。
每个世界状态有一个版本号,起始版本号值为0。每次对状态进行更改时,版本号会递增。
区块链是一个记录交易日志的文件系统,它由哈希值连接的N个区块构造而成;每个区块包含一系列的多个有序的交易。区块头包含了本区快所记录的交易的哈希值。以这种方式,账本中所有交易都被有序地并以加密的形式连接在一起。
数据存储
区块链是以文件的形式进行存储的,各区块文件默认以blockfile_为文件前缀,后面以6位数字命名,起始数字默认位000000,如有新文件则每次递增1。
区块链文件默认存储在chains文件夹,该文件夹包含两个子目录:
-
保存区块链文件的chains目录
该目录下以通道文件目录区分各个账本,各个peer节点对于它所属的每个通道都会保存一份该通道的账本副本。
-
使用LevelDB实现保存索引信息的index目录
</