暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

区块链 | Hyperledger Fabric 01 超级账本介绍

AI与区块链技术 2021-10-18
1027

导读



超级账本,作为最火热的联盟链技术,得到了广泛地使用,也得到了很多科研人员的青睐。

从今天这篇文章,我们一起来学习Hyperledger Fabric的相关知识,了解基本概念,掌握开发方法。

今天我们一起来了解一下超级账本的一些背景知识以及超级账本一些重要的部分,如链码、超级账本的安全和拓展等。


1

引入


1、区块链简介


一般来说,区块链是一个不可篡改的的交易账本,由分布式网络的对等节点(peer)进行维护。这些节点通过应用经过共识协议验证过的交易来维护账本的副本,这些交易被分组到块中,每个块会包含一个hash,每个hash会将该块与前面的块绑定。


2、比特币与以太坊


区块链的第一个也是最广为人知的应用是比特币加密货币,尽管其他人也在追随它的脚步。另一种加密货币 以太坊 则采取了不同的方法,它集成了许多与比特币相同的特性,但增加了智能合约,为分布式应用程序创建了一个平台。比特币和 以太坊 属于一类区块链,我们将其归类为公共许可的区块链技术。基本上,这些是公共网络,对任何人开放,参与者匿名互动。


3、联盟链需求


随着比特币、以太网和其他一些衍生技术的普及,应用区块链的基础技术、分布式分类账和分布式应用平台来创新企业用例的兴趣也随之增长。然而,许多企业用例需要无许可区块链技术目前无法提供的性能特征。此外,在许多用例中,参与者的身份是一个硬性要求,例如在金融交易中,必须遵守了解客户(KYC)和反洗钱(AML)条例。


对于企业使用,我们需要考虑以下要求:


参与者必须是可识别的
网络需要被许可
高事务吞吐量性能
低延迟的事务确认
交易和商业交易数据的私密性和机密性


2

超级账本



1、介绍


Hyperledger Fabric 是一个开源的企业级授权分布式账本技术(DLT)平台,设计用于企业环境,提供了一些关键的区分能力超过其他流行的分布式账本或区块链平台。

区别的一个关键是Hyperledger是在Linux基金会下建立的,而Linux基金会本身在开放治理下培育开源项目方面有着悠久而非常成功的历史,这些项目发展了强大的可持续社区和繁荣的生态系统。Hyperledger由一个多样化的技术指导委员会管理,Hyperledger Fabric项目由来自多个组织的一组不同的维护人员管理。它拥有一个开发社区,自最早提交以来已经发展到超过35个组织和近200名开发人员。

Fabric具有高度模块化可配置的架构,可为广泛的行业用例(包括银行、金融、保险、医疗保健、人力资源、供应链甚至数字音乐传递)提供创新、多功能性和优化。

Fabric是第一个支持用Java、Go和Node.js等通用编程语言编写智能合约的分布式账本平台,而不是受限制的领域特定语言(DSL)。这意味着大多数企业已经拥有开发智能合约所需的技能集,不需要额外的培训来学习新语言或DSL。

Fabric平台也是被许可的,这意味着,与公共的无许可网络不同,参与者彼此是已知的,而不是匿名的(因此是完全不可信的)。这意味着尽管参与者可能没有完全相互信任(例如,他们成为同一行业的竞争对手),网络可以操作下的治理模式,构建了参与者之间的信任确实存在,如法律协议或框架来处理纠纷。

该平台最重要的优势之一是它支持可插拔的共识协议,这使得平台能够更有效地定制,以适应特定的用例和信任模型。例如,当部署在单个企业中,或者由受信任的权威机构操作时,完全拜占庭式的容错一致性可能被认为是不必要的,并且会对性能和吞吐量造成过大的拖累。在这种情况下,一个容错(crash fault-tolerance,CFT)一致性协议可能已经足够了,而在一个多方的、去中心化的用例中,可能需要一个更传统的拜占庭式容错(byzantine fault tolerance,BFT)一致性协议。

Fabric可以利用共识协议且不需要原生加密货币来激励成本高昂的挖矿或推动智能合约执行。加密货币的避免减少了一些显著的风险/攻击载体,而没有加密挖矿操作意味着该平台可以以与任何其他分布式系统大致相同的操作成本部署。

这些不同的设计特性的组合使Fabric在事务处理和事务确认延迟方面成为当今可用的性能更好的平台之一,并且它支持事务和实现它们的智能合约(Fabric称之为“链码”)的隐私和机密性。

2、模块化


Hyperledger Fabric已经被专门设计成具有模块化架构。无论是可插拔的共识、可插拔的身份管理协议(如LDAP或OpenID Connect)、密钥管理协议还是密码库,该平台的核心都被设计为可配置以满足企业用例需求的多样性。


在较高的层次上,Fabric由以下模块化组件组成:


1、可插拔的订购服务在交易顺序上建立共识,然后将块广播给对等节点。


2、一个可插拔的成员服务提供者负责将网络中的实体与加密身份关联起来。


3、一个可选的点对点gossip服务通过向其他对等节点订购服务来传播块输出。


4、智能合约("链码")在容器环境(例如Docker)中运行以实现隔离。它们可以用标准编程语言编写,但不能直接访问账本状态。


5、可以将账本配置为支持各种DBMS。


6、一个可插拔的认可和验证策略实施,可以独立地为每个应用程序配置。


业内有一个公认,即没有“可以一统天下的链”。Hyperledger Fabric可以以多种方式配置,以满足多个行业用例的不同解决方案需求。


3、许可与无许可


在无许可链中,几乎任何人都可以参与,而且每个参与者都是匿名的。在这样的背景下中,除了区块链在某个深度之前的状态是不可变之外,没有其他信任。为了缓解这种信任缺失,无许可区块链通常采用“开采”原生加密货币或交易费用,以提供经济激励,以抵消参与基于“工作证明”(PoW)的拜占庭容错共识形式的额外成本。


另一方面,许可链在一组已知、识别和经常审查的参与者之间运行区块链,这些参与者在产生一定程度信任的治理模型下运行。许可链提供了一种方法来保护一组实体之间的交互,这些实体具有共同的目标,但可能并不完全信任彼此。通过依赖参与者的身份,被许可的区块链可以使用更传统的崩溃容错(CFT)或拜占庭容错(BFT)共识协议,这些协议不需要昂贵的挖掘。


此外,在这种许可的背景中,参与者通过智能合约故意引入恶意代码的风险也降低了。首先,参与者彼此都是已知的,所有的动作,无论是提交应用交易、修改网络配置还是部署智能合约,都记录在区块链上,遵循为网络和相关交易类型建立的认可策略。与完全匿名不同,可以很容易地识别肇事者,并根据治理模型的条款处理事件。


4、智能合约(链码)


智能合约,或Fabric所称的“链码”,作为可信的分布式应用程序,从区块链和对等体之间的底层共识中获得安全性/信任。它是区块链应用程序的业务逻辑。

智能合约有三个关键点,尤其是应用于平台时:

1、许多智能合约在网络中同时运行,

2、它们可能是动态部署的(在许多情况下是由任何人),

3、应用程序代码应该被视为不可信的,甚至可能是恶意的。

大多数现有的支持智能合约的区块链平台遵循排序-执行架构,其中的共识协议:

1、验证和排序事务,然后将它们传播到所有对等节点

2、然后每个对等节点依次执行事务。

排序-执行体系结构可以在几乎所有现有区块链系统中找到,从公共/无许可平台(如以太坊(基于pow共识))到许可平台(如Tendermint、Chain和Quorum)。

在区块链中执行的智能合约必须是确定性的;否则,可能永远无法达成共识。为了解决非确定性问题,许多平台要求用非标准的或特定领域的语言(如Solidity)编写智能合约,以便消除非确定性操作。这阻碍了广泛采用,因为它要求开发人员编写智能合约来学习一种新语言,并可能导致编程错误。

此外,由于所有的事务都是由所有节点顺序执行的,因此性能和规模受到限制。智能合约代码在系统的每个节点上执行,这一事实要求我们采取复杂的措施来保护整个系统免受潜在恶意合约的侵害,以确保整个系统的弹性。

5、新方法


Fabric为事务引入了一个新的体系结构,我们称之为执行-排序-验证。通过将事务流分成三个步骤,它解决了排序-执行模型面临的弹性、灵活性、可伸缩性、性能和机密性挑战。三个步骤如下:


1、执行交易并检查其正确性,从而认可它


2、通过(可插拔的)共识协议排序事务


3、在将交易提交到账本之前,根据特定于应用程序的背书策略验证交易


这种设计从根本上背离了排序-执行范例,Fabric在对其排序达成最终协议之前执行事务。


在Fabric中,应用专用背书策略指定哪些对等节点(或它们的数量)需要保证给定智能合约的正确执行。因此,每个事务只需要由满足事务背书策略所需的对等节点子集执行(背书)。这允许并行执行,从而提高系统的整体性能和规模。第一阶段还消除了任何不确定性,因为在排序之前可以过滤掉不一致的结果。


因为我们消除了不确定性,Fabric是第一种支持使用标准编程语言的区块链技术。


6、隐私与机密性


正如我们已经讨论过的,在一个利用PoW实现其共识模型的公共的、无许可链网络中,事务在每个节点上执行。这意味着既不存在合约本身的机密性,也不存在它们所处理的交易数据的机密性。每个事务以及实现它的代码对网络中的每个节点都是可见的。在这种情况下,我们用合约和数据的机密性换取了PoW提供的拜占庭容错共识


对于许多业务/企业用例来说,这种机密性的缺乏可能会带来问题。例如,在供应链合作伙伴的网络中,一些消费者可能会获得优惠利率,以此巩固关系或促进额外销售。如果每个参与者都能看到每一份合约和每一笔交易,那么在一个完全透明的网络中维持这种业务关系就变得不可能了ーー每个人都会想要首选的价格!


再举一个例子,考虑证券行业,交易员建立位置(或出售位置)不希望竞争对手知道这一点,否则他们会试图加入这场游戏,削弱交易员的策略。


为了解决交付企业用例需求时缺乏隐私和保密性的问题,区块链平台采用了各种方法。它们都有各自的取舍。


加密数据是提供机密性的一种方法;然而,在利用PoW达成共识的无许可网络中,加密数据位于每个节点上。只要有足够的时间和计算资源,加密就有可能被破解。对于许多企业用例来说,他们的信息可能被泄露的风险是不可接受的。


零知识证明(ZKP)是正在探索解决这个问题的另一个研究领域,这里的权衡是,目前计算一个ZKP需要相当多的时间和计算资源。因此,在这种情况下需要权衡的是机密性的性能。


在允许的背景中,可以利用协商一致的替代形式,可以探索将机密信息仅分发给授权节点的方法。


Hyperledger Fabric作为一个被许可的平台,通过其通道架构和私有数据特性实现机密性。在通道中,Fabric网络上的参与者建立一个子网络,其中每个成员都可以看到一组特定的事务。因此,只有那些参与通道的节点可以访问智能合约(链码)和所交易的数据,从而保护了两者的隐私和机密性。私有数据允许在通道上的成员之间进行集合,从而实现与通道相同的保护,而无需创建和维护单独通道的维护开销。


7、可插拔共识


事务的排序被委托给一个模块组件以达成一致,该组件在逻辑上与执行事务和维护总账的对等节点解耦。具体来说,排序服务。由于共识是模块化的,它的实现可以根据特定部署或解决方案的信任假设进行定制。这种模块化架构允许平台依赖完善的CFT(崩溃容错)或BFT(拜占庭容错)排序工具包。


Fabric目前提供了一个基于Raft协议的etcd库的CFT排序服务实现。有关当前可用的排序服务的信息,请参阅我们关于排序的概念文档。


还需要注意的是,这些并不是相互排斥的。Fabric网络可以有多个订购服务,支持不同的应用程序或应用程序需求。


8、性能和可扩展性


区块链平台的性能会受到许多变量的影响,如事务大小、块大小、网络大小以及硬件限制等。Hyperledger Fabric Performance and Scale工作组目前正在研究一个名为Hyperledger Caliper的基准框架。


已经发表了一些研究论文来研究和测试Hyperledger Fabric的性能。最新的Fabric扩展到每秒20,000个事务。


3

结论



任何对区块链平台的认真评估都应该将Hyperledger Fabric包括在其短列表中。


结合Fabric的差异化功能,使其成为支持灵活信任假设的许可区块链的高度可伸缩系统,使该平台能够支持广泛的行业用例,从政府、金融、供应链物流到医疗保健等等。


Hyperledger Fabric是Hyperledger项目中最活跃的。围绕该平台的社区建设正在稳步增长,每个相继发布的版本所带来的创新远远超过了其他任何企业区块链平台。


长按二维码关注


在看数你最好看


文章转载自AI与区块链技术,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论