Hyperledger Fabric学习笔记——5.fabric共识排序
fabric不需要依赖挖矿,通过交易排序达成共识1.共识机制达成共识需要3个阶段,交易背书,交易排序,交易验证交易背书:模拟交易交易排序:确定交易顺序,最终将排序好的交易打包区块分发交易验证:区块存储前要进行一下交易验证2.orderer节点的作用交易排序目的:保证系统的最终一致性(有限状态机)solo:单节点排序kafka:外置的分布式消息队列区块分发orderer中的区块并不是最终持久化的区块
·
fabric不需要依赖挖矿,通过交易排序达成共识
1.共识机制
- 达成共识需要3个阶段,交易背书,交易排序,交易验证
- 交易背书:模拟交易
- 交易排序:确定交易顺序,最终将排序好的交易打包区块分发
- 交易验证:区块存储前要进行一下交易验证
2.orderer节点的作用
- 交易排序
- 目的:保证系统的最终一致性(有限状态机)
- solo:单节点排序
- kafka:外置的分布式消息队列
- 区块分发
- orderer中的区块并不是最终持久化的区块
- 是一个中间状态的区块
- 包含了所有交易,不管是否有效,都会打包传给组织的锚节点
- 多通道的数据隔离
3. 源码目录
- bccsp:与密码学相关的,加密、数字签名、证书,将密码学中的函数抽象成了接口,方便调用和扩展
- bddtests:行为驱动开发,从需求直接到开发
- common:公共库、错误处理、日志处理、账本存储、相关工具
- core:是fabric的核心库,子目录是各个模块的目录
- comm:网络通信相关
- devenv:官方提供的开发环境,使用的是Vagrant
- docs:文档
- events:事件监听机制
- examples:官方提供的例子程序
- gossip:通信协议,组织内部的通信,区块同步
- gotools:用于编译
- images:docker镜像相关
- msp:成员服务管理,member service provider,读取证书做签名
- orderer:排序节点
- peer:peer节点
- proposals:用于扩展,新功能的提案
- protos:数据结构的定义
4.共识机制源码
- main.go是入口,orderer节点的初始化
- manager.go是控制中枢,是对链的操作,拿到chainsupport对象
- chainsupport.go链对象的代理,与链是对应的
- cut()方法:区块切割
- solo和kafka相关的配置
- server.go有两个Handle,是交易收集和区块广播的方法
- 将共识简化为排序,达成最终一致性
更多推荐
已为社区贡献1条内容
所有评论(0)