Fabric v1.x 账本与状态数据库

一、Fabric账本

Fabric账本是有序的、不可篡改的状态转换记录,包括区块链(Blockchain)和世界状态(World stat)两部分。

  • 区块链中保存着不可变的顺序记录,包含配置记录,例如channel的配置;还包含全部交易记录;
  • 世界状态中维护账本的当前状态,方便Appication快速查询

二、区块链

区块链是一个历史交易记录,记录着所有数据对象是如何到达当前状态的。
下图中有4个区块B0、B1、B2、B3,第一个区块B0为创世区块(genesis block),保存一些配置信息,包括Order、peer的信息和证书信息;后面的区块B1、B2、B3则保存着后续交易信息:
在这里插入图片描述

2.1 区块信息

区块分为3部分,分别为区块头(Block header)、区块数据(Block Data)、区块元数据(Block Data):

  • 区块头里面包含区块序号(Block number)、当前区块哈希(Current Block Hash)、上一个区块哈希(Previous Block Hash),
  • 区块数据就是一系列交易数据;
  • 区块元数据主要包含区块写入时间、写入的人以及签名。

在这里插入图片描述

2.2 交易信息

交易(Transaction)保存着捕获的关于交易的一些基本元数据:

  • transaction header:chaincode名字、版本等信息
  • signature:client的签名
  • proposal:client的提案,主要是一些输入参数
  • response:智能合约执行前后的数据
  • endorsement:所有背书节点各自返回的背书结果,由背书策略而定,可能有多个

在这里插入图片描述

三、世界状态

世界状态维护着一组业务对象的当前状态。采用KV数据库的形式,每组数据包含key、value以及version,每次修改数据时version都会增加。查询数据时,直接通过状态数据库就可以快速地获取数据。如下所示:
在这里插入图片描述
下图列出了账本中的数据示例:
在这里插入图片描述

发布了29 篇原创文章 · 获赞 3 · 访问量 5581

猜你喜欢

转载自blog.csdn.net/ice_fire_x/article/details/104362219
今日推荐