目录
- 参考
- 账本
- 世界状态
- 区块链
-
- 区块
- 交易
- 命名空间
参考
Hyperledger Fabric 官方文档
账本
在 Hyperledger Fabric 中,账本由两个不同但相关的部分组成——世界状态和区块链。所谓世界状态,就是保存了一组当前值的数据库(世界状态的实现就是通过 levelDB 或者 CouchDB 这两个可选,可插拔的数据库);而区块链则是记录导致当前世界状态的所有更改的事务日志。
世界状态
世界状态就是存储的当前值,其目的是,因为当前值往往存在频繁的操作,如果通过遍历的方式获取,那么就太麻烦了。
同时世界状态还有一个版本号,用于反应状态的更新。
【注】我的理解是,世界状态就是一个全局的临时变量,如果你了解一点操作系统或者计算机体系结构的知识的话,你会发现它的作用和 CPU 中的寄存器是很类似的,无非是加上了一个版本管理,而这又不过是 git 的功能。
区块链
区块链在超级账本中以文件的方式实现。
和其他区块链基本相同,不过在超级账本的区块链中,创世区块包含的是该区块链的一些配置信息。
区块
交易
上图中,Proposal(提议)的作用是作为智能合约调用是的输入参数,这些参数与当前的世界状态结合,形成新的世界状态(用于更新数据)。
而 Response 用于输出,如果交易成功了,则用于更新世界状态。
Endorsements 这是来自每个所需组织的签名交易响应列表,足以满足背书策略。如果不满足背书策略,则不会更新。
命名空间
事实上,在超级账本中并不是只有一个区块链,更确切的说,这是一个区块网,超级账本的另一个概念 channel 是一个区块网中的一个子网络(子账本)。而子账本中装载的智能合约(链码)拥有一个世界状态,同一链码中的数据位于相同的命名空间。