Fabric 平台也是
经过许可的,这意味着与公共的无许可网络不同,参与者是彼此认识的,而不是匿名的,因此完全不受信任。这意味着虽然参与者可能不会
完全信任彼此(例如,他们可能是同一行业的竞争对手),但网络可以在建立在参与者之间
确实存在的信任基础上的治理模型下运行,例如处理纠纷的法律协议或框架。
该平台最重要的差异化因素之一是它支持可
插入的共识协议,使平台能够更有效地定制以适应特定的用例和信任模型。例如,当部署在单个企业内或由受信任的机构运营时,完全拜占庭容错共识可能被认为是不必要的,并且会过度拖累性能和吞吐量。在这种情况下,
崩溃容错(CFT) 共识协议可能绰绰有余,而在多方、分散的用例中, 可能需要更传统的拜占庭容错(BFT) 共识协议。
这些差异化设计特征的结合使 Fabric成为当今在交易处理和交易确认延迟方面
性能更好的平台之一,它实现了交易和智能合约(Fabric 称之为“链代码”)的
隐私和机密性。他们。
让我们更详细地探讨这些差异化功能。
模块化
Hyperledger Fabric 经过专门设计,具有模块化架构。无论是可插拔共识、LDAP 或 OpenID Connect 等可插拔身份管理协议、密钥管理协议还是加密库,该平台的核心设计都是为了满足企业用例需求的多样性。
在高层次上,Fabric 由以下模块化组件组成:
- 可插入排序服务就交易顺序建立共识,然后将区块广播给对等方。
- 可插入成员服务提供商负责将网络中的实体与加密身份相关联。
- 可选的点对点八卦服务通过向其他点订购服务来传播块输出。
- 智能合约(“chaincode”)在容器环境(例如 Docker)中运行以进行隔离。它们可以用标准编程语言编写,但不能直接访问分类帐状态。
- 分类帐可以配置为支持各种 DBMS。
- 可以为每个应用程序独立配置的可插入背书和验证策略实施。
业内普遍认为,没有“一个区块链可以统治所有人”。Hyperledger Fabric 可以通过多种方式进行配置,以满足多个行业用例的不同解决方案需求。
许可与非许可区块链
在无需许可的区块链中,几乎任何人都可以参与,而且每个参与者都是匿名的。在这种情况下,除了区块链的状态在一定深度之前是不可变的之外,没有其他信任。
另一方面,许可区块链在一组已知、已识别且经常经过审查的参与者之间运行区块链,这些参与者在产生一定程度信任的治理模型下运行。许可区块链提供了一种方法来保护具有共同目标但可能彼此不完全信任的一组实体之间的交互。通过依赖参与者的身份,经过许可的区块链可以使用更传统的崩溃容错 (CFT) 或拜占庭容错 (BFT) 共识协议,这些协议不需要昂贵的挖掘。
此外,在这种许可的情况下,参与者通过智能合约故意引入恶意代码的风险会降低。首先,参与者彼此了解,并且所有操作,无论是提交应用程序交易、修改网络配置还是部署智能合约,都按照为网络和相关交易类型建立的背书策略记录在区块链上。不是完全匿名,而是可以很容易地识别有罪的一方,并根据治理模型的条款处理事件。
智能合约
智能合约,或 Fabric 称之为“链码”的东西,充当受信任的分布式应用程序,从区块链和对等方之间的底层共识中获得安全/信任。它是区块链应用程序的业务逻辑。
适用于智能合约的三个关键点,尤其是应用于平台时:
- 许多智能合约在网络中同时运行,
- 它们可以动态部署(在许多情况下由任何人部署),并且
- 应用程序代码应该被视为不受信任的,甚至可能是恶意的。
大多数现有的支持智能合约的区块链平台都遵循
订单执行架构,其中共识协议:
- 验证和排序交易,然后将它们传播到所有对等节点,
- 然后每个对等点按顺序执行交易。
订单执行架构几乎可以在所有现有的区块链系统中找到,范围从 以太坊(具有基于 PoS 的共识)等公共/无许可平台到Tendermint、 Chain和Quorum等许可平台。
在使用订单执行架构运行的区块链中执行的智能合约必须是确定性的;否则,可能永远无法达成共识。为了解决非确定性问题,许多平台要求智能合约以非标准或特定领域的语言(例如Solidity)编写,以便消除非确定性操作。这阻碍了广泛采用,因为它需要开发人员编写智能合约来学习一门新语言,并可能导致编程错误。
此外,由于所有交易都由所有节点顺序执行,因此性能和规模受到限制。智能合约代码在系统中的每个节点上执行的事实要求采取复杂的措施来保护整个系统免受潜在恶意合约的影响,以确保整个系统的弹性。
一种新方法
Fabric 引入了一种新的事务架构,我们称之为
execute-order-validate。它通过将交易流分为三个步骤来解决订单执行模型面临的弹性、灵活性、可扩展性、性能和机密性挑战:
- 执行交易并检查其正确性,从而认可它,
- 通过(可插入的)共识协议订购交易,以及
- 在将交易提交到分类账之前根据特定于应用程序的背书策略验证交易
这种设计从根本上背离了订单执行范式,因为 Fabric 在就订单达成最终协议之前执行交易。
在 Fabric 中,特定于应用程序的背书策略指定了哪些对等节点或其中有多少对等节点需要担保给定智能合约的正确执行。因此,每个事务只需要由满足事务背书策略所必需的对等节点子集执行(背书)。这允许并行执行提高系统的整体性能和规模。第一阶段还
消除了任何不确定性,因为可以在订购前过滤掉不一致的结果。
因为我们已经消除了非确定性,Fabric 是第一个
支持使用标准编程语言的区块链技术。
隐私和保密
正如我们所讨论的,在一个利用 PoW 作为其共识模型的公共、无许可区块链网络中,交易在每个节点上执行。这意味着合同本身及其处理的交易数据都不会保密。每个事务以及实现它的代码对网络中的每个节点都是可见的。在这种情况下,我们用合约和数据的机密性换取了 PoW 交付的拜占庭容错共识。
对于许多商业/企业用例来说,这种保密性的缺乏可能会带来问题。例如,在供应链合作伙伴网络中,某些消费者可能会获得优惠价格,以此作为巩固关系或促进额外销售的一种方式。如果每个参与者都可以看到每一份合同和交易,那么在一个完全透明的网络中维护这样的业务关系就变得不可能了——每个人都会想要优惠的价格!
作为第二个例子,考虑证券行业,其中建立头寸(或处置头寸)的交易员不希望她的竞争对手知道这一点,否则他们将寻求参与游戏,削弱交易员的策略。
为了解决为满足企业用例需求而缺乏隐私和机密性的问题,区块链平台采用了多种方法。所有人都有自己的权衡取舍。
加密数据是提供机密性的一种方法;然而,在利用 PoW 达成共识的无许可网络中,加密数据位于每个节点上。如果有足够的时间和计算资源,加密可能会被破解。对于许多企业用例,他们的信息可能受到损害的风险是不可接受的。
零知识证明 (ZKP) 是正在探索解决此问题的另一个研究领域,这里的权衡是,目前计算 ZKP 需要大量时间和计算资源。因此,这种情况下的权衡是保密性能。
在可以利用替代形式的共识的许可上下文中,人们可能会探索将机密信息的分发仅限于授权节点的方法。
Hyperledger Fabric 作为一个许可平台,通过其通道架构和
私有数据 功能实现机密性。在通道中,Fabric 网络上的参与者建立了一个子网络,其中每个成员都可以看到一组特定的交易。因此,只有那些参与通道的节点才能访问智能合约(链代码)和交易数据,从而保护两者的隐私和机密性。私有数据允许在通道上的成员之间进行收集,允许与通道相同的保护,而无需创建和维护单独通道的维护开销。
性能和可扩展性
区块链平台的性能会受到许多变量的影响,例如事务大小、块大小、网络大小,以及可用的硬件资源,例如 CPU、内存、磁盘空间、磁盘和网络 I/O。