有奖捉虫:云通信与企业服务文档专题,速来> HOT

概述

Hyperledger Fabric 是一个企业级的区块链框架实现,是 Linux 基金会旗下托管的 Hyperledger 开源项目之一,具有高度的模块化、可配置设计,拥有完备的成员管理和治理措施,支持可插拔的共识协议。例如银行、保险、医疗、供应链等行业可以根据自身需求使用各种主流编程语言来开发智能合约,与自身的业务进行对接。 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 和 Zookeeper 的 CFT 排序服务。随后的版本中,Fabric 将实现 etcd/Raft 中的 Raft 排序服务,以及完全分布式的 BFT 排序服务供用户选择。

系统框架





开源社区