在生产环境中,一个最小的Fabric联盟链网络由4个结点组成,如下图:

为了避免单点故障,进行结构冗余,每个节点的角色安排如下:

· 192.168.1.120 peer1, orderer1, zookeeper0, kafka0, ca1,

· 192.168.1.121 peer2, orderer2, zookeeper1, kafka1 ca2

· 192.168.1.122 peer3, zookeeper2, kafka2 ,ca3

· 192.168.1.122 peer4, kafka3  ca4, fabric浏览器

在Fabric中,本由一个节点处理的过程,在逻辑上被分解为不同的角色,每个角色承担不同的功能;节点(Peer)分解为背书节点(Endorser peer)和提交节点(Committer peer),为了达到处理的顺序性,提炼出排序(Orderer)角色,kafka是联盟链中负责共享机制,zookeeper是个分布式应用协调器,负责点到点数据传输,CA负责证书发放。 Fabric是应用于联盟链的场景,在处理每一笔交易时,每个环节上需要对交易信息进行权限校验。
       Fabric交易流程图如下所示:

交易过程详细流程:
     1) 应用程序客户端通过SDK调用证书服务(CA)服务,进行注册和登记,并获取×××书;
     2) 应用程序客户端通过SDK向区块链网络发起一个交易提案(Proposal),交易提案把带有本次交易要调用的合约标识、合约方法和参数信息以及客户端签名等信息发送给背书(Endorser)节点。

3) 背书(Endorser)节点收到交易提案(Proposal)后,验证签名并确定提交者是否有权执行操作,同时根据背书策略模拟执行智能合约,并将结果及其各自的CA证书签名发还给应用程序客户端。

4) 应用程序客户端收到背书(Endorser)节点返回的信息后,判断提案结果是否一致,以及是否参照指定的背书策略执行,如果没有足够的背书,则中止处理;否则,应用程序客户端把数据打包到一起组成一个交易并签名,发送给Orderers。
     5) Orderers对接收到的交易进行共识排序,然后按照区块生成策略,将一批交易打包到一起,生成新的区块,发送给提交(Committer)节点;
     6) 提交(Committer)节点收到区块后,会对区块中的每笔交易进行校验,检查交易依赖的输入输出是否符合当前区块链的状态,完成后将区块追加到本地的区块链,并修改世界状态。

还有一个关于Fabric联盟链交易理解的说明:

这个示例中包含客户A和B,在进行萝卜买卖。他们各自有一个网络节点,通过节点他们发送交易并和账本进行交互。

首先,假设必要的条件:

该流程假设通道已建立并正常运行。用户已注册并使用组织认证授权(CA)登记,同时获得必要的加密材料来进行网络验证。

链码(包含一组代表萝卜市场初始状态的键值对)被安装在节点上并在通道上进行实例化。链码包含定义交易指令集合的逻辑和达成一致的萝卜价格。设置一项针对链码的背书策略,表明节点A和B都必须对任何交易进行背书。

1. 客户A发起交易

客户A发出萝卜购买请求。请求目标节点A和B,分别代表客户A和B。背书策略表明两个节点必须为任何交易进行背书,因而请求被发送到节点A和B。

接下来构建交易提案。一个以可用SDK(node, java, python)为支撑的应用利用有效的API来生成交易提案。这项提案作为调用链码功能的请求来完成数据到账本的读取和/或写入(即为资产写入新的键值对)。SDK有两个作用:把交易提案包装成合适架构格式的库(基于gRPC的协议缓冲);使用用户的加密证书来创建交易提案的唯一签名。

2. 背书节点验证签名&执行交易

背书节点使用MSP验证签名并确定请求者是否被合理授权进行提案的操作(使用通道ACL)。背书节点以交易提案凭证为输入,基于当前状态的数据库执行来生成交易结果,输出包括反馈值、读取集合和写入集合。截止现在账本还未进行更新。这些值的集合,背书节点的签名以及是/否的背书声明一同作为“提案反馈”被传输回到SDK,SDK对应用消耗的载荷进行解析。

3. 审查提案反馈

应用对背书节点签名进行验证,比较提案反馈(链接到包含载荷代理的术语条款)来决定是否一致,指定的背书策略是否被执行(即节点A和B都进行了背书)。这种架构可以保证即使一个应用选择不进行反馈审查或者转发了没有背书的交易,背书策略依然会被节点执行并在验证提交阶段维持。

4. 客户组合交易背书

应用对交易提案进行广播,以“交易信息”对订购服务实现反馈。交易包含读/写集合,背书节点签名和通道ID。订购服务不读取交易细节,只是从网络中所有通道接收交易,根据每个通道按时间顺序调用,创建每个通道的交易区块。

5. 交易验证和提交

交易区块被发布到通道中的所有节点。区块中的交易被验证来确保背书策略被执行并且账本的读取集合变量没有发生变化,因为读取集合是执行交易生成的。区块中的交易被标记为有效或无效。

6. 账本更新

每个节点都把区块追加到通道的链中,对每项有效交易,写入集合被提交到当前状态的数据库。发出事务通知客户端应用,交易(调用)被永久追加到链中以及交易是有效或者无效的。

转载于:https://blog.51cto.com/newthink/2352991

HyperLedger Fabric 交易流程相关推荐

  1. hyperledger fabric交易流程

    首先,先简单看看上面这个交易流程图吧,下面就这个图详细的说明一下整个fabric整个交易流程: 1.区块链客户端把交易请求发给之前约定好的所有背书节点(endorsing peer).这里说明一下en ...

  2. Hyperledger Fabric 交易流程

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

  3. hyperledger fabric 交易结构以及解析

    Fabric 1.0源代码分析(43) Tx(Transaction 交易)_yinchengmvp的技术博客_51CTO博客 Hyperledger Fabric的区块结构 交易结构Hyperled ...

  4. Fabric交易流程

    本文概述了资产交易过程中的事务机制.该场景包含客户A和B,在进行萝卜买卖.他们各自有一个网络节点,通过节点他们发送交易并和账本进行交互. 该流程假设通道已建立并正常运行.用户已注册并使用组织认证授权( ...

  5. Hyperledger Fabric on SAP Cloud Platform(SAP云平台上的超级账本简介)

    今天的文章来自Wen Aviva, 坐Jerry面对面的程序媛. Jerry在之前的公众号文章<在SAP UI中使用纯JavaScript显示产品主数据的3D模型视图>已经介绍过Aviva ...

  6. Hyperledger Fabric的网络拓扑图与交易流程

    1. Fabric中的四种节点 客户端节点 介于应用程序与底层之间,是两者之间交互的媒介节点.它不能独立存在,必须与Orderer节点与Peer节点建立连接,才可以发挥作用,比如连接到Orderer节 ...

  7. 深度探索Hyperledger技术与应用之超级账本的典型交易流程

    上一篇分享了超级账本的系统逻辑架构和网络节点架构,本篇主要分享超级账本的典型交易流程. 1 典型交易流程 下图所示为Hyperledger Fabric 1.0典型的交易流程图. 从上一节的网络节点架 ...

  8. Hyperledger Fabric从源码分析交易

    在上一章Hyperledger Fabric从源码分析区块结构中提到了区块的概念,并从源码角度对区块的结构进行了剖析,知道一个简单的区块包含了下面几个部分 BlockHeader, 区块头 Block ...

  9. Hyperledger Fabric笔记3--BYFN启动流程分析

    Hyperledger Fabric笔记3--BYFN启动流程分析 BYFN--构建你的第一个网络,该方案提供了一个示例Hyperledger Fabric网络,该网络由两个组织组成,每个组织都维护两 ...

最新文章

  1. 软件是计算机什么及相关文档的总称,1冯-诺依曼原理的基本思想是什么.doc
  2. Web开发者用什么编辑器?
  3. 华为AC6605与OSSH免费版华为Portal系统的对
  4. jvm性能调优 - 21案例实战_百万级用户的在线系统如何基于G1垃圾回收器优化性能
  5. ios 字符串转数组_ES6中常用的数组操作-必须收藏
  6. 用于字符串和数组的5种简单有效的Java技术
  7. [小技巧][JAVA][转换]字符数组char[]与字符串String之间互相转换
  8. 陕西2021高考成绩在哪查询,2021陕西高考成绩查询入口
  9. 有哨兵的双向循环链表、单向循环链表
  10. HTML5 WebSocket
  11. hashmap初试数组大小为什么一定要是2 的倍数
  12. informix linux 下载,linux安装informix
  13. 网上购物系统功能业务逻辑导图_功能流程说明_OctShop
  14. IP地址详解,网络分段
  15. Python抽奖转盘、幸运大转盘源程序
  16. iPad如何分屏?iPad分屏详细教程来啦!
  17. HDU 6143 Killer Names(容斥+组合)
  18. 微信小程序前端生成二维码并保存(海报同理)
  19. 【那些年我们一起看过的论文】之《Real-Time Loop Closure in 2D LIDAR SLAM》
  20. 在 VMware Workstation 16 Pro 中安装 Ubuntu Server 22.04.1 并配置静态 IP 地址

热门文章

  1. 产销对接行动倡议书-万祥军:长效机制谋定丰收节交易会
  2. 给 DataGrid 的删除信息添加提示
  3. VC++深入详解 孙鑫 高清PDF + 配套视频下载
  4. 51单片机复习:矩阵键盘
  5. Linux服务器---网络配置
  6. js 导出到excel
  7. 【转载】如何组建一支优秀的数据分析团队?
  8. myeclipse和输入法冲突的问题
  9. 数据库空值(Null)小结
  10. 这些产品基本功了解一下?