智能合约链下执行验证相关

脱链模型和脱链计算方法

摘要 已建议脱链以增强区块链的可扩展性和隐私性,尤其是在公共网络中。但是,缺少系统的分类。在本文中,我们提出了对不同类型的脱链进行分类的通用脱链模型。从我们对这些模型的分析中,我们得出结论,链下计算特别强大,并随后提供了对链下计算方法的描述和比较。关键词区块链、可扩展性、隐私、链下、zkSNARKs、zkSTARKs、Bulletproofs、TEE、sMPC、激励 ACM 参考格式:Jacob Eberhardt 和 Jonathan Heiss。 2018. 链下计算的链下模型和方法。 2018 年 12 月 10 日至 14 日,法国雷恩,第二届分布式账本可扩展和弹性基础设施研讨会 (SERIAL’18)。 ACM,纽约,纽约,美国,6 页。 https://doi.org/10。 1145/3284764.3284766 1 引言 区块链代表了一类具有独特属性和功能的新型分布式系统。它们无需信任单一方即可执行程序,存储不可变的交易历史,并为去中心化应用程序提供高度可用且抗审查的平台。然而,除了法律、文化和组织方面的挑战外,目前尤其是技术限制阻碍了基于网络规模的区块链系统成为现实。每个事务都在网络中的每个节点上处理,这限制了吞吐量。在公共区块链网络中,性能影响尤其严重。此外,为了允许独立的交易验证,所有数据都需要在每个节点上可用。因此,在比特币 [24] 或以太坊 [10] 等公共区块链网络中不能保证隐私。已建议将脱链 [12] 作为解决这些限制的一种方法。这个想法是通过使用区块链外部资源来减少区块链上的计算工作和数据存储。然而,区块链技术引入的关键属性,例如不变性和可用性,绝不能受到损害。

迄今为止,由于不存在系统分类,因此很难对不同的脱链方法进行比较和推理。因此,作为我们的第一个贡献,我们引入了概念上的链下模型,这些模型有助于对不同的链下方法进行分类。我们区分链下存储、链下计算和混合链下。将数据存储在区块链之外有助于减少客户端的存储消耗,并通过向网络中的其他节点隐藏数据来增强机密性。但是,无法保证数据的可用性,因此数据链下需要仔细考虑,以免影响活跃性。链下计算可以帮助减少处理冗余并具有可扩展性,但需要利用不会重新引入信任作为假设的机制。根据我们的分析,我们得出结论,链下计算是解决区块链网络隐私和可扩展性的一个特别有前途的研究领域。区块链不应该计算,而是以高度可用的方式提供数据,而状态转换是在链下计算的。由于适用于链下计算的方法的新颖性和复杂性,很难评估它们的属性、比较它们并评估它们对具体用例的适用性。因此,作为我们的第二个贡献,我们提供了当前讨论的不同链下计算方法的概述,并在可扩展性、隐私性、安全性和可编程性方面对它们进行了比较。为此,我们将方法分为可验证计算、安全多方计算、基于 Enclave 的计算和激励驱动的计算等类别。据我们所知,目前还没有相关工作为链下方法推导分类或提供链下计算建议的全面比较。 2 链下模型在本节中,我们介绍了一个通用的链下模型,它源自链上交易处理,并描述了链下存储、计算和结合两者的混合方法。 2.1 链上交易执行区块链可以被设想为处理导致状态转换的交易的全局状态机[32]。选定的共识协议建立了全球唯一的交易顺序,然后在区块链网络中的每个节点上冗余执行。更仔细地观察区块链交易的执行,它在概念上可以分为两个不同的阶段,如图 1 所示。

可行性和一般性在本节中,我们分析了链下存储和计算模型的属性,并得出结论,在解决区块链系统当今面临的可扩展性和隐私挑战时,链下计算特别有前景。来自区块链的脱链数据涉及两个主要挑战,即数据完整性和可用性。需要始终保持数据完整性,即区块链需要能够在接收时验证数据在链下存储或传输过程中没有被更改。这个挑战可以通过通过内容解决链下数据对象来优雅地解决——通常是通过数据的散列并将这样的散列指针存储在区块链上。通过这样做,区块链可以通过对接收到的数据应用哈希函数并将其与链上引用进行比较来重新计算数据对象的地址。数据可用性是一个更难解决的问题:区块链高度可用,因为所有网络节点都存储了完整的区块链状态。因此,每个最新节点都保证可以访问交易验证所需的相关状态。在链下状态下,区块链交易不再依赖于外部节点提供的数据。使用具有冗余的去中心化存储系统,例如 IPFS [5] 或 SW ARM [31],可以提高可用性,但区块链的活性保证仍然被削弱。为了进一步提高链下数据的可用性,已经提出了基于经济激励的方法,例如文件币 [22],但仍然可能发生由于网络分区导致的数据丢失或不可用。从这个分析中,我们推断出链下数据存储在某些情况下是有用的,但是——除非数据可用性问题得到解决——不能作为减少区块链节点存储空间的通用解决方案。链下数据在使用区块链提供对链下数据集的引用但不需要了解数据本身的情况下特别有用。相比之下,阻止智能合约 [10] 取得进展肯定是不可取的,因为在计算阶段之前需要检索和验证不可用的链下状态信息。与链下存储不同,链下计算仍然可以保证活跃性:只要将链下状态转换设计为可独立计算,节点就可以随时创建交易,无需依赖任何第三方。总之,我们得出的结论是,区块链不应通过脱链状态损害可用性并因此冒风险,而应充当高度可用的存储,以验证在其他地方计算的状态转换。在本文的其余部分中,我们将介绍和讨论允许在没有强信任假设的情况下进行脱链计算的方法,并在不同程度上有益于可扩展性和隐私。这种方法有助于设计更具可扩展性和隐私保护的区块链系统。如果链下计算结果的验证比本地链上执行更便宜,则可以增加交易吞吐量。此外,私有信息仍然可以通过使用私有输入来影响状态转换的计算,从而增加隐私和机密性。 4 链下计算方法 在本节中,我们介绍了不同的链下计算方法并描述了具体的实现。 4.1 可验证的链下计算作为第一个计算链下方法,我们提出了可验证的链下计算。 4.1.1 概念。我们将可验证的链下计算定义为一种链下技术,证明者执行计算,然后发布结果,包括证明计算正确性的加密证明到区块链。然后,链上验证者验证证明并在成功的情况下保留结果。可验证的计算方案有许多变体;我们专注于特别适合脱链的方案。我们根据以下要求确定了这些要求,我们认为这些要求与该上下文特别相关: 非交互性:证明者应该能够在一条消息中说服验证者。需要多条消息的交互方案意味着多个区块链交易,这增加了区块链网络的负载并增加了验证成本。便宜的验证:与本地链上执行相比,链上验证应该便宜。否则,将没有可扩展性优势。然而,如果机密性是脱链计算的动机,那么链上执行的额外成本是可以接受的。影响成本的两个因素

在本文中,我们介绍了一个通用的链下模型,描述了来自区块链的不同形式的链下数据或计算,以增强此类系统。此外,我们提供了计算链下技术的概述,描述了它们,并就不同的理想属性对它们进行了比较。

SlimChain:通过链下存储和并行处理扩展区块链交易

区块链技术已成为许多分散式应用程序在其他不受信任的同行之间运行的基石。然而,众所周知,现有的区块链系统不能很好地扩展。交易通常按顺序执行和提交,以保持对总订单的相同视图。此外,为了保证完整性,有必要在区块链网络的每个节点中复制交易数据及其执行。这样的存储和计算要求给区块链系统带来了沉重的负担,不仅限制了系统的可扩展性,而且通过使网络更加集中而破坏了系统的安全性和鲁棒性。为了解决这些问题,在本文中,我们提出了 SlimChain,这是一种新颖的区块链系统,可通过链下存储和并行处理来扩展交易。 SlimChain 提倡无状态设计,只维护链上账本状态的短期承诺,同时将交易执行和数据存储专用于链下节点。为了实现 SlimChain,我们提出了链下智能合约执行、链上交易验证和状态承诺的新方案。我们还提出了减少网络传输的优化和一种新的分片技术,以进一步提高系统的可扩展性。进行了广泛的实验以验证所提出的 SlimChain 系统的性能。与现有系统相比,SlimChain 将链上存储需求降低了 97% ~ 99%,同时还将峰值吞吐量提高了 1.4 倍 ~ 15.6 倍。

ACE:复杂智能合约的异步并发执行

智能合约是可编程、去中心化和透明的金融应用。因为智能合约平台通常支持图灵完备的编程语言,所以人们常说这样的系统可以启用任意应用程序。然而,当前的无许可智能合约系统对可以实现的计算类型施加了严格的限制。例如,以太坊的全局复制和顺序执行模型需要较低的气体限制,这使得许多计算不可行。在本文中,我们提出了一种称为 ACE 的新系统,其主要目标是在无许可区块链上启用更复杂的智能合约ACE 基于链下执行模型,合约发行者指定一组服务提供商来执行独立于共识层的合约代码。与以前的解决方案相比,ACE 的主要优势在于它允许一个合约安全地调用另一个由一组不同的服务提供者执行的合约。因此,ACE 是第一个通过灵活的信任假设实现交互式智能合约的链下执行的解决方案。我们的评估表明,ACE 支持比标准以太坊复杂几个数量级的智能合约

激励措施。自然,ACE 需要激励服务提供商参与系统。这可以使用以太坊的气体模型轻松提供。矿工可以收到包含交易的简单的每字节费用,并且合同执行费用(基于使用的气体)可以归执行合同的服务提供商所有。由于需要执行每份合约的参与者较少,因此可以预期汽油价格将大大低于以太坊。服务提供商发生变化。对于长期运行的智能合约,可能需要能够更新一组服务提供者。例如,一个人可能想要更换一个永久没有响应的服务提供商。一种可能的方法是,部署的智能合约代码包括一个特定于合约的服务提供商更新策略,该策略定义了在初始合约部署后服务提供商可以更新的条件。

签名聚合。对于大型执行集(例如 20 个或更多服务提供商),所需的结果签名会增加块大小和验证时间。如果使用大型执行集,则可以通过使用聚合签名方案(例如 BLS 签名 [4])来减少块大小和验证时间。客户端可以从 n 个服务提供商中的 q 个收集单独的结果签名,然后将它们聚合在一起,然后将结果广播给矿工。这种优化仅对大型执行集有益,因为与 ECDSA 等标准签名相比,聚合签名的验证时间较长。以太坊之上的 ACE。原则上,ACE 可以作为以太坊之上的智能合约来实现。但是,这将要求所有验证组件在以太坊虚拟机中的智能合约中运行,而不是在本地运行。

由于在以太坊智能合约中实施许多操作(就gas而言)成本很高(例如处理验证队列),吞吐量将非常有限。进一步的相关工作。 Plasma [26] 是通过引入所谓的子链在以太坊之上扩展的另一种方法,子链运行自己的共识机制并为特定目的处理交易。这需要在主链和子链之间进行明确的资产转移,并使子链之间的交互复杂化。解决方案 [11, 34] 在单个节点上并行执行多个内核的智能合约。在这样的解决方案中,每个节点仍然需要执行每个智能合约调用。 8 结论 通常期望像以太坊这样的无许可智能合约平台能够启用任意金融应用程序。然而,在实践中,这样的系统对可以实现的计算类型施加了严格的限制。在本文中,我们描述了一种称为 ACE 的新系统,该系统使用指定服务提供商的链下执行来实现几个数量级的更复杂的合约。我们解决方案的关键技术成分是并发控制协议,它允许合约跨服务提供者边界相互调用,但不要求所有服务提供者必须相互信任。

猜你喜欢

转载自blog.csdn.net/weixin_40889839/article/details/124147191