主页 > imtoken苹果下载不了 > Fabric Hyperledger 架构的功能图
Fabric Hyperledger 架构的功能图
Fabric超级账本的基本架构功能、账本结构、源代码和智能合约。
更多区块链技术及应用分类:
区块链应用 区块链开发
其他链条
代币经济|
一、Fabric系统架构
结构图
二、网络拓扑结构 1、节点类型
客户端节点:中介节点
Peer节点:(Anchor(锚节点)或Endorser(背书节点)或Committer(计算节点))
Orderer节点:排序(solo/kafka排序)不支持拜占庭容错机制(恶意节点)
CA:(fabric提供的可选ca组件,或者第三方机构,比如中国的CFCA)
2.拓扑图例
企业级联盟链:排序节点可以暴露在公网中,每个企业实体只暴露一个主节点。
三、交易流程
(1) 客户端先去背书节点获取模拟执行结果和背书节点签名,然后向排序节点提交交易(模拟执行结果+签名)
(2) 主节点收到打包好的区块后,回头计算验证某笔交易是否有效。 如果无效,仍会保存在区块账本中,但不会更新状态数据库(无效交易后会浪费磁盘空间,后续版本会过滤掉无效交易)
三、共识机制 1、总体流程
交易背书(模拟-Endorser)
交易排序(Sorting-Orderer)
交易验证(Verification-Committer)
2.交易排序
目的:保证系统事务顺序的一致性(有限状态机)
3、多渠道模式
4.Orderer部分源码
三、账本结构 1.Peer 账本存储
Orderer节点的账本存储:只是临时存储,不影响世界状态和历史状态以太坊节点类型,只是块存储。
Peer节点的账本存储:
块存储在文件系统中,需要使用levelDB作为块索引
状态数据库存储区块链上的最新数据,可以复制。 (couchDB可以支持结构化数据存储和模糊查询)
历史状态索引,如果没有状态数据库,可以使用recovery。 只存储状态变化对应的交易ID,不存储状态结果,节省存储空间。
2. 世界状况
事务执行后所有key的最新值
显着提高链码执行效率
世界状态是所有交易日志的快照,可以随时重构
3.历史数据索引(可选)
记录更改操作以太坊节点类型,而不是具体更改
历史阅读-->历史数据索引+区块阅读
账本最大容量:64M * 100,0000
块提交:
保存块文件 ==> 更新世界状态 ==> 更新历史状态(可选)
4.源码解读(4部分)
读写集
状态数据
历史世界
块文件
核心 --> 账本 -->
(1)交易模拟执行器代码位置(读写集的实现):
核心\分类账\kvledger\txmgmt\txmgr\lockbasedtxmgr\lockbased_tx_simulator.go
(2)读写集的验证:
核心\分类账\kvledger\txmgmt\验证器\statebasedval\state_based_validator.go
(3)状态数据库:
核心\分类账\kvledger\txmgmt\statedb\stateleveldb\stateleveldb.go
// 3 个问题
// 1. 如何关联智能合约键值对与底层存储的键值对数据隔离
// 2. 如何持久化区块的状态信息
// 3. 如何识别最新存储的区块号
(4) 历史数据库
核心\分类账\kvledger\历史\historydb\historyleveldb\historyleveldb.go
(5) 块文件
通用\分类帐\blkstorage\fsblkstorage\fs_blockstore.go
4. 智能合约(链码)
只有背书节点才能执行链码
1.链码生命周期:
盒
安装
实例化(只执行一次)
升级
相互作用
2. Chaincode交互流程
ESCC系统链码用于完成系统进程,在节点进程中运行
3.系统链码
LSCC:管理链代码生命周期(部分)
CSCC:配置管理链码
QSCC:查询账本存储
ESCC:交易背书链码
VSCC:用于交易验证
4. Chaincode编程接口
在里面()
调用()
原文链接:Fabric Hyperledger架构功能图