Fabric交易流程
(内容可能有些乱,请见谅,日后会对格式进行整理!)
#### 在1.0及以后的版本中,客户端应用会先向Fabric CA申请用户所需要的Fabric中的准入证书,用于签名提案以及交易,然后由客户端(Application)端生成一个提案(Proposal)(一般应用程序会借助于目前Fabric提供的一系列SDK生成Proposal)发送至背书节点进行模拟执行并进行背书,背书节点Endorser会进行相应的校验,然后将提案交由对应的链码Chaincode进行模拟执行,之后背书节点Endorser会对执行结果进行背书,将背书的Response返回至客户端程序Application,随之,客户端程收集到符合背书策略的提案响应(Proposal Response)之后,将其封装成一个交易Transaction,调用排序节点Orderer的Broadcast接口,进行发送交易至Orderer,在v1.0-v1.4版本中,生产环境只有基于分布式消息队列Kafka的排序打包方式,Orderer作为生产者将交易统一发送至每个通道Channel对应的Topic的Partition当中进行全局统一地排序,同时每个排序节点基于同样的切块规则从Kafka中将区块切下推送Deliver至与之连接的Leader Peer(在网络环境良好的情况下,每个组织只有一个leader),Leader Peer收到区块后,会将区块通过Gossip协议广播至组织内其余节点。每个Committer在收到区块之后会对区块进行校验,包括签名、背书策略以及读写集的校验,在校验无误的情况下进行commit,提交到账本,同时更新世界状态,同时订阅了相应事件的应用程序会收到来自Event Hub的消息通知。
Orderer对来自不同通道的交易做区分,同时在Peer节点中会采用MSP对不同通道的消息做校验,用于判断消息是否属于某个通道,通过Orderer以及Peer相结合,形成一个逻辑上的通道技术。
执行—排序—验证
一、执行阶段:
客户端发送的交易提案是调用链码功能的请求。背书节点对交易提案进行4点验证:
格式是否正确;
在之前没有被提交过;
(客户端的)签名是否有效;
提交者/客户端是否被授权执行此次提案的操作。
如果以上验证都通过,背书节点就将提案输入作为所调用链码函数的参数,对当前状态数据库执行chaincode并返回经过背书节点签名的执行结果(读写集)给客户端!然后客户端收集背书,直到满足背书策略。
二、排序阶段:
当收集到足够数量的背书后,客户端将提案、执行结果和背书组装成交易,发送给排序服务。排序服务按通道、按时间顺序对接收的交易进行排序,并为每个通道创建区块(注意:排序服务接收到交易的顺序并不一定是交易被打包进入区块的顺序。。。)。然后将区块发送到每个通道上的主节点(leader),由背书节点向其所在通道内的peers分发交易。
三、验证阶段:
当每个peer接收到新区块后,会对其中包含的交易进行验证,以确保满足背书策略,以及确保账本当前状态的"读集"变量没有变化(因为"读集"是由当前区块中的交易执行生成的)。然后每个peer将区块追加到本地的区块链副本上,并将"写集"提交到当前状态数据库!
Fabric交易流程的更多相关文章
- 区块链Fabric 交易流程
1. 提交交易预案 1)应用端首先构建交易的预案,预案的作用是调用通道中的链码来读取或者写入账本的数据.应用端使用 Fabric 的 SDK 打包交易预案,并使用用户的私钥对预案进行签名. 应用打包完 ...
- HyperLedger Fabric 1.4 交易流程(6.3)
区块链最主要的特性之一是去中心化,没有了中心机构的集中处理,为了达成数据的一致性,就需要网络中全民参与管理,并以某种方法达成共识,所以区块链的交易流程也就是共识的过程. 在Fabric中, ...
- Fabric 1.0交易流程
这篇文章详细介绍fabric的交易流程,以图片加文字的形式呈现. Fabric 1.0交易流程 fabric中的所有交易都是通过chaincode执行 1.应用程序客户端通过SDK调用证书服务(CA) ...
- [转] 深度探索Hyperledger技术与应用之超级账本的典型交易流程
转自: https://blog.csdn.net/HiBlock/article/details/80212499 个人感觉对交易流程描述的比较清楚,转载以备查看. 1 典型交易流程 下图所示为Hy ...
- Hyperledger交易流程
Hyperledger Fabric Network中的角色 在Hyperledger中,由三种类型的角色: Client:应用客户端,用于将终端用户的交易请求发送到区块链网络: Peers:负责维护 ...
- QPBOC扩展应用交易流程
1 Q扩展部分数据 增加3个DGI,分别为:A001,8020,9020 9103中增加DF60(9F38中),DF61 增加DF62,DF63 1.1 A001扩展应用配置 DGI 长度 值(示例 ...
- PBOC电子现金的交易流程
做一个电子现金的交易: 第一步当然是选中当前的应用, 方法是调用select命令, 传入当前的应用AID号, 如果卡片的状态码返回9000,则表示选中成功. 下面举一个例子: 发送: 00 a4 04 ...
- 详细讲解:零知识证明 之 ZCash 完整的匿名交易流程
作者:林冠宏 / 指尖下的幽灵 博客:http://www.cnblogs.com/linguanh/ 掘金:https://juejin.im/user/587f0dfe128fe100570ce2 ...
- 架构设计 | 基于电商交易流程,图解TCC事务分段提交
本文源码:GitHub·点这里 || GitEE·点这里 一.场景案例简介 1.场景描述 分布式事务在业务系统中是十分常见的,最经典的场景就是电商架构中的交易业务,如图: 客户端通过请求订单服务,执行 ...
随机推荐
- [XLua]热更新四部曲视频教程+示例源码
基于Unity2017 xLua是由腾讯维护的一个开源项目,xLua为Unity. .Net. Mono等C#环境增加Lua脚本编程的能力,借助xLua,这些Lua代码可以方便的和C#相互调用.自20 ...
- 文献阅读 | Resetting histone modifications during human parental-to-zygotic transition
Resetting histone modifications during human parental-to-zygotic transition 人类亲本-合子转变中组蛋白修饰重编程 sci-h ...
- form表单文件上传提交且接口回调显示提交成功
前端: <form method="post" enctype="multipart/form-data" id="formSubmit&quo ...
- 谱聚类算法及其代码(Spectral Clustering)
https://blog.csdn.net/liu1194397014/article/details/52990015 https://blog.csdn.net/u011089523/articl ...
- 阿里云ECS服务器环境搭建(1) —— ubuntu 16.04 图形界面的安装
阿里云ECS服务器环境搭建(1) —— ubuntu 16.04 图形界面的安装1. 背景在我们购买阿里云ECS服务器之后,默认的系统环境是很干净的,我购买的是ubuntu16.04,远程登录进入之后 ...
- phpstorm yii2框架的redis和mongodb提示
随便找个目录创建一个 yii_helper.php 文件,内容如下: /** * Class Yii */ class Yii { /** * @var MyApplication */ public ...
- hive分区表新增字段,已有分区显示为null
如果在hive的分区表新增非分区字段,那么原有的分区的数据即使重新运行也会显示为null. 必须先删除该分区,再重新跑数据.
- [原][osg][OSGEARTH]OE的关闭打开自动计算裁剪面被OE的海洋ocean影响
在osgEarthUtil 下 Ocean.cpp 的 traverse函数中: // we don't want the ocean participating in the N/F calcul ...
- 从0开始学爬虫4之requests基础知识
从0开始学爬虫4之requests基础知识 安装requestspip install requests get请求:可以用浏览器直接访问请求可以携带参数,但是又长度限制请求参数直接放在URL后面 P ...
- ISO/IEC 9899:2011 条款5——5.2 环境上的考虑
5.2 环境上的考虑 5.2.1 字符集 5.2.2 字符显示语义 5.2.3 信号与中断 5.2.4 环境限制