您当前的位置: 首页 > 
  • 0浏览

    0关注

    1477博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Hyperledger Fabric的工作流程

软件工程小施同学 发布时间:2021-03-04 14:24:27 ,浏览量:0

一、架构

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

关注
打赏
1665320866
查看更多评论
立即登录/注册

微信扫码登录

0.0432s