Hyperledger Fabric的工作流程
一、架构
Fabric是一个permissioned blockchain system,也就是整个区块链网络的每一个peer都可以及时知道其他peer的存在。
多个peer可以组成organization,在organization内,peers之间互相信任,每一个peer都维护一份ledger的副本,ledger包含有效和无效的transaction,除此之外peer还以状态数据库的形式维护一个当前状态。
除了peer外,还有一个重要的角色是ordering service,用来给transaction排序。
二、工作流程
Fabric基本的流程包括四个阶段,分别是
- 模拟(simulate)、
- 排序(order)、
- 验证(validata)、
- 提交(commit),
如下图所示:
1. 模拟
如其名字所说的一样,这一阶段只是模拟进行交易,并不真正更新ledger。
- client发起交易请求,请求被发送至endorsers(endorsement peer,这些peer是根据endorsement policy选出来的),
- endorsers根据当前本地的ledger状态并行模拟进行这些交易,虽然不改变ledger状态,但是会产生一个read set和一个write set记录这个交易的影响,模拟完成后,endorser对read set和write set进行签名并将其一起返回给client。
- 如果client收到的read set和write set是一致的(可能存在恶意endorser或者智能合约存在不确定的算法导致出现不一致),那么client就会生成一个真正的交易请求,包含read set、write set和对应的签名,并将这个请求发送给ordering service。
2. 排序
ordering service对来自client的交易进行排序,需要注意的是这里并不检查交易的内容,默认按照交易到达的顺序进行排序(这种简单的排序可能导致大量的交易冲突,降低性能,如果按某一特定的顺序排序可以极大的较少交易冲突,提高吞吐量,这也是这篇论文Blurring the Lines between Blockchains and Database Systems: the Case of Hyperledger Fabric提出的最重要的工作,这里就不细说)。
ordering service将交易排序后打包成block,发送给网络中的peers,这里不保证所有的peer同时收到这个block,但保证收到的block的顺序是一致的(使用gossip协议)。
3. 验证
当peer收到block后,就开始验证阶段。
验证阶段主要包括两个检查:
Endorsement Policy检查
检查交易是否满足endorsement policy以及是否包含有效的签名,否则说明交易可能被client或者恶意peer篡改过,直接丢弃。
交易冲突检查
检查交易之间是否存在冲突,也就是是否读脏数据的问题(某个交易在读取ledger之前,ledger被前一个交易改变了),如果存在就丢弃该交易。
A block T 1· · · T nis valid when, if a key k is read by transaction T i , then k has not been written by a transaction Tj with j < i.
两次检查都通过的话就可以进入commit阶段了。
4. 提交
peer将block添加到链上,注意这里是所有的交易(有效的和无效的)都加进来了。然后根据有效的交易改变当前的ledger状态。
————————————————
版权声明:本文为CSDN博主「yijiull」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yijiull/article/details/94966044
Hyperledger Fabric的工作流程相关推荐
- Blurring the Lines between Blockchains andDatabase Systems: the Case of Hyperledger Fabric(翻译)
Blurring the Lines between Blockchains and Database Systems: the Case of Hyperledger Fabric ABSTRACT ...
- Hyperledger Fabric 2.0 官方文档中文版 第3章 关键概念
Hyperledger Fabric 2.0 官方文档中文版 第3章 关键概念 总目录 3.关键概念 引言 什么是区块链? 区块链为什么有用? 什么是Hyperledger Fabric? Hyper ...
- Hyperledger Fabric相关文件解析
1相关文件说明 这一部分涉及相关配置文件的解析, 网络的启动涉及到多个文件,本文按以下顺序进行分析: . ├── base │ ├── docker-compose-base.yaml #1 │ └─ ...
- hyperledger fabric 实战开发——水产品溯源交易平台(二)
文章目录 前言 一.技术学习 1.Hyperledger fabric 1.1 流程 1.2 配置 1.3 范例解析并自写 1.3 算法实现 二.Web编写 前言 hyperledger fabric ...
- HyperLedger Fabric 1.0的Transaction处理流程
如果把区块链比作一个只能读写,不能删改的分布式数据库的话,那么事务和查询就是对这个数据库进行的最重要的操作.以比特币来说,我们通过钱包或者Blockchain.info进行区块链的查询操作,而转账行为 ...
- Hyperledger Fabric的网络拓扑图与交易流程
1. Fabric中的四种节点 客户端节点 介于应用程序与底层之间,是两者之间交互的媒介节点.它不能独立存在,必须与Orderer节点与Peer节点建立连接,才可以发挥作用,比如连接到Orderer节 ...
- Hyperledger Fabric笔记3--BYFN启动流程分析
Hyperledger Fabric笔记3--BYFN启动流程分析 BYFN--构建你的第一个网络,该方案提供了一个示例Hyperledger Fabric网络,该网络由两个组织组成,每个组织都维护两 ...
- hyperledger fabric交易流程
首先,先简单看看上面这个交易流程图吧,下面就这个图详细的说明一下整个fabric整个交易流程: 1.区块链客户端把交易请求发给之前约定好的所有背书节点(endorsing peer).这里说明一下en ...
- Hyperledger Fabric SDK Go构建第一个应用
写在前面: 本文内容翻译自:https://chainhero.io/2018/03/tutorial-build-blockchain-app-2/ ,文档中的命令操作均在实际环境进行验证,现将成果 ...
- HyperLedger Fabric Introduction——区块链超级账本介绍
介绍 HyperLedger Fabric是一个基于模块化架构的分布式账本解决方案平台,它拥有深度加密.便捷扩展.部署灵活及可插拔等特性.它设计之初的目的是支持不同组件的可插拔实现,并适应整个经济生态 ...
最新文章
- trunk口_什么是Trunk?Trunk详解
- ZStack实践汇 | ZStack部署实战之VDI异构部署
- 修复 Windows 10 设置界面里面混乱的语言翻译
- 汇编——Masm使用及程序结构
- 美国弗吉尼亚大学计算机科学,弗吉尼亚大学计算机科学排名第31(2018年TFE美国排名)...
- USACO 2018 February Contest, Silver-Rest Stops
- python二分查找时间复杂度_时间复杂度 二分查找
- MATLAB中用李沙育图形分析光栅尺sincos信号正交性
- 夕阳红旅游团第三周报告
- 手机克隆常见问题 安卓版手机便签怎么导出
- java集成微信发送模板消息
- python3 class写法_Python抽象类的新写法
- 视频教程-Python数据分析案例实战 视频课程-Python
- 阿里云高校计划免费领取半年服务器流程
- idea将web项目打包成war包并部署到服务器上运行
- 数据库查询优化的方式
- Docker 初级使用
- linux 添加用户主目录,linux下修改用户主目录的方法
- pandas 中diff 一阶差分的理解
- 习题6-8 单词首字母大写
热门文章
- [置顶] 任务一 基本的数据库连接——以类为单位的编程思想
- 信息熵与二进制--信息论系列
- 《Linux性能及调优指南》 Linux进程管理
- PHP7 学习笔记(十二)gRPC
- 解决Eclipse中文乱码的问题
- 在电脑上安装Intel HAXM(硬件加速执行管理器)
- 《深入浅出struts》读书笔记(2)
- 小新pro13睡眠后无法唤醒_电脑休眠后,就无法唤醒了?怎么办?快速教你解决这个问题...
- 【大数据部落】银行信用数据SOM神经网络聚类实现
- 拓端tecdat|excel数据分析——贝叶斯分析预测