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),

如下图所示:

WORKFLOW


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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值