Hyperledger Fabric学习笔记——关键概念之Ledger

1、Ledger的组成

ledger由两部分组成:世界状态(world state)和区块链(blockchain)。世界状态是一组通过键值对保存ledger当前值(业务对象当前属性值)的数据库,区块链是导致当前世界状态的transactions的记录,即transaction日志。

2、World State

在fabric中,world state可以根据需求配置为不同的数据库。每个world state有一个在内部使用的版本号,每次状态更改的时候会递增,每当状态更新的时候会检查版本号,以确保当前状态和认可时的版本匹配。

3、Blockchain

区块(块头、块数据、块源数据)

区块头:包含三个字段,分别是区块编号、当前区块哈希、上一个区块区块头哈希。

区块编号:一个整数,从0(创世区块)开始,每次加1。

当前区块哈希:当前区块包含所有transaction的哈希。

上一个区块头的哈希:上一个区块头的哈希值。

块数据:包含按顺序排列的transaction清单,当orderer创建块时写入。

块元数据:包含块创建者的证书和签名,每个transaction有效或者无效指示符,以及到该块为止的累积状态更新的哈希。

Transactions(transaction头、transaction签名、transaction建议、transaction响应、认可列表)

transaction头:有关交易的一些元数据——例如,相关链码的名称及其版本。

transaction签名:包含应用程序私钥创建的签名,用于检查交易明细是否未被篡改。

transaction提议:应用程序提供给相应要用的智能合约的一组输入参数。

transaction响应:世界状态运行智能合约后的前后值,是一个读写集,是运行智能合约的输出,如果transaction成功通过验证,将被应用于ledger以更新世界状态。

transaction认可列表:满足认可策略所需的组织的签名的transaction响应的列表,虽然transaction中只包含一个transaction,但是有多个认可,因为与足够认可不匹配的transaction响应将被视为无效响应而拒绝。

4、世界状态数据库选择

当前,世界状态数据库的选项包括LevelDB和CouchDB。

LevelDB:默认值,适用于ledger state为简单键值对的情况。与对等节点位于同一位置,嵌入在同一操作系统进程中。

CouchDB:适用于当ledger state为JSON文档时,支持更丰富的查询和更新业务交易。在单独的操作系统进程中运行。

5、命名空间

实际上,每个链码都有自己的世界状态,世界状态位于一个命名空间中,只有相同链码中的智能合约才能访问相应的命名空间。区块链没有命名空间,它包含来自许多不同的智能合约命名空间的transactions。

6、通道

每个通道都有完全独立的ledger,这意味着完全独立的区块链、世界状态、命名空间。

发布了17 篇原创文章 · 获赞 0 · 访问量 614

猜你喜欢

转载自blog.csdn.net/Nemoosi/article/details/104530731
今日推荐