超级账本的共识机制

Fabric中的共识机制主要分为三步

  • 交易背书 - 模拟执行交易并进行签名,将结果返回给提交者
  • 交易排序 - 排序节点接收已经背书的交易,并对交易进行排序,将排好序的交易进行打包,生成区块,并分发给各组织的主节点(Anchor)。
  • 交易验证 - 验证交易是否有效

交易排序

对交易进行排序的目的是为了保证系统交易顺序的一致性(有限状态机)
Fabric中有两种排序方式,Solo和Kafuka

区块分发

排序节点的区块分发是数据中间状态的区块,并不是实实在在存储在Peer中的区块,是否存储区块要经过Peer的验证后才决定。Orderer节点并不保证区块交易的有效性,它只负责打包

多通道数据隔离

排序节点在收到交易提议时,会根据通道类型分别打包,不同通道的数据互不影响,互不相通。Peer收到不同通道的区块时,也会独立存储,从而达到数据隔离。

世界状态

  • 世界状态是交易执行后所有区块的最新数据
  • 世界状态是区块链的一个快照,可以随时通过区块重新构造
  • 提升链码执行效率

历史数据索引

如果智能合约需要查询历史数据,则需要开启这个功能。历史数据索引只记录改变操作,不记录改变了什么。

区块存储

  • 命名为blockfile_xxx
  • 一个区块64M,硬编码
  • 一个账本(一条链)最大容量 64M * 1000000(区块编号最大值)

区块读取

  • 区块文件流
  • 区块流
  • 区块迭代器

区块索引

  • 快速定位区块
  • 索引建可以是区块高度,区块哈希,交易哈希
  • 索引值是 区块文件编号 + 文件内容偏移 + 区块数据长度

你可能感兴趣的:(超级账本的共识机制)