Hyperledger Fabric

最近更新时间:2018-11-15 15:32:37

概述

Hyperledger Fabric 是一个企业级的区块链框架实现,是 Linux 基金会旗下托管的 Hyperledger 开源项目之一,具有高度的模块化、可配置设计,拥有完备的成员管理和治理措施,支持可插拔的共识协议。比如银行、保险、医疗、供应链等行业可以根据自身特色灵活配置使用 Fabric、各种主流编程语言来开发智能合约,将其与自身的业务进行对接。
Hyperledger Fabric 不需要利用传统的发币、挖矿、PoW 工作量证明等手段来激励参与方。针对联盟链场景,差异化设计使得 Fabric 成为当前性能优秀、广受认可的区块链底层引擎。

特色与优势

Hyperledger Fabric 具备如下特色:

模块化设计

  • 可插拔的排序服务,对众多区块链参与方提供交易发生的唯一顺序。
  • 可插拔的成员管理服务,使用统一的方法确认区块链上参与方的合法身份。
  • 可插拔的背书和验证策略,可以供上层应用灵活配置,适应各种业务场景。
  • 隔离的容器环境,可以支持运行各种主流编程语言开发的智能合约。
  • 账本可以支持灵活配置,支持使用多种数据库作为状态数据缓存。

准入许可的区块链

传统区块链没有准入许可机制,任何人均以匿名的身份参与其中,为了应对这种场景下带来的不可信和作恶行为,往往使用工作量证明(PoW)来进行交易共识,使用挖矿的方式来对参与方进行激励,这种方法性能较低,交易成本高且消耗能源巨大。

事实上,企业间的区块链需要完善的准入许可,即各个参与方在身份已知的情况下进行交易和共识。在这种情况下,企业在区块链上的行为可以被审计和监管,而参与者之间可以拥有一定程度的信任而非绝对信任。在该背景下,我们可以根据实际情况灵活选择共识机制,使用传统的崩溃容错机制(CFT)换取更高的性能,或者使用拜占庭容错机(BFT)增强区块链网络的抗攻击性。

在许可链的模式下,参与者通过智能合约恶意破坏网络的风险大大降低。无论是修改网络配置、引入新的区块链参与方还是安装部署新的合约,都需要按照预先既定的认可策略进行验证。该策略可以很容易地识别出各种作恶方,并根据治理模型进行相应的处理。

智能合约

Hyperledger Fabric 中的智能合约被称为 “链码” 或者 “链代码”,可以使用主流的开发语言比如 Go、NodeJS、Java 来开发智能合约,并在对应的容器环境中执行。

传统的区块链中,智能合约的执行使用 “排序-执行” 的架构,其执行结果必须是确定性的,否则共识可能无法达成。为了解决非确定性问题,许多平台要求智能合约使用特性的脚本或者特定的语言(例如:Solidity)进行编写,这需要开发人员熟悉特定语言的开发,否则可能会带来不可预知的各种错误。此外,由于所有节点上都无差别地顺序执行多笔交易,因此性能和规模受到限制,所有节点必须具备完善的防护措施来抵御恶意合约带来的影响。

Fabric 中引入了 “预执行-排序-验证” 的全新架构,它可以将任何一笔交易分成三个步骤来解决上述 “排序-执行” 可能带来的灵活性、可伸缩性、性能、隐私性问题。该操作步骤如下:

  1. 预执行一笔交易,并检查其结果的正确性。如果正确,将对结果进行背书 / 签名。
  2. 通过排序服务,对批量的交易进行排序。
  3. 根据特定的验证策略,对交易的执行结果进行检查。如果检查通过,则应用到账本中。

Fabric 支持多种主流语言开发智能合约。在交易参与排序之前,配合全局的排序服务,以及最终落盘前的验证机制,对交易进行预执行和背书,灵活设定节点,消除不确定性。

隐私保护

在一个公开、无准入机制的区块链网络中,默认利用 PoW 作为共识算法,那么交易在每个节点上都会执行。从而使得智能合约和所处理的数据不具备任何机密性,每个智能合约的代码以及交易内容,对于网络中的所有节点都是可见的。

对于许多商业应用来说,这种缺乏机密性的设计会带来许多问题。例如,在供应链的网络中,合作伙伴 A 通过该方式看到智能合约和交易内容,从中获取到更多的折扣或者优惠,并将其用作于合作双方巩固关系或者促进额外销售的手段。而在证券行业中,投资者的目标价格并不希望被其他竞争对手知晓。为了解决此类隐私性需求,区块链需要支持多种方式,以满足各类行业和人群的需求:

  • 数据加密,一种简单常用的方法。随着时间的推移和技术的革新,链上的历史加密数据仍可能会被强大的新型计算工具所破解。

  • 零知识证明(ZKP),解决此类问题的另外一种思路,但设计信息的零知识证明模型与计算需要耗费许多时间和算力。目前,仅作为小范围场景下的一种可选手段。未来 Fabric 会设计和支持更多基于零知识证明的隐私保护方案。

  • 利用控制关键信息传递、访问授权等方式,核心数据只有必要的节点才知晓,其他节点对这部分数据不可见。Hyperledger Fabric 按照该方式实现了通道和私有数据集。

可插拔共识算法

Fabric 中,排序服务是模块化设计的,具备开发能力的用户可以对此进行重新设计和更换。

在当前 Fabric 可用的版本中,对交易进行排序使用基于 Kafka 和 Zookerper 的 CFT 排序服务。随后的版本中,Fabric 将实现 etcd/Raft 中的 Raft 排序服务,以及完全分布式的 BFT 排序服务供用户选择。

系统框架

开源社区

Hyperledger Fabric 开源社区: https://www.hyperledger.org/projects/fabric
Hyperledger Fabric 文档地址:https://hyperledger-fabric.readthedocs.io/en/latest/whatis.html
代码仓库镜像:https://github.com/hyperledger/fabric

常见问题

TBaaS 目前支持哪个版本的 Hyperledger Fabric?

: Hyperledger Fabric v1.1。

TBaaS 为什么选择率先支持 Hyperledger Fabric 平台而不是其他区块链?

:TBaaS 在设计之初的目标定位于:支持多种区块链底层引擎的一站式企业级区块链平台。目前 TBaaS 支持 Hyperledger Fabric 的同时,也支持 BCOS。率先支持 Hyperledger Fabric 的原因在于其开源、优秀的模块化设计、支持多种语言编写智能合约、隐私保护特性丰富。

TBaaS 未来会支持以太坊吗?

:按照国内相关法规要求,TBaaS 不会对以太坊、比特币等开放式区块链进行支持,也不支持用户在 TBaaS 上发行任何数字货币。