揭秘Fabric交易流程:一文带你深入了解

 随着区块链技术的日益普及,Hyperledger Fabric作为一种联盟链解决方案,受到了广泛关注。那么,Fabric的交易流程究竟是怎样的呢?本文将为您一一揭晓。

1. Fabric交易的参与方

  • 客户端:交易流程的发起方,发起交易提案。

  • 背书节点:负责对客户端发起的提案进行验证,确认提案无误后对提案进行签名背书。

  • 排序节点:对背书通过后的交易提案按时间顺序进行排序,排序后将交易提案打包发送给各组织节点。

  • 组织节点:对打包后的区块进行验证,校验无误后打包上链。

2. Fabric交易流程概览

        Fabric的交易流程主要包括以下几个步骤:提案(Proposal)、背书(Endorsement)、提交交易(Submit Transaction)、验证和提交(Validation & Committing)。

2.1. 客户端发起提案

      客户端创建交易请求,通过SDK发起向背书节点(endorse peer)发出交易提案,提案并行发送,有多少个背书节点就发送多少次提案。

图片

2.2. 背书节点对提案背书

        背书节点对客户端发送的提案进行验证。验证规则包括:

  • 交易提案的格式完整

  • 验证该交易提案之前没有被提交过(重放攻击保护)

  • 验证签名是有效的(使用 MSP)

  • 验证发起者

        验证通过后,背书节点会模拟执行提案中的交易,生成交易响应值、读集和写集,然后将这些结果进行签名,将签名和响应值一起作为提案响应返回给客户端SDK,SDK解析响应。

读集和写集:读集和写集都是键值对数组形式,读集中包括本次交易要读取的资产的key和其对应的版本,写集中包括本次交易要插入、更新、删除的资产的key和其对应的value。

图片

2.3. 将提案发送给排序服务

        客户端SDK检查背书响应签名是否正确,校验通过后,如果提案只进行查询操作则提案不会发送给排序服务。如果提案中包括了更新操作,则客户端SDK会校验背书响应是否满足了背书策略(策略包括大部分背书节点都通过、全部背书节点都通过等)。

        如果满足了背书策略则SDK会将背书后的交易提案发送给排序节点,排序节点会将交易提案按时间顺序排列,打包成交易(交易会包含读写集,背书节点的签名和通道 ID)发送给各组织的peer节点。

图片

2.4. 交易上链

       组织peer节点会对交易进行验证,校验交易是否满足了背书策略。交易中背书策略满足,交易中的读集中的变量在交易过程中没有发生变化,则认为本次交易是有效的,否则认为本次交易无效。

图片

2.5. 账本更新

      每个 Peer 节点都将区块追加到通道的链上,对于每个有效的交易,写集都提交到当前状态数据库。区块链系统会发出一个事件,通知客户端应用程序本次交易(调用)已被不可更改地附加到链上,同时还会通知交易验证结果是有效还是无效。

图片

3. 交易泳道图

图片

       这一流程确保了交易的有序性、安全性和可信度,是Fabric作为联盟链解决方案的核心机制。掌握这些知识,将有助于您更好地理解和应用Fabric技术。

相关推荐

  1. 了解状态机思维

    2024-05-05 05:06:03       63 阅读
  2. 了解机器学习算法

    2024-05-05 05:06:03       58 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-05 05:06:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-05 05:06:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-05 05:06:03       82 阅读
  4. Python语言-面向对象

    2024-05-05 05:06:03       91 阅读

热门阅读

  1. zeekeeper总结详解

    2024-05-05 05:06:03       33 阅读
  2. SQL-索引篇整理

    2024-05-05 05:06:03       32 阅读
  3. 数据库面试常问3

    2024-05-05 05:06:03       26 阅读
  4. HCIP第三节

    2024-05-05 05:06:03       30 阅读
  5. 什么是binutils-arm-linux-gnueabi

    2024-05-05 05:06:03       30 阅读
  6. SSH远程管理

    2024-05-05 05:06:03       31 阅读
  7. 人大金仓数据库技术的发展趋势和前景

    2024-05-05 05:06:03       31 阅读
  8. 算法:最长有效括号子串的长度

    2024-05-05 05:06:03       25 阅读
  9. react和vue在跨平台方面的比较

    2024-05-05 05:06:03       29 阅读
  10. 使用 vscode 远程调试目标板的 c 语言代码

    2024-05-05 05:06:03       28 阅读
  11. MogDB&openGauss中的Bitmap Index Scan

    2024-05-05 05:06:03       27 阅读