介绍
一般而言,区块链是一个不可变的交易分类账,维护在一个分布式对等节点网络中。这些节点通过应用已经由共识协议验证的交易来维护分类帐的副本,该交易被分组为包括将每个块绑定到前一个块的散列的块中。
区块链的第一个也是最广为人知的应用是比特币加密货币,尽管其他人也追随了它的脚步。以太币,另一种加密货币,采取了不同的方法,集成了许多与比特币相同的特性,但添加了智能合约为分布式应用程序创建了一个平台。比特币和以太币属于一类区块链,我们将其归类为公共无许可的区块链技术。基本上,这些都是公共网络,开放给任何人,参与者匿名互动。
随着比特币,以太币和其他一些衍生技术的普及,对将区块链、分布式分类账和分布式应用平台的底层技术应用于更具创新性的企业用例的兴趣也在增长。然而,许多企业用例需要的性能特性是无许可的区块链技术无法(目前)交付的。此外,在许多使用案例中,参与者的身份是一项硬性要求,例如在必须遵循Know-Your-Customer(KYC)和 Anti-Money Laundering(AML)法规的金融交易中。
对于企业使用,我们需要考虑以下要求:
- 参与者必须可被识别或可识别
- 网络需要得到许可
- 高交易吞吐量性能
- 交易确认的低延迟
- 与商业交易有关的交易和数据的隐私和机密性
虽然许多早期的区块链平台目前正在适应企业使用,Hyperledger Fabric从一开始就为企业使用而设计。以下部分描述了Hyperledger Fabric(Fabric)如何与其他区块链平台区分开来,并描述了其架构决策的一些动机。
Hyperledger Fabric
Hyperledger Fabric是一个开源的企业级许可分布式分类账技术(DLT)平台,专为在企业环境中使用而设计,与其他流行的分布式分类帐或区块链平台相比,可提供一些关键的差异化功能。
一个关键的区别是Hyperledger是在Linux基金会下建立的,该基金会本身在开放式治理下培育开源项目的历史悠久且非常成功,使其成长为强大的可持续社区和繁荣的生态系统。Hyperledger由多元化的技术指导委员会和Hyperledger Fabric项目管理,来自多个组织的各种维护人员。它拥有一个开发社区,自最早提交以来已经发展到超过35个组织和近200个开发人员。
Fabric具有高度模块化和可配置的体系结构,为广泛的行业用例提供创新、多功能性和优化,包括银行、金融、保险、医疗保健、人力资源、供应链,甚至数字音乐交付。
Fabric是第一个支持用通用编程语言(如Java,Go和Node.js)编写智能合约的分布式分类账平台,而不是受限制的特定于域的语言(DSL),这意味着大多数企业已经拥有开发智能合约所需的技能,并且不需要额外的培训来学习新的语言或DSL。
Fabric平台也是许可的,这意味着,不像公开无许可的网络,参与者彼此了解,而不是匿名的并且因此完全不可信。这意味着虽然参与者可能彼此不完全信任(例如,他们可能是同一行业中的竞争者),网络可以在基于参与者之间存在的信任的治理模型下运行,例如 处理纠纷的法律协议或框架。
平台最重要的区别之一是它支持可插拔的共识协议,这使得平台能够更有效地定制以适应特定的用例和信任模型。例如,在单个企业中部署时,或由受信任的权威机构运作,完全拜占庭容错的共识可能被认为是不必要的,并且对性能和吞吐量造成过度的拖累。在这种情况下,崩溃容错(CFT)共识协议可能就绰绰有余了,而在多方、分散的用例中,可能需要更传统的拜占庭容错(BFT)共识协议。
Fabric可以利用不需要原生加密货币的共识协议来刺激昂贵的挖掘或推动智能合约执行,避免加密货币会减少一些重要的风险/攻击向量,并且无加密挖掘操作意味着可以使用与任何其他分布式系统大致相同的运营成本来部署平台。
这些差异化设计功能的结合使Fabric成为目前性能更好的平台之一,无论是在交易处理还是交易确认延迟方面,并且它实现了交易以及实现它们的智能合约(Fabric称之为“链码”)的隐私和机密性。
让我们更详细地探索这些差异化的功能。
模块化
Hyperledger Fabric经过特别的设计以具有模块化架构。无论是可插拔的共识,可插拔的身份管理协议(如LDAP或OpenID Connect),密钥管理协议还是加密库,平台的核心设计旨在满足企业用例需求的多样性。
在高层次上,Fabric由以下模块化组件组成:
- 可插拔的排序服务就交易顺序建立共识,然后向对等点广播块。
- 可插拔的成员资格服务提供商负责将网络中的实体与加密身份相关联。
- 可选的点对点八卦服务通过排序服务向其他对等点来传播块输出。
- 智能合约(“链码”)在容器环境(例如Docker)内运行以进行隔离,它们可以用标准编程语言编写,但不能直接访问分类账状态。
- 分类账可以配置为支持各种DBMS。
- 可插拔的认可和验证策略实施,可以在每个应用程序中独立配置。
业界公认没有“一个区块链可以治理它们所有”,Hyperledger Fabric可以通过多种方式进行配置,以满足多个行业用例的各种解决方案要求。
许可和无许可区块链
在一个无许可的区块链中,几乎任何人都可以参与,每个参与者都是匿名的。在这种环境下,除了区块链的状态之外没有任何信任,在一定深度之前,是不可改变的。为了减轻这种信任的缺失,无许可的区块链通常采用一种“挖掘”的原生加密货币或交易费用来提供经济激励,以抵消参与基于“proof of work”(PoW)的拜占庭容错共识形式的特殊成本。
许可的区块链,另一方面,在一组已知的集合中操作区块链,识别并经常审查在产生一定程度信任的治理模型下操作的参与者。许可的区块链提供了一种方法来保护具有共同目标但可能无法完全相互信任的一组实体之间的交互。通过依赖参与者的身份,许可的区块链可以使用更传统的崩溃容错(CFT)或拜占庭容错(BFT)共识协议,这些协议不需要昂贵的挖掘。
另外,在这种许可的情况下,参与者通过智能合约故意引入恶意代码的风险降低。首先,参与者彼此了解和所有行动,无论提交应用程序事务,修改网络配置还是部署智能合约,都会根据为网络和相关交易类型建立的认可策略记录在区块链中。而不是完全匿名,可以很容易地识别有罪方,并根据治理模式的条款处理事件。
智能合约
智能合约或Fabric称之为“链码”,功能作为受信任的分布式应用程序,从区块链中获得安全性/信任以及对等点之间的基本共识。它是区块链应用程序的业务逻辑。
有三个关键点应用于智能合约,尤其是应用于平台时:
- 许多智能合约在网络中同时运行
- 它们可以动态部署(在很多情况下由任何人)
- 应用程序代码应视为不受信任,甚至可能是恶意的
大多数现有的具有智能合约能力的区块链平台遵循共识协议的排序-执行架构:
- 验证并排序交易然后将它们传播到所有对等节点
- 每个对等点然后依次执行交易
几乎所有现有的区块链系统都可以找到排序-执行架构,范围从公共/无许可平台,如以太币(基于PoW的共识)到许可的平台,如Tendermint、Chain和Quorum。
在使用排序-执行架构运行的区块链中执行的智能合约必须是确定性的;否则,可能永远不会达成共识。为解决非确定性问题,许多平台都要求智能合约使用非标准的或特定于领域的语言(如Solidity)编写,以便消除非确定性操作。这阻碍了广泛采用,因为它要求开发人员学习新语言来编写智能合约并可能导致编程错误。
此外,由于所有节点都顺序执行所有交易,因此性能和规模有限。智能合约代码在系统中的每个节点上执行的事实要求采取复杂措施来保护整个系统免受潜在恶意合约的影响,以确保整个系统的弹性。
一种新方法
Fabric为交易引入了一种新的体系结构,我们称之为执行-排序-验证。它通过将交易流分为三个步骤来解决排序-执行模型所面临的弹性、灵活性、可伸缩性、性能和机密性方面的挑战:
- 执行交易并检查其正确性,从而认可它
- 通过(可插拔的)共识协议排序交易
- 在将交易提交到分类账之前,根据特定于应用程序的认可策略验证交易
这种设计与排序-执行范例完全不同,因为Fabric在就排序达成最终协议之前执行交易。
在Fabric中,特定于应用程序的认可策略指定哪些对等节点,或它们中的多少,需要保证给定智能合约的正确执行。因此,每个交易只需要由满足交易认可策略所需的对等节点的子集执行(认可),这允许并行执行,从而提高系统的整体性能和规模。第一阶段也消除了任何非确定性,因为在排序之前可以过滤不一致的结果。
因为我们已经消除了非确定性,所以Fabric是第一个能够使用标准编程语言的区块链技术,在1.1.0版本中,智能合约可以用Go或Node.js编写,而有计划在后续版本中支持其他流行语言,包括Java。
隐私和机密性
正如我们所讨论的那样,在一个公共的,无许可的区块链网络中,利用PoW作为其共识模型,交易被在每个节点上执行。这意味着合约本身和他们处理的交易数据都不存在机密性,每个交易以及实现它的代码对于网络中的每个节点都是可见的。在这个案例中,我们用合约和数据的机密性换取了PoW提供的拜占庭容错共识。
对于许多商业/企业用例而言,这种缺乏机密性可能会有问题。例如,在供应链合作伙伴网络中,某些消费者可能会获得优惠利率,作为巩固关系或促进额外销售的一种手段。如果每个参与者都可以看到每个合约和交易,那么就无法在完全透明的网络中维持这种业务关系 - 每个人都希望获得优惠费率!
作为第二个例子,考虑证券行业,一个交易员建立头寸(或处理其中一个)不希望她的竞争对手知道这一点,否则他们将寻求进入游戏,削弱交易员的策略。
为了满足企业用例要求的目的,解决缺乏隐私和机密性的问题,区块链平台采用了多种方法,所有的都有自己的权衡。
加密数据是提供机密性的一种方法;然而,在利用PoW达成共识的无许可网络中,加密数据位于每个节点上,如果有足够的时间和计算资源,加密可能会被破解。对于许多企业用例,其信息可能被泄露的风险是不可接受的。
Zero knowledge proofs(ZKP)是另一个正在研究解决这个问题的研究领域,这里的权衡是,目前计算ZKP需要大量的时间和计算资源,因此,在这种情况下的权衡是保密性的性能。
在许可的环境下,可以利用其他形式的共识,可以探索将机密信息仅分发给授权节点的方法。
Hyperledger Fabric是一个经过许可的平台,通过其通道架构实现机密性。基本上,Fabric网络上的参与者可以在参与者子集之间建立一个“通道”,该通道应该被授予对特定交易集合的可见性,将此视为网络覆盖。因此,只有那些参与通道的节点才能访问智能合约(链码)和交易数据,从而保护两者的隐私和机密性。
为了提高其隐私和机密性能力,Fabric增加了对私有数据的支持,并且正在研究未来可用的zero knowledge proofs(ZKP),更多关于这一点,因为它变得可用。
可插拔的共识
交易的排序委托给一个模块化组件以达成共识,该组件在逻辑上与执行交易和维护分类账的对等点分离。具体地说,排序服务。由于共识是模块化的,其实现可以根据特定的部署或解决方案的信任假设进行定制,这种模块化架构允许平台依赖完善的工具包进行CFT(崩溃容错)或BFT(拜占庭容错)排序。
在目前可用的版本中,Fabric提供一个使用Kafka和Zookeeper实现的CFT排序服务,在随后的版本中,Fabric将提供使用etcd/Raft实现的Raft共识排序服务以及完全分散的BFT排序服务。
还要注意这些并不相互排斥,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项目中最活跃的,平台周围的社区建设正在稳步增长,每个连续版本提供的创新远远超过任何其他企业区块链平台。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。