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

文章目录

  • 一、Fabric节点类型
  • 二、Peer节点内部模块
  • 三、交易流程
    • 3.1 client提出交易
    • 3.2 Endorsers仿真执行交易提案
    • 3.3 client接收提案响应
    • 3.4 client将响应提交给Ordering
    • 3.5 Orderer分发给Committing Peers
    • 3.6 Committing peers验证交易
    • 3.7 Committing peers通知client

一、Fabric节点类型

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

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

二、Peer节点内部模块

Peer nodes是区块链网络的基础,是账本和智能合约的载体。通过智能合约,账本以不可篡改的方式记录交易的全过程。Peer的内部模块如下图所示:
Fabric v1.x Peer节点与交易流程分析_第1张图片

  • 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通知给客户端。
Fabric v1.x Peer节点与交易流程分析_第2张图片
下面的交易流程图展示了各个角色是如何交互的,以及交易流的全过程,后面将详细分析这七步交易过程。
Fabric v1.x Peer节点与交易流程分析_第3张图片

3.1 client提出交易

client应用提交一个智能合约A的交易提案,根据背书策略必须发送给背书节点{E0, E1, E2},{P3、P4}则不在策略要求范围内,如下图所示:
Fabric v1.x Peer节点与交易流程分析_第4张图片

3.2 Endorsers仿真执行交易提案

E0、E1、E2将各自仿真执行提出的交易,这些执行都不会更新账本,每次执行都会产生一组读写集,包含读取和需要写入的数据,这些数据将在fabric中流动;Endorsers还会对读写集进行签名,如下图所示:
Fabric v1.x Peer节点与交易流程分析_第5张图片

3.3 client接收提案响应

读写集被异步返回给client,读写集由每个Endorser签名,并且还包含每个记录的版本号,此信息将会在以后的共识过程中进行检查,如下图所示:
Fabric v1.x Peer节点与交易流程分析_第6张图片

3.4 client将响应提交给Ordering

client提交响应给Ordering,内容是一个要被排序的交易,Ordering本身不会查看交易内容,与其他client提交的交易并行地在fabric中进行排序,如下图所示:
Fabric v1.x Peer节点与交易流程分析_第7张图片

3.5 Orderer分发给Committing Peers

排序服务按照一定的规则将交易打包到区块中,以分发给Committing peers(peer调用deliever接口pull区块)。然后Peers还可以分发给同一级的其他Peers,如下图所示:
Fabric v1.x Peer节点与交易流程分析_第8张图片

3.6 Committing peers验证交易

每个Committing peer根据背书策略进行验证,还要检查读写集的版本号在当前世界状态下是否仍然合法;验证过的交易将应用于世界状态,并保存到账本中;非法的交易也被保存到账本中,但是不会更新到世界状态,如下图所示:
Fabric v1.x Peer节点与交易流程分析_第9张图片

3.7 Committing peers通知client

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

你可能感兴趣的:(#,Fabric,v1.x,Hyperledger,Fabric)