Hyperledger Fabric 交易流程

2024-04-03 05:18

本文主要是介绍Hyperledger Fabric 交易流程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Transaction Flow
本文件概述了在标准资产交换期间发生的交易机制。该方案包括两个clientA和B,他们购买和销售萝卜。他们分别在网络上有一个peer,通过peer发送他们的交易并与账本交互。
enter image description here

假设
此流程假定通道已设置并运行。应用程序用户registe并向组织的证书颁发机构(CA)enroll,并收回了必要的加密材料,用于向网络进行身份验证。

Chaincode(包含表示萝卜市场初始状态的一组键值对)被安装在peer上并在channel上实例化。Chaincode包含了定义一组交易指令和商定的萝卜价格的逻辑。Endorsement策略也被定为chaincode,指出peerA和对等体peerB必须支持任何交易。

Transaction Flow
Client A 初始化一个交易
Endorsing peers验证签名并执行交易
Proposal回应被检查
Client将endorsement装配到交易中
交易被验证并提交
账本更新
1. Client A 初始化一个交易
enter image description here
发生了什么? - 客户端A发送购买萝卜的请求。请求目标peerA和peerB谁分别代表clientA和clientB。Endorsement策略规定两个peer必须签署任何交易,因此请求转到peerA和peerB。

接下来,构建交易proposal。利用支持SDK(node,java,python)的应用程序使用可用的API之一来生成交易建议。该proposal是调用chaincode函数的请求,以便可以将数据读取和/或写入账本(即为资产写入新的键值对)。SDK用作中间件(shim),将交易proposal打包为适当的架构的格式(通过gRPC的协议缓冲区),并采用用户的加密凭证为该交易建议生成唯一的签名。

2. Endorsing peers验证签名并执行交易
enter image description here
Endorser验证1)交易proposal正确的组织,2)交易在之前并没有被提交(重访攻击保护),3)签名的合法性(使用MSP),4)提交者(示例中的客户端A)被正确地授权在该channel上执行建议的操作(即,每个endorser确保提交者满足channel的Writer策略)。Endorser将交易proposal作为输入invoked的chaincode的函数的参数,并针对当前状态数据库执行它们以产生包括响应值,读集和写集的交易结果。此时不会更新账本。这些值的集合,以及支持peer的签名和YES / NO认可语句作为“建议响应”传递回SDK,该SDK解析用于应用消费的有效载荷。

{MSP是在peer上运行的本地进程,它允许它们验证从客户端到达的交易请求并签署交易结果(endorsement)。ACL(访问控制列表)在信道创建时定义,并确定允许哪些对等端和最终用户执行某些操作。}

3. Proposal回应被检查
enter image description here
应用程序验证endorser签名并且比较proposal的响应(链接到包含有效载荷的表示的词汇表术语)以确定proposal响应是否相同以及是否已经满足指定的endorsement策略(即,是否peerA和peerB两者都endorse)。该架构使得即使应用程序选择不检查响应或以其它方式转发未endorsed的交易,该策略仍然将由peer实施并且在提交验证阶段被维护。

4. Client将endorsement装配到交易中
enter image description here
应用程序将“交易消息”中的交易proposal和响应“广播”到排序服务。交易将包含读/写集合,被承认的peer签名和channel ID。Ordering服务不会读取交易详细信息,它只是从网络中的所有渠道接收交易,根据channel安时间顺序对其进行排序,并为每个渠道创建交易块。

5. 交易被验证并提交
enter image description here
交易块被“传递”到信道上的所有peer。块内的交易被验证以确保endorsement策略被满足并且确保账本的read集变量状态没有改变,因为read集是由交易执行生成的。块中的交易标记为有效或无效。

6. 账本更新
每个peer将块附加到channel的链,并且对于每个有效交易,write集被提交到当前状态数据库。发出事件以通知客户端应用程序交易(调用)已被不可变地附加到链,以及通知交易是否被验证或无效。
enter image description here

这篇关于Hyperledger Fabric 交易流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/871994

相关文章

捷瑞数字业绩波动性明显:关联交易不低,募资必要性遭质疑

《港湾商业观察》施子夫 5月22日,山东捷瑞数字科技股份有限公司(以下简称,捷瑞数字)及保荐机构国新证券披露第三轮问询的回复,继续推进北交所上市进程。 从2023年6月递表开始,监管层已下发三轮审核问询函,关注到捷瑞数字存在同业竞争、关联交易、募资合理性、期后业绩波动等焦点问题。公司的上市之路多少被阴影笼罩。​ 业绩波动遭问询 捷瑞数字成立于2000年,公司是一家以数字孪生驱动的工

工作流Activiti初体验—流程撤回【二】

已经玩工作流了,打算还是研究一下撤回的功能。但是流程图里面并不带撤回的组件,所以需要自己动态改造一下,还是延续上一个流程继续试验撤回功能。《工作流Activiti初体验【一】》 完整流程图 我们研究一下分发任务撤回到发起任务,其他环节的撤回类似 撤回的原理大概如下: 将分发任务后面的方向清空,把发起任务拼接到原来的判断网关,然后结束分发任务,这样流程就到发起任务了 此时的流程如上图,

ROS话题通信流程自定义数据格式

ROS话题通信流程自定义数据格式 需求流程实现步骤定义msg文件编辑配置文件编译 在 ROS 通信协议中,数据载体是一个较为重要组成部分,ROS 中通过 std_msgs 封装了一些原生的数据类型,比如:String、Int32、Int64、Char、Bool、Empty… 但是,这些数据一般只包含一个 data 字段,结构的单一意味着功能上的局限性,当传输一些复杂的数据,比如:

(1995-2022年) 全国各省份-技术交易活跃度

技术交易活跃度是一个关键指标,用于衡量技术市场的交易频繁程度和活跃性。它不仅显示了市场参与者对技术交易的参与热情,而且交易的频率也体现了市场的活力。这一指标对于不同的利益相关者具有不同的意义: 对投资者而言,技术交易活跃度是把握市场趋势、评估交易策略和预测市场波动的重要工具。对企业来说,技术交易活跃度反映了其技术创新的活跃程度和市场竞争的激烈程度,有助于企业制定技术创新和市场竞争策略。对政策制定

完整的申请邓白氏编码的流程(手把手教你申请邓白氏编码

完整的申请邓白氏编码的流程(手把手教你申请邓白氏编码)  标签: 编码邓白氏编码申请流程苹果开发者账号申请 2016-07-08 16:13  2274人阅读  评论(2)  收藏  举报   分类: 技术  苹果开发  邓白氏编码申请 版权声明:本文为博主原创文章,未经博主允许不得转载。     申请公司的苹果开发者账号和企业级的苹

办理河南建筑工程乙级设计资质的流程与要点

办理河南建筑工程乙级设计资质的流程与要点 办理河南建筑工程乙级设计资质的流程与要点主要包括以下几个方面: 流程: 工商注册与资质规划:确保企业具有独立法人资格,完成工商注册,并明确乙级设计资质的具体要求,包括注册资本、人员配置、技术条件等。 专业技术人员配置: 雇佣或签约符合资质要求的专业技术人员,包括但不限于:一级注册结构工程师2名、一级注册建筑师2名、注册暖通工程师1名、注册供配电工

黑龙江等保测评的具体流程是怎样的

黑龙江等保测评的具体流程 黑龙江等保测评是根据《中华人民共和国网络安全法》及相关法律法规,对信息系统安全保护能力进行评估和验证的过程。以下是黑龙江等保测评的具体流程: 系统定级:根据业务、资产、安全技术、安全管理等方面的情况,对企业的安全防护水平进行评估,编制定级报告,为客户提供技术支持,协助客户编制定级报告,并组织相关专家对定级报告进行评估。 系统备案:持定级报告及登记表到当地的公安网监

Eclipse使用git最基本流程

Eclipse使用git最基本流程,eclipsegit流程 git有诸多好处,网上都说的很清楚了,在这里我不再赘述。对于我来说,私下里想做一些项目,而又不能很好的保存自己的代码和进行版本控制,这时候,就用到了git。下面,就以我个人为例讲讲git从0开始如何安装使用。 Step1 准备工作 msysgit,下载地址为http://msysgit.github.io/

文华财经T8自动化交易程序策略模型指标公式源码

文华财经T8自动化交易程序策略模型指标公式源码: //定义变量 //资金管理与仓位控制 8CS:=INITMONEY;//初始资金 8QY:=MONEYTOT;//实际权益 8QY1:=MIN(MA(8QY,5*R),MA(8QY,2*R)); FXBL:=N1; DBKS:8QY1*N1;//计算单笔允许亏损额度 BZDKS:=MAX(AA-BB,N*1T)*UNIT; SZDKS:=MAX(

Android Framework学习(四)之Launcher启动流程解析

在之前的博客中,我们学习了init进程、Zygote进程和SyetemServer进程的启动过程,我们知道SystemServer进程主要用于启动系统的各种服务,二者其中就包含了负责启动Launcher的服务,LauncherAppService,本篇博客我们将一起学习Launcher相关的知识。 Launcher概述 Launcher程序就是我们平时看到的桌面程序,它其实也是一个Androi