HyperLedger Fabric
2. HyperLedger Fabric介绍Hyperledger Fabric是一个开放源代码的企业级许可分布式分类帐技术(DLT)平台,设计用于企业环境,与其他流行的分布式分类帐或区块链平台相比,它提供了一些关键的区分功能。
一个关键不同点是Hyperledger是在Linux基金会下建立的,它本身有着悠久而非常成功的历史,它在开放式治理下培育开源项目,这些项目发展了强大的可持续社区和繁荣的生态系统。Hyperledger由多元化的技术指导委员会管理,Hyperledger Fabric项目由来自多个组织的多元化维护人员管理。自最早成立以来,它的开发社区已发展到超过35个组织和近200个开发人员。
Fabric具有高度模块化和可配置的体系结构,可针对银行,金融,保险,医疗保健,人力资源,供应链甚至数字音乐交付等广泛的行业用例进行创新,多功能和优化。
Fabric是第一个分布式账本平台,支持以通用编程语言(例如Java,Go和Node.js)而非受约束的领域特定语言(DSL)编写的智能合约。这意味着大多数企业已经具有开发智能合约所需的技能,并且不需要其他培训来学习新的语言或DSL。
Fabric平台也是经过许可的,这意味着与公共的未经许可的网络不同,参与者是彼此认识的,而不是匿名的,因此是完全不受信任的。这意味着,尽管参与者之间可能不会完全信任对方(例如,他们可能是同一行业的竞争者),但网络可以在治理模型下运行,该治理模型是基于参与者之间确实存在的信任而建立的,例如处理争议的法律协议或框架。
平台最重要的区别之一是它对可插入共识协议的支持,该 协议使平台可以更有效地进行定制,以适应特定的用例和信任模型。例如,当部署在单个企业中或由受信任的机构运营时,完全拜占庭式的容错共识可能被认为是不必要的,并且会严重拖累性能和吞吐量。在这种情况下, crash fault-tolerant(CFT)共识协议可能绰绰有余,而在多方,分散的用例中, 可能需要更传统的 byzantine fault tolerant 拜占庭容错(BFT)共识协议。
Fabric可以利用不需要本机加密货币的共识协议来激发昂贵的挖掘或推动智能合约的执行。避免使用加密货币会降低一些重大的风险/攻击向量,并且无需进行加密挖掘操作就意味着可以以与任何其他分布式系统大致相同的运营成本来部署该平台。
这些差异化设计功能的结合使Fabric 在交易处理和交易确认延迟方面成为当今性能最好的平台之一,他们实现了交易和实现的智能合约(Fabric称为“链码”)的隐私和机密性。
模块化Hyperledger Fabric专门设计为具有模块化体系结构。无论是可插拔共识,可插拔身份管理协议(例如LDAP或OpenID Connect),密钥管理协议还是密码库,该平台的核心都经过了配置,可以满足企业用例需求的多样性。
在较高的层次上,Fabric由以下模块化组件组成:
可插拔订购服务在交易顺序上达成共识,然后将区块广播给同级。 可插拔成员资格服务提供商负责将网络中的实体与加密身份相关联。 可选的对等八卦服务通过向其他对等点订购服务来分发输出的块。 智能合约(“链码”)在容器环境(例如Docker)中运行以进行隔离。它们可以用标准编程语言编写,但不能直接访问分类帐状态。 账本可以配置为支持各种DBMS。 可插拔的认可和验证策略实施,可以针对每个应用程序进行独立配置。业界普遍认为,没有“一个区块链可以全部统治”。可以通过多种方式配置Hyperledger Fabric,以满足多种行业用例的不同解决方案要求。
许可与无许可的区块链在未经许可的区块链中,几乎任何人都可以参与,每个参与者都是匿名的。在这种情况下,除了一定深度之前的区块链状态是不可变的之外,别无其他信任。为了减轻这种信任的缺乏,无许可的区块链通常采用“开采的”本机加密货币或交易费来提供经济激励,以抵消基于“工作证明”(PoW)参与拜占庭式容错共识形式的特殊费用。 )。
另一方面,获得许可的区块链在一组已知,已识别且经常经过审核的参与者中运作一个区块链,该参与者在产生一定程度信任的治理模型下运行。许可的区块链提供了一种方法来保护一组具有共同目标但可能不会完全相互信任的实体之间的交互。通过依赖参与者的身份,许可的区块链可以使用更传统的崩溃容错(CFT)或拜占庭容错(BFT)共识协议,这些协议不需要昂贵的挖掘。
另外,在这种许可的情况下,参与者通过智能合约有意引入恶意代码的风险得以降低。首先,参与者是相互了解的,并且遵循针对网络和相关交易类型建立的认可政策,所有活动(无论是提交应用程序交易,修改网络配置还是部署智能合约)都记录在区块链上。除了完全匿名之外,还可以根据治理模型的条款轻松地确定有罪的一方并处理事件。
智能合约智能合约或Fabric称之为“链码”的功能,是一种受信任的分布式应用程序,可从区块链和对等方之间的潜在共识中获得安全性/信任。这是区块链应用程序的业务逻辑。
适用于智能合约的三个要点,尤其是应用于平台时:
网络中同时运行许多智能合约, 它们可以动态部署(在许多情况下,任何人都可以),并且 应用程序代码应被视为不受信任,甚至可能是恶意的。现有的大多数具有智能合约功能的区块链平台都遵循一种 订单执行架构,其中共识协议为:
验证并订购交易,然后将其传播到所有对等节点, 然后,每个对等方依次执行事务。订单执行架构几乎可以在所有现有的区块链系统中找到,从以太坊等公共/非许可平台 (基于PoW的共识)到Tendermint, Chain和Quorum等许可平台。
在以订单执行架构运行的区块链中执行的智能合约必须具有确定性。否则,可能永远无法达成共识。为了解决非确定性问题,许多平台要求以非标准的或领域特定的语言(例如Solidity)编写智能合约,以便消除非确定性操作。这阻碍了广泛采用,因为它要求开发人员编写智能合约来学习一种新语言,并可能导致编程错误。
此外,由于所有事务由所有节点顺序执行,因此性能和规模受到限制。智能合约代码在系统中的每个节点上执行的事实要求采取复杂的措施来保护整个系统免受潜在的恶意合约的侵害,以确保整个系统的弹性。
一种新架构Fabric为事务引入了一种新的架构,我们称之为 execute-order-validate。它通过将事务流分为三个步骤来解决订单执行模型面临的弹性,灵活性,可伸缩性,性能和机密性挑战:
执行交易并检查其正确性,从而认可该交易, 通过(可插入)共识协议订购交易,以及 在将交易提交到分类账之前,根据特定于应用程序的背书策略验证交易这种设计与订单执行范式完全不同,Fabric在达成交易的最终协议之前执行交易。
在Fabric中,特定于应用程序的背书策略指定需要哪些对等节点或其中的对等节点保证给定智能合约的正确执行。因此,每个交易仅需要由满足交易认可策略所必需的对等节点的子集执行(认可)。这允许并行执行,从而提高了系统的整体性能和规模。该第一阶段还消除了任何不确定性,因为不一致的结果可以在订购前滤除。
因为我们已经消除了不确定性,所以Fabric是第一个启用使用标准编程语言的区块链技术。在1.1.0版本中,可以使用Go或Node.js编写智能合约,而在后续版本中还计划支持其他流行语言,包括Java。
私隐与保密正如我们已经讨论的那样,在一个利用PoW作为共识模型的公共,无许可的区块链网络中,交易在每个节点上执行。这意味着合同本身或所处理的交易数据都不会保密。每个事务及其实现的代码对于网络中的每个节点都是可见的。在这种情况下,我们已经将合同和数据的机密性换成了PoW交付的拜占庭容错共识。
对于许多业务/企业用例而言,缺乏机密性可能会成为问题。例如,在供应链合作伙伴网络中,可能会为某些消费者提供优惠价格,以巩固关系或促进额外销售。如果每个参与者都能看到每份合同和交易,那么就不可能在完全透明的网络中维持这种业务关系–每个人都希望获得优惠的价格!
再举一个例子,考虑证券行业,在该行业中,建立仓位(或出售仓位)的交易者不希望竞争对手知道这一点,否则他们将寻求介入游戏,削弱了交易者的竞争能力。
为了解决出于满足企业用例需求的目的而缺乏隐私和机密性的问题,区块链平台采用了多种方法。所有人都有其取舍。
加密数据是提供机密性的一种方法。但是,在利用PoW达成共识的无许可网络中,加密数据位于每个节点上。如果有足够的时间和计算资源,则可能会破坏加密。对于许多企业用例而言,其信息可能遭到破坏的风险是无法接受的。
零知识证明(ZKP)是为解决此问题而正在探索的另一个研究领域,这里的权衡是,目前计算ZKP需要大量时间和计算资源。因此,在这种情况下的权衡是为了保密。
在可以利用替代形式的共识的许可上下文中,人们可能会探索一些将机密信息仅分配给授权节点的方法。
Hyperledger Fabric是允许的平台,可通过其通道架构实现机密性。基本上,Fabric网络上的参与者可以在参与者的子集之间建立一个“通道”,该通道应被授予特定交易集的可见性。将此视为网络覆盖。因此,只有那些参与频道的节点才能访问智能合约(链码)和交易的数据,从而保留了两者的隐私和机密性。
为了改善其隐私和机密性功能,Fabric增加了对私有数据的支持,并在未来开发可用的零知识证明(ZKP)。随着它的可用,将对此进行更多介绍。
可插拔共识事务的顺序被委托给模块化组件以实现共识,该组件在逻辑上与执行事务并维护分类帐的对等方分离。具体来说就是订购服务。由于共识是模块化的,因此可以根据特定部署或解决方案的信任假设量身定制其实现。这种模块化体系结构允许平台依赖完善的工具包来进行CFT(崩溃容错)或BFT(拜占庭容错)排序。
Fabric当前提供两种CFT订购服务实现。第一是基于etcd
library 的的 Raft protocol。另一个是Kafka( 内部使用Zookeeper)。有关当前可用订购服务的信息,请查看有关订购的概念性文档。
还要注意,它们不是互斥的。Fabric网络可以具有支持不同应用程序或应用程序需求的多种订购服务。
性能和可伸缩性区块链平台的性能可能会受到许多变量的影响,例如交易规模,区块规模,网络规模以及硬件限制等。Hyperledger社区目前正在性能和规模工作组内制定一套措施草案。,以及称为Hyperledger Caliper的基准测试框架的相应实现 。
尽管这项工作仍在继续发展,应被视为衡量区块链平台性能和规模特征的权威,但IBM Research的一个团队发表了一篇 同行评审论文,评估了Hyperledger Fabric的体系结构和性能。本文提供了关于Fabric架构的深入讨论,然后使用Hyperledger Fabric v1.1的预发行版报告了团队对该平台的性能评估。
研究团队所做的基准测试工作为Fabric v1.1.0发行版带来了许多性能改进,使平台的整体性能比v1.0.0发行版提高了一倍以上。
结论对区块链平台的任何认真评估都应在其短名单中包括Hyperledger Fabric。
结合起来,Fabric的差异化功能使其成为用于许可区块链的高度可扩展系统,支持灵活的信任假设,使该平台能够支持从政府,金融,供应链物流,医疗保健等广泛的行业用例有很多。
Hyperledger Fabric是Hyperledger项目中最活跃的项目。该平台周围的社区正在稳步增长,并且每个后续版本提供的创新远远超过了其他任何企业区块链平台。