Fabric超级账本架构功能图示

Fabric评论1,025阅读模式
摘要

Fabric超级账本基本架构功能,账本结构、源码以及智能合约。

一.Fabric系统架构

架构图一张

Fabric超级账本架构功能图示

 

二.网络拓扑

1.节点类型

客户端节点:媒介节点

Peer节点:(Anchor(锚节点)或Endorser(背书节点)或Committer(计算节点))

Orderer节点:排序(solo/kafka方式排序)都不支持拜占庭容错机制(作恶节点)

CA:(可选fabric提供的ca组件,也可选择第三方机构,如中国的CFCA)

2.拓扑图例

Fabric超级账本架构功能图示

  • ca在区块链网络以外(也可以在网络内)
  • gossip协议用于区块在组织内扩散
  • 排序节点将排好序的区块广播给每个组织的“主节点”
  • 三个orderer节点直接与kafka集群管理,而之间没有通讯,组织可以任意选择orderer节点进行通信

企业级联盟链:可以采用将orderer节点暴露在公网中,每个企业主体只暴露一个主节点,即可。

3.交易流程

Fabric超级账本架构功能图示

(1)客户端先去背书节点拿到模拟执行的结果以及背书节点的签名,然后去向排序节点提交交易(模拟执行结果+签名)

(2)主节点在接受到打包的区块后,回去计算验证某笔交易是否是有效的,若是无效的,依然会存储在区块账本中,但不会更新状态数据库(无效交易之后浪费磁盘空间,后续版本会过滤掉无效交易)

三.共识机制

1.整体过程

交易背书(模拟-Endorser)

交易排序(排序-Orderer)

交易验证(验证-Committer)

2.交易排序

目的:保证系统交易顺序的一致性(有限状态机)

3.多通道模型

Fabric超级账本架构功能图示

4.Orderer部分源码

Fabric超级账本架构功能图示

三.账本结构

1.Peer账本存储

Fabric超级账本架构功能图示

Orderer节点的账本存储:只是临时存储不影响世界状态、历史状态,只是区块存储。

Peer节点的账本存储:

区块存储在文件系统,需要使用levelDB作为区块索引

状态数据库存储区块链上的最新数据,可以重现。(couchDB可以支持结构化数据存储,支持模糊查询)

历史状态索引,若没有状态数据库时,可使用恢复。只存储状态变动对应的交易ID而不存储状态结果,节省存储空间。

2.世界状态

交易执行后的所有键的最新值

显著提升链码的执行效率

世界状态是所有交易日志的快照、可随时重构

3.历史数据索引(可选)

记录改变动作,不记录具体改变

历史读取 --> 历史数据索引 + 区块读取

账本最大容量:64M * 100,0000

区块提交:

保存区块文件==> 更新世界状态==>更新历史状态(可选)

4. 源码解读(4个部分)

读写集

状态数据

历史世界

区块文件

core --> ledger-->

(1)交易模拟执行器代码位置(读写集实现):

core\ledger\kvledger\txmgmt\txmgr\lockbasedtxmgr\lockbased_tx_simulator.go

(2)读写集的验证:

core\ledger\kvledger\txmgmt\validator\statebasedval\state_based_validator.go

(3)状态数据库:

core\ledger\kvledger\txmgmt\statedb\stateleveldb\stateleveldb.go

// 3个问题

// 1. 如何关联智能合约键值对与底层存储的键值对 数据隔离

// 2. 如何持久化区块的状态信息

// 3. 如何标识最新存储的区块编号

(4)历史数据库

core\ledger\kvledger\history\historydb\historyleveldb\historyleveldb.go

(5)区块文件

common\ledger\blkstorage\fsblkstorage\fs_blockstore.go

四、智能合约(链码)

只有背书节点才能执行链码

1.链码生命周期:

打包

安装

实例化(只执行一次)

升级

交互

2.链码交互流程

Fabric超级账本架构功能图示

ESCC系统链码,用来完成系统过程,运行在节点进程

3.系统链码

LSCC:管理链码生命周期(部分)

CSCC:配置管理链码

QSCC:查询账本存储

ESCC:交易背书链码

VSCC:用作交易验证

4.链码编程接口

Init()

Invoke()

Fabric最后更新:2020-11-6
FISCO BCOS证书与鉴权体系 BCOS

FISCO BCOS证书与鉴权体系

区块链之所以被称为“信任的机器”,是因为其通过密码学算法使各不信任的节点互相协作达到信任。这一理念在联盟链中的体现主要是基于PKI(公钥基础设施)建立证书体系,FISCO BCOS中的证书主要满足SS...