交易背书 - fabric交易并发的基础

简介:

Hyperledger Fabric和其他许多区块链的关键区别之一,就在于Fabric区块链的交易执行过程:Fabric交易需要首先通过节点的背书,然后再进行交易排序,最后才利用有序交易进行账本的更新。本文将介绍Hyperledger Fabric所采用的执行-排序-验证这一三步交易模型的工作原理,以及引入背书环节对Hyperledger Fabric区块链性能的有益作用。

Hyperledger Fabric相关开发教程:

1、交易的生命周期:Hyperledger Fabric vs. 其他区块链

在其他区块链平台中,交易生命周期基本由如下环节构成:

  • 排序:交易有序加入账本,然后扩散到所有节点
  • 执行:交易在所有节点上按顺序依次执行并更新账本

为了让所有节点保持一致的状态,交易必须确定性执行,也就是说,无论何时何地,同样的交易必须产生同样的结果。这一要求对智能合约形成了很强的约束,也是智能合约通常需要使用领域特定语言(DSL)来开发的原因之一,因此使用像Java或Go这样的通用开发语言基本上无法保证确定性。

在Hyperledger Fabric中,交易的声明周期则有所不同:

  • 执行:交易(通过智能合约)以任意顺序执行,甚至可以并行执行
  • 排序:当足够数量的节点对交易结果达成一致,该交易就会 被加入账本并扩散给所有节点。
  • 验证:每个节点验证并按顺序执行交易,从而更新账本

首先需要注意的一点是,交易的执行和对账本的实际更新被拆分为两个环节,这一拆分带来一些有益的作用:

  • 所有节点都需要更新账本,因此所有节点都需要执行验证步骤。 但并不是所有的节点都需要执行智能合约。Hyperledger Fabric 使用背书策略来定义哪些节点需要执行交易。这意味着指定的 链码(智能合约)不必开放给所有的节点 —— 那些不在背书策略中 的节点不需要由访问链码的权限。
  • 交易可以在被排序之前先执行。这是的节点可以并行执行交易, 从而提高系统的吞吐量
  • 在Fabric的三步交易模型中,在交易被添加到账本之前,其链码 执行结果是显式达成一致的,其他区块链的两步交易模型使用 确定性的链码,本身就隐含了节点之间就智能合约的执行结果 达成一致。显式达成一致可以让Fabric使用非确定性的链码,
    这也是为什么我们可以使用Go、Java和Node.js编写Fabric链码 的原因。

2、Hyperledger Fabric的交易背书策略

Hyperledger Fabric允许用户自己定义链码执行的策略。这些背书策略定义了在交易被加入账本之前,哪些节点需要就交易结果达成一致。Fabric提供了一个小型的DSL来定义背书策略。下面展示了一些背书策略样例:

  • 节点A、B、C和F都需要对类型为T的交易进行背书
  • 通道中的大部分节点必须对类型为U的交易进行背书
  • A、B、C、D、E、F、G中的至少3个节点必须对类型为V的交易进行背书

背书策略并不保证正确的链码安装在正确的节点上。然而,背书和安装链码的确存在类似的机制,我们将在后续教程中介绍这一点。

3、Hypereledger Fabric交易背书的实现机制

到目前为止,我们都是松散地使用交易(transaction)这一术语。在排序-执行模型中,链码执行和账本更新被合二为一 —— 交易。在Fabric中,这两个概念是分开的,因此交易本身也被拆分。

Fabric从交易提议(Transaction Proposal)开始。这是一个用来触发链码执行的数据包。交易提议被发送给用于背书的节点。背书节点执行链码,如果成功的话就生成一个实际的账本交易。背书节点签名建议并返回交易提议的响应,这是执行-排序-验证模型中的执行步骤。

一旦交易提议的创建者收到足够的可以满足背书策略的签名,它就可以将交易(以及签名)提交以便添加到账本中,这就是排序步骤。

4、结论

Hyperledger Fabric在区块链交易方面采取了一个新颖的思路,将智能合约的执行与账本的更新分开使它可以提高交易吞吐量,支持更细粒度的隐私控制,实现更灵活强大的智能合约。而这些特性得以实现的一个关键因素就是在交易加入账本之前进行显式地交易背书。


原文链接:Hyperledger Fabric交易背书的深入理解 - 汇智网

目录
相关文章
|
区块链 开发工具
HyperLedger Fabric 1.2 交易流程(6.3)
区块链最主要的特性之一是去中心化,没有了中心机构的集中处理,为了达成数据的一致性,就需要网络中全民参与管理,并以某种方法达成共识,所以区块链的交易流程也就是共识的过程。       在Fabric中,本由一个节点处理的过程,在逻辑上被分解为不同的角色,每个角色承担不同的功能;节点(Peer)分解为背书节点(Endorser peer)和提交节点(Committer peer),为了达到处理的顺序性,提炼出排序(Orderer)角色。
1769 0
|
区块链 开发工具
HyperLedger Fabric交易流程(6.3)
区块链最主要的特性之一是去中心化,没有了中心机构的集中处理,为了达成数据的一致性,就需要网络中全民参与管理,并以某种方法达成共识,所以区块链的交易流程也就是共识的过程。       在Fabric中,本由一个节点处理的过程,在逻辑上被分解为不同的角色,每个角色承担不同的功能;节点(Peer)分解为背书节点(Endorser peer)和提交节点(Committer peer),为了达到处理的顺序性,提炼出排序(Orderer)角色。
2486 0
|
数据库 开发工具 区块链
Fabric V1 交易的生命周期
    Fabric v1 Transaction Lifecycle1 Client application creates tran proposeal (chinacode function and arguments) and sends to endorsing peer(s).
1152 0
|
6月前
|
开发框架 .NET 区块链
Hyperledger fabric部署链码(五)初始化与链码升级
fabric部署chaincode-go(智能合约)系列之五
|
6月前
|
JavaScript 测试技术 Go
Hyperledger fabric部署链码(一)打包链码
fabric部署chaincode-go(智能合约)系列之一
|
6月前
|
测试技术 Go 区块链
Hyperledger fabric 测试环境部署
Hyperledger fabric 测试环境部署及相关问题解答
109 3
|
6月前
|
存储 JSON 安全
Hyperledger fabric智能合约编写(一)
本篇文章主要对链码编写的主要思路和部分API进行梳理。
|
6月前
|
Go API 区块链
Hyperledger Fabric相关概念介绍
在学习Hyperledger Fabric的过程中,初步对相关概念的了解。
Hyperledger Fabric相关概念介绍
|
6月前
|
JSON 区块链 数据格式
Hyperledger fabric部署链码(四)提交链码定义到channel
fabric部署chaincode-go(智能合约)系列之四
|
6月前
|
测试技术 API 区块链
Hyperledger fabric部署链码(三)批准链码定义
fabric部署chaincode-go(智能合约)系列之三