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

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
拼不过 GO?阿里如何重塑云上的 Java | 12月11号栖夜读
点击订阅云栖夜读日刊,专业的技术干货,不容错过! 阿里专家原创好文 1.拼不过 GO?阿里如何重塑云上的 Java Java 诞生于20年前,拥有大量优秀的企业级框架,践行 OOP 理念,更多体现的是严谨以及在长时间运行条件下的稳定性和高性能。反观如今,在要求快速迭代交付的云场景下,语言的简单性似乎成了首要的要求,而传统的 Java 语言显得有一些过于重量了。今天,阿里 JVM 团队技术专家郁磊(花名:梁希)分享 JVM 团队是如何面对和处理集团巨大的业务规模和复杂的业务场景的。阅读更多》》 2.图神经网络(AliGraph)在阿里巴巴的发展与应用 在大数据的背景下,利用高速计算机去发现数据中的规律似乎是最有效的手段。为了让机器计算的有目的性,需要将人的知识作为输入。我们先后经历了专家系统、经典机器学习、深度学习三个阶段,输入的知识由具体到抽象,由具体规则到特征再到模式,越来越宏观。相对来说,抽象的层次变高了,覆盖面变广了,但我们对底层的感知变弱了,模型的可解释程度变差了。事物发展往往遵循这样的规律,先有客观事实,再有原理支撑,之后是普遍推广。深度学习的应用已经让我们看到了非常可观的价...
- 下一篇
为什么云计算将在2020年推动政府IT创新
越来越多的政府机构将在2020年挖掘云计算的全部潜力。那么他们如何采用云计算技术削减成本并获得战略优势,人们需要对此进行了解。 2020年对于政府机构的首席信息官来说是一个激动人心的时刻,这将迎来一个新时代,也将是迎来变革的十年。调研机构德勤(Deloitte)公司最近发布了改变政府部门的九大技术趋势,其中一个特别重要的因素是推动政府在技术领域的未来发展:云计算技术作为其创新动力。 尽管对于大多数机构而言,云计算并不是什么新鲜事物,但通常仍将其用作削减成本和提高效率的措施。尽管某些政府机构已经开始将云计算作为战略优势来使他们的任务受益,但德勤公司对于更多政府机构将在2020年开始挖掘云计算全部潜力的预测非常令人兴奋。 当行业专家回顾在2019年所看到的进展时,相信云计算绝对有潜力在政府IT中扮演更具战略性的角色。以下回顾一下政府IT部门主管今年在云计算方面取得的进展。 从云优先到云计算智能 德勤公司发布的调查报告可以让人们了解世界各地政府对于云计算技术的广泛采用。虽然全球许多国家和地方政府现在都在采用云优先策略,但2019年美国云计算策略已从云优先过渡到云智能。在许多方面,新策略正在成...
相关文章
文章评论
共有0条评论来说两句吧...