Fabric v1.x Peer节点与交易流程分析

一、Fabric节点类型

Fabric网络中包括Peer节点和排序节点(Ordering Node),Peer节点分为记账节点(Committing Peer)和背书节点(Endorsing Peer),这三种节点发挥的作用如下:

  • Committing Peer:
    负责维护账本和世界状态以及将交易提交到账本并更新世界状态,可能部署有链码;
  • Endorsing Peer:
    负责接收申请背书的交易提案,仿真执行交易,验证交易内容是否遵守智能合约,然后回复授权或拒绝背书,背书者对合约进行签名;背书节点必须部署链码;
  • Ordering Node:
    负责将交易打包成区块,并且与committing peer和endorsing peer进行通信,控制记账内容以确保账本是一致的;无需部署智能合约,无需维护账本。

二、Peer节点内部模块

Peer nodes是区块链网络的基础,是账本和智能合约的载体。通过智能合约,账本以不可篡改的方式记录交易的全过程。Peer的内部模块如下图所示:
在这里插入图片描述

  • Channels
    对一个公司来说有不同的业务,需要和不同的公司进行相关联,这就需要创建多个链,因此就需要创建多个channel;channel是多个成员之间以机密交易为目的而建立的私网,可以很好的隔离数据;
  • Ledgers
    每个channel可以维护一个或多个账本;一个Peer可以join多个channel,每个channel都要维护自己的账本,不同channel的账本之间互相隔离;
  • Chaincode
    Peer需要维护安装好的智能合约;还要管理运行时Docker容器以实例化链码;
  • LocalMSP
    Membership Services Provider:提供身份认证、加密、签名等服务
  • Events
    给客户端Application发出Events通知

三、交易流程

下图展示了Fabric v1.x的架构,交易由client主动发起,经Endoser背书,然后经由Ordering排序打包,最后由Committer来记入账本,将结果的events通知给客户端。
在这里插入图片描述
下面的交易流程图展示了各个角色是如何交互的,以及交易流的全过程,后面将详细分析这七步交易过程。
在这里插入图片描述

3.1 client提出交易

client应用提交一个智能合约A的交易提案,根据背书策略必须发送给背书节点{E0, E1, E2},{P3、P4}则不在策略要求范围内,如下图所示:
在这里插入图片描述

3.2 Endorsers仿真执行交易提案

E0、E1、E2将各自仿真执行提出的交易,这些执行都不会更新账本,每次执行都会产生一组读写集,包含读取和需要写入的数据,这些数据将在fabric中流动;Endorsers还会对读写集进行签名,如下图所示:
在这里插入图片描述

3.3 client接收提案响应

读写集被异步返回给client,读写集由每个Endorser签名,并且还包含每个记录的版本号,此信息将会在以后的共识过程中进行检查,如下图所示:
在这里插入图片描述

3.4 client将响应提交给Ordering

client提交响应给Ordering,内容是一个要被排序的交易,Ordering本身不会查看交易内容,与其他client提交的交易并行地在fabric中进行排序,如下图所示:
在这里插入图片描述

3.5 Orderer分发给Committing Peers

排序服务按照一定的规则将交易打包到区块中,以分发给Committing peers(peer调用deliever接口pull区块)。然后Peers还可以分发给同一级的其他Peers,如下图所示:
在这里插入图片描述

3.6 Committing peers验证交易

每个Committing peer根据背书策略进行验证,还要检查读写集的版本号在当前世界状态下是否仍然合法;验证过的交易将应用于世界状态,并保存到账本中;非法的交易也被保存到账本中,但是不会更新到世界状态,如下图所示:
在这里插入图片描述

3.7 Committing peers通知client

client可以注册事件触发器,当交易成功或失败、区块被添加到账本中时,client可以从被连接的的每个peer处得到确切的通知,如下图所示:
在这里插入图片描述
根据以上交易流程,可以分析出Fabric中如何解决区块链中常见的双花问题:
双花问题指的是恶意用户将同一笔钱花费两次。client在同一个读集version下,发两笔转账交易,在Endorser阶段会进行正常背书,但在最后验证阶段,第一个交易执行成功后,读集版本会发生变化,第二个交易的读集版本会对应不上,就会被认为是非法交易。

发布了29 篇原创文章 · 获赞 3 · 访问量 5574

猜你喜欢

转载自blog.csdn.net/ice_fire_x/article/details/104362137
今日推荐