Hyperledger Fabric 学习联盟链 5 -- Hyperledger Fabric账本存储

1.账本存储概述
Hyperledger Fabric 学习联盟链 5 -- Hyperledger Fabric账本存储_第1张图片
 
     首先需要明白的是 这里的账本存储并不是我们上节课介绍的排序节点的账本存储,而是对于peer节点的,他们之间的区别是排序节点的账本存储只是作为一个临时的区块存储,并不涉及到世界状态,历史状态相关的内容。整个图可以分为3个不同的部分,首先是最左边的区块链,也就是狭义上的区块存储,他的底层存储引擎是一个文件系统,也就是说区块并不是存储在数据库里面,而是直接存成了文件。
     右下角的区块索引用于查询区块, 它是将区块的一些属性跟文件的存储位置关联起来,比如说可以根据区块的hash,区块的高度产生区块,也可以根据交易的id产生区块,区块索引的实现使用了levelDB,这是一个可以内嵌的KV数据库,没有区块索引是无法读取区块的。基于文件索引的区块链需要区块索引这样一个附加组件,因为在fabric的实现里,并不是一个区块单独落盘整个文件,而是有很多个区块组合成文件块的形式进行存储,
所以必须去标识某一个区块在哪一个文件块中并且它的偏移量是多少,否则是无法读取的。而这样一个运算过程就是区块索引所做的作用。
    接下来看右上角的状态数据库,状态数据库可以理解为区块链上的最新数据,随着交易的增加不停的更新,而且状态可以根据区块重构。
    历史状态索引并不存储状态的具体变动结果,而只是告诉数据在哪一个交易中被更新了,这样做的好处是 节省了存储空间,只需要在查询的时候找到对应的交易ID, 然后再根据区块索引模块查找相应的内容就可以了。
  2.交易读写集
Hyperledger Fabric 学习联盟链 5 -- Hyperledger Fabric账本存储_第2张图片
交易读写集就是告诉区块链在交易模拟中读取了那些数据,写入了那些数据,删除了那些数据。交易验证是一个状态更新的过程,更新的内容就是读写集中的写集。
交易读写集中有3个基本的概念,分别是读集,写集,版本号。
Hyperledger Fabric 学习联盟链 5 -- Hyperledger Fabric账本存储_第3张图片
 
Hyperledger Fabric 学习联盟链 5 -- Hyperledger Fabric账本存储_第4张图片
Hyperledger Fabric 学习联盟链 5 -- Hyperledger Fabric账本存储_第5张图片
Hyperledger Fabric 学习联盟链 5 -- Hyperledger Fabric账本存储_第6张图片
3.账本存储其他概念
Hyperledger Fabric 学习联盟链 5 -- Hyperledger Fabric账本存储_第7张图片
世界状态可以理解为区块链上的缓存
Hyperledger Fabric 学习联盟链 5 -- Hyperledger Fabric账本存储_第8张图片
Hyperledger Fabric 学习联盟链 5 -- Hyperledger Fabric账本存储_第9张图片
Hyperledger Fabric 学习联盟链 5 -- Hyperledger Fabric账本存储_第10张图片
Hyperledger Fabric 学习联盟链 5 -- Hyperledger Fabric账本存储_第11张图片
Hyperledger Fabric 学习联盟链 5 -- Hyperledger Fabric账本存储_第12张图片
Hyperledger Fabric 学习联盟链 5 -- Hyperledger Fabric账本存储_第13张图片
4.账本存储代码(上)
5.账本存储代码(下)
6.账本存储总结
 
 
 
 

你可能感兴趣的:(区块链)