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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值