返回

Hyperledger Fabric文档v2.2(一)

介绍

介绍

区块链是一个由分布式网络中的节点维护的不可篡改的账本。这些节点通过执行被共识协议验证过的交易来各自维护一个账本的副本。账本以区块的形式存在。每个区块通过哈希和之前的区块相连

比特币和以太坊属于同一类区块链,我们将其归类为**公共非许可 (Public Permissionless)**区块链技术,允许任何人在上面匿名互动。

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

  • 参与者必须是已认证的或者可识别的
  • 网络需要获得许可
  • 高交易吞吐量性能
  • 交易确认低延迟
  • 与商业交易有关的交易和数据的隐私和机密性

当前许多早期的区块链平台正在为企业应用做调整,而 Hyperledger Fabric 从一开始就设计为企业用途。下面的部分描述了 Hyperledger Fabric(Fabric)与其他区块链平台的不同,并讲解了其架构设计的一些理念。

Hyperledger Fabric

  • 在 Linux 基金会下建立,开放式治理
  • 具有高度模块化可配置的架构,可用于银行、金融、保险、医疗保健、人力资源、供应链甚至数字音乐分发
  • 是第一个支持通用编程语言编写智能合约(如 Java、Go 和 Node.js)的分布式账本平台
  • 许可的,这意味着它与公共非许可网络不同,参与者彼此了解而不是匿名的或完全不信任的
  • 支持可插拔的共识协议,使得平台能够更有效地进行定制,以适应特定的业务场景和信任模型
    • 例如,当部署在单个企业内或由可信任的权威机构管理时,完全拜占庭容错的共识可能是不必要的,并且大大降低了性能和吞吐量。在这种的情况下,崩溃容错(Crash Fault-Tolerant,CFT)共识协议可能就够了,而在去中心化的场景中,可能需要更传统的拜占庭容错(Byzantine Fault Tolerant,BFT)共识协议。
  • 不需要原生加密货币的共识协议来激励昂贵的挖矿或推动智能合约执行

这些差异化设计特性的结合使 Fabric 成为当今交易处理和交易确认延迟方面性能较好的平台之一,并且它实现了交易的隐私和保密以及智能合约(Fabric 称之为“链码”)

模块化

  • 可插拔的排序服务对交易顺序建立共识,然后向节点广播区块;
  • 可插拔的成员服务提供者负责将网络中的实体与加密身份相关联;
  • 可选的P2P gossip 服务通过排序服务将区块发送到其他节点;
  • 智能合约(“链码”)隔离运行在容器环境(例如 Docker)中。它们可以用标准编程语言编写,但不能直接访问账本状态;
  • 账本可以通过配置支持多种 DBMS;
  • 可插拔的背书和验证策略,每个应用程序可以独立配置。

业界一致公认,没有“可以一统天下的链(one blockchain to rule them all)”。Hyperledger Fabric 可以通过多种方式进行配置,以满足不同行业应用的需求。

许可和非许可区块链

非许可区块链:几乎任何人都可以参与,每个参与者都是匿名的。在这样的情况下,区块链状态达到不可变的区块深度前不存在信任。为了弥补这种信任的缺失,非许可区块链通常采用“挖矿”或交易费来提供经济激励,以抵消参与基于“工作量证明(PoW)”的拜占庭容错共识形式的特殊成本。

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

另外,在许可的情况下,降低了参与者故意通过智能合约引入恶意代码的风险。首先,参与者彼此了解对方以及所有的操作,无论是提交交易、修改网络配置还是部署智能合约都根据网络中已经确定的背书策略和相关交易类型被记录在区块链上。与完全匿名相比,可以很容易地识别犯罪方,并根据治理模式的条款进行处理。

智能合约

智能合约,在 Fabric 中称之为“链码”,作为受信任的分布式应用程序,从区块链中获得信任,在节点中达成基本共识。它是区块链应用的业务逻辑。

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

  • 多个智能合约在网络中同时运行,
  • 它们可以动态部署(很多情况下任何人都可以部署),
  • 应用代码应视为不被信任的,甚至可能是恶意的。

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

  • 验证并将交易排序,然后将它们传播到所有的节点,
  • 每个节点按顺序执行交易。

由于所有节点都按顺序执行所有交易,性能和规模被限制。系统要求智能合约代码要在每个节点上都执行,这就需要采取复杂措施来保护整个系统免受恶意合约的影响,以确保整个系统的弹性。

一种新方法

针对交易,Fabric 引入了一种新的架构,称为执行-排序-验证。为了解决顺序执行模型面临的弹性、灵活性、可伸缩性、性能和机密性问题,它将交易流分为三个步骤:

  • 执行一个交易并检查其正确性,从而给它背书,
  • 通过(可插拔的)共识协议将交易排序
  • 提交交易到账本前先根据特定应用程序的背书策略验证交易

这种设计与顺序执行模式完全不同,因为 Fabric 是在交易顺序达成最终一致前先执行交易。

在 Fabric 中,特定应用程序的背书策略可以指定需要哪些节点或多少节点来保证给定的智能合约正确执行。因此,每个交易只需要由满足交易的背书策略所必需的节点的子集来执行(背书)。这样可以并行执行,从而提高系统的整体性能和规模。第一阶段也消除了任何非确定性,因为在排序之前可以过滤掉不一致的结果。

隐私和保密性

在一个公共的、非许可的区块链网络中,利用 PoW 作为其共识模型,交易在每个节点上执行。这意味着合约本身和他们处理的交易数据都不保密。每个交易以及实现它的代码,对于网络中的每个节点都是可见的。在这种情况下,我们得到了基于 PoW 的拜占庭容错共识却牺牲了合约和数据的保密性。

对于许多商业业务而言,缺乏保密性就会有问题。例如,在供应链合作伙伴组成的网络中,作为巩固关系或促进额外销售的手段,某些消费者可能会获得优惠利率。如果每个参与者都可以看到每个合约和交易,在一个完全透明的网络中就不可能维持这种商业关系,因为每个消费者都会想要优惠利率。

Hyperledger Fabric 是一个许可平台,通过其通道架构和私有数据特性实现保密。在通道方面,Fabric 网络中的成员组建了一个子网络,在子网络中的成员可以看到其所参与到的交易。因此,参与到通道的节点才有权访问智能合约(链码)和交易数据,以此保证了隐私性和保密性。私有数据通过在通道中的成员间使用集合,实现了和通道相同的隐私能力并且不用创建和维护独立的通道

可插拔共识

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

Fabric 目前提供了一种基于etcdRaft 协议 的 CFT 排序服务的实现。更多当前可用的排序服务请查阅排序服务概念文档

另外请注意,这些排序服务并不相互排斥。一个 Fabric 网络中可以有多种排序服务以支持不同的应用或应用需求。

性能和可扩展性

一个区块链平台的性能可能会受到许多因素的影响,例如交易大小、区块大小、网络大小以及硬件限制等。

结论

Fabric 的这些特性使其成为一个高度可扩展的系统,该平台是支持灵活的信任假设的许可区块链,因此能够支持从政府、金融、供应链物流到医疗保健等各种的行业应用。

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

Built with Hugo
Theme Stack designed by Jimmy