查看原文
其他

# Rollup 是什么?| Thought for Today

James Prestwich 加密厨房 2024-03-07

James Prestwich

读完需要

11分钟

速读仅需 4 分钟

以太坊「上海升级」即将到来,二层项目 Arbitrum 宣布发币,Rollup 二层越来越受关注。今天分享由跨链消息协议 Nomad Protocol 创始人 James Prestwich 撰写的一篇 Rollup 技术入门介绍。


延伸阅读:以太坊上海升级 4 月 12日 进行,纪念活动紧锣密鼓筹备 ing


作者: James Prestwich

本文与 Optimism 的 Mark Tyneway 合作撰写。他是一位出色的工程师也是我的好朋友。我们于 2021 年中一起写了这篇文章,然后把它放在草稿文件夹里很长时间。在过去的 18 个月里,我们对 Rollup 的想法发生了很大的变化。特别是,这篇博客并没有区分托管在链上和托管在通用数据可用性系统上的 Rollup。我们选择现在发布它,只是为了让它不再待在草稿中。

1

   

第一部分:Rollup 的含义与原因

区块链信仰者吹嘘通过在全局状态上达成共识的方式可以消除中介机构和信任第三方来彻底改变市场。然而,区块链的吞吐量有限,用户必须互相竞价才能获得访问权限。随着日益普及,一些用户已经愿意支付非常高的费用来更新共享状态。不断上涨的费用已经开始挤压小用户。区块链必须能够远远超越其当前的限制,否则就会面临普通用户无法访问的风险。不幸的是,共识系统的性质让增加交易吞吐量变得非常困难。

希望获得完全安全的节点必须处理每个交易并存储所有状态更新,否则将与网络中的其他节点脱离共识。但是,节点软件通常支持几个安全级别。用户可以自由选择他们的安全级别。轻节点仅检查一些共识规则。它们适用于轻量级应用,但依赖于对网络上其他节点的信任。完整节点确保链遵循所有共识规则,执行比轻节点更多的工作。不想运行节点的用户可以将该责任外包给像 Infura 或 Alchemy 这样的服务提供商。

设计区块链时,工程师们针对特定最小硬件运行的全节点进行设计。由于所有全节点同时执行相同的验证工作,因此最小硬件要求限制了整个系统的吞吐量。链的设计者设定交易限制,以确保目标硬件可以在产生下一个新区块之前验证每个新区块。增加吞吐量通常会使区块更难验证或更频繁地产生。因此,吞吐量的增加通常需要相应增加硬件要求。比特币将此嵌入到区块大小和签名操作的限制中,而以太坊使用每个区块的 gas 限制的 gas 计量执行 ( https://github.com/ethereum/research/blob/master/papers/pricing/ethpricing.pdf )。换句话说,以太坊的 gas 限制增加意味着提高最小硬件要求并排除不符合新要求的节点。

这一硬件目标决定了参与网络的「入场费」。为了从网络中获得完整的价值,用户必须通过运行节点支付入场费。不运行完整节点的用户可以运行消耗更少计算资源的轻节点(更低的入场费),但需要依赖受信任的状态提供者提供某些功能。不能运行轻节点的用户必须依赖于受信第三方,并可能被该提供者欺骗。尽管大多数用户即使有自托管的节点也更喜欢中心化提供者,但保持目标节点硬件的可负担性非常重要,以确保链的完全参与不仅限于富人。

因此,链的吞吐量(通常以每秒交易数衡量)受到最小硬件的严格限制。这种稀缺性迫使用户通过支付高昂的 gas 价格来竞争交易包含。理想情况下,我们希望在不损害安全性的情况下提高同一硬件的吞吐量。我们称我们在特定硬件上提高吞吐量的能力为可扩展性。更好的可扩展性意味着使用相同的资源处理更多的交易。可扩展性的提高比吞吐量增加更为可取,但也更具挑战性。

在过去的十年里,许多吞吐量解决方案设计了出来,但很少有被部署。比特币有闪电通道。以太坊出现了一系列提议,包括 Plasma、分片和状态通道。在过去的一年里,几乎所有以太坊吞吐量研究都集中在了 Rollup 上。Rollup 是一种吞吐量解决方案的提议类别,它缓解了在链上运行所有状态转换的需求。虽然有几种不同的 Rollup,但它们都共享一些关键的设计元素:

  1. Rollup 节点依赖于主链来为它们的状态更新排序;

  2. Rollup 节点依赖于主链来提供它们的历史记录;

  3. 主链的共识不遵循 Rollup 状态。

另外,在目前部署在以太坊上的所有 Rollup 中,还有一个共同特点:

  1. 主链有一些机制可以回溯验证 Rollup 状态的某些部分。

这种验证机制可以被视为「神龛」的桥梁。它是 Rollup 机制中特别处理的桥梁,通常与机制密不可分。没有「神龛」桥的 Rollup 被称为主权 Rollup。从 2013 年底在比特币上托管的 Omni(早期的 MasterCoin)开始,主权 Rollup(也称为「天鹅绒分叉 ( https://eprint.iacr.org/2018/087.pdf )」)已经在实际应用中部署了多年。

然而,大多数关于 Rollup 的对话都集中在带有「神龛」桥的系统上。2018 年设计的基于 zk 的进入和退出机制 ( https://github.com/barryWhiteHat/roll_up )开启了当前一波 Rollup 研究和创新的浪潮。因此,Rollup 通常被桥梁的机制所指称。zk-Rollup 从零知识证明中获得桥梁安全性。Optimistic Rollup 使用乐观欺诈证明来保证其桥梁的安全。带有「神龛」桥的 Rollup 经过精心设计,以确保在主链上运行桥梁是经济的。

Rollup 用户运行 Rollup 全节点。Rollup 节点像其他完整节点一样,从主链读取 Rollup 数据,并在本地处理这些数据以生成 Rollup 状态。主链保证必要的数据可用。由于 Rollup 数据进入主链历史记录,因此任何人都可以通过同步主链和 Rollup 全节点来随时同步 Rollup 状态。因此,Rollup 全节点通常需要主链全节点才能运行。

区块链需要全局共识,这限制了它们的吞吐量。像分片、通道和 Rollup 这样的解决方案通过选择依赖于全局共识的较小一组共识节点来增加吞吐量。这种本地共识可以设置更高的节点要求、改变验证要求或接受较少的安全性。吞吐解决方案可以确认比主网络更多的交易,因为它们可以通过进行特定的交易折衷来优化不同的应用。每种吞吐解决方案都做出不同的折衷。它们保留主链的某些属性并牺牲其他属性。

2

   

第二部分:分区

在过去几年中,我们一直在寻找正确的权衡集,Rollup 似乎在权衡景观中占据了一个迷人的位置。我们被 Rollup 吸引的原因是它们保留了区块链的许多理想特性:

  • 与侧链不同,Rollup 具有与主链相同的数据可用性保证;

  • 与通道不同,任何人都可以在运行时加入 Rollup;

  • 与分片不同,Rollup 是异构和动态的。

实质上,Rollup 保留了主链的最佳部分,同时允许实验。它们不像分片或侧链那样制定第二个共识集,而是在主链的全局共识中创建了一个分区,可以调整规则以针对特定用例。通用机器(如 EVM)可以执行任何计算,但无法与专用机器竞争速度或效率。由于主链共识对 Rollup 内部的规则一无所知,因此今天在以太坊上可以尝试许多不同的专业模型。

Fuel 的 Rollup 基于 UTXO,但托管在基于帐户的链上!Optimism 和 Arbitrum VM 镜像了 EVM 的状态模型,但受到欺诈证明的保护。Matter Labs 的 zkSync 使用其帐户模型,每个状态更新都使用零知识有效性证明。Aztec 构建了类似 UTXO 的注释集,并附带有效性证明。(如果我们没有在这里提到您的 Rollup,请不要对我们大喊大叫,这个列表如今非常长)。这些 Rollup 可以自由地为支付、合约或其他任何事物量身定制。Rollup 模型的好处在于它能够以动态、非授权的方式启用对状态、验证和治理模型的实验。

此外,由于 Rollup 干净地其对状态分区,一层用户可以为特定的 Rollup 运行验证者或完全忽略它们。Rollup 是可选的。像通道一样,Rollup 将故障隔离到参与者,主链继续不受影响。用户仅同步他们关心的 Rollup 及其状态,无需担心其他事项。Rollup 验证局限于想要参与的人,而不是全局跨所有节点。像任何去中心化应用(dApp)一样,Rollup 与其他一层用户竞争区块空间。但是,它们平均使用的一层 gas 要少于如果相同的交易在一层上执行时。此外,除非它们在使用它,否则一层用户不需要支付任何特定 Rollup 的成本。

实质上,Rollup 提供了一个沙盒,可以为任何目的放宽或调整链的规则。这种规则集之间的分区是一个强大的工具,让我们可以使用不同的验证模型,如有效性或欺诈证明。它甚至允许用户并行处理交易,例如使用 UTXO。而不是将应用移动到完全不同的一层,dApp 可以使用更适合它们的执行模型,同时仍然受益于以太坊生态系统的网络效应。换句话说,Rollup 不是扩展解决方案。Rollup 是封装的可扩展状态模型,代价是分区一层验证者集。

如果还有什么疑虑,请考虑(作为思想实验)在 [Mina](https://minaprotocol.com/ ( https://minaprotocol.com/ )) 上部署的 Rollup:具有有效性证明的简洁链。它的所有区块都由附带的零知识证明证明有效。如果我们在其中添加一个 zk-Rollup,我们将不会获得任何吞吐量方面的好处。主链已经使用了零知识有效性证明,因此添加具有有效性证明的 Rollup 并没有使其受益。Rollup 所做的任何事情都可以在基链上完成。

另一方面,在 Mina 中添加 Optimistic Rollup 可能会通过允许评估新类型的交易来提高 Mina 的吞吐量,这些交易在零知识证明中成本过高。在平均情况下,ORU 可以比基础链更便宜地验证交易。从这里开始,很容易看出 Rollup 的好处来自于调整验证规则和安全模型的能力。Rollup 本身是一种在没有链的许可的情况下改变链规则的机制。它们不是解决扩展问题的万能药方。

3

   

第三部分:折衷方案

Rollup 的好处来自于将共识集分区,以便较小的节点组可以更改状态和验证规则以增加吞吐量。不幸的是,我们不能简单地调整一些数字并增加吞吐量。我们已经将可扩展性推到了需要做出权衡才能获得任何好处的地步。Rollup 是在主链上运行新的目标规则集的工具。虽然分区防止了 Rollup 将许多成本外部化到一层,但实施这些规则的成本仍然必须支付。参与 Rollup 对于所有用户来说都比参与基链更昂贵。这就是为什么我们说 Rollup 不是链的扩展解决方案的原因:它们具有更高的节点成本。

Rollup 将其历史记录嵌入主链历史记录中。为了跟随 Rollup,验证者必须同步主链历史记录。因为主链强制执行 Rollup 规则,所以 Rollup 验证者也必须验证主链的历史记录。实际上,Rollup 要求验证者在主链上运行完整节点。由于 Rollup 验证者必须同时运行主链节点和 Rollup 节点,因此 Rollup 对验证者的硬件要求增加了。在主链上最低硬件节点无法参与 Rollup。而无法运行主链完整节点的用户也无法运行 Rollup 验证者。实际上,Rollup 提高了用户为全面参与所支付的入门费用,因此不能满足可扩展性的定义。它提供了一种增加可用资源的方式,而无需所有节点运营者购买新硬件。

对于不打算运行完整节点的用户来说,使用 Rollup 会感觉非常类似于今天使用以太坊。类似 Infura 的服务将按需向用户提供状态。钱包将建立依赖于这些集中提供者的方式,就像今天的钱包一样。与今天一样,如果 Rollup 或状态提供服务存在问题,用户始终可以同步完整节点。但是,他们必须支付与主链完整节点一起同步验证者的成本,并等待两者都同步。在特殊情况下,这可能导致用户资金无法访问,直到他们同步节点。用户可以通过信任高质量的状态提供者或购买云节点来计划这种不太可能发生的事件。

4

   

结论

Rollup 提高了一层区块链的吞吐量和功能,但并没有提高其可扩展性。它们通过允许一层中的子集验证节点验证专门的 Rollup 状态来实现这一点。然而,没有免费的午餐。因为它们的终局性必须包括一层的最终化,所以 Rollup 无法比其托管的一层更快地最终化。此外,验证 Rollup 的成本严格高于验证其托管的一层链的成本(因为它必然包括验证该链)。

今天,大多数用户不愿操作完全验证的一层节点,因此我们看到了一个庞大的可信状态提供者生态系统的形成。用户可以选择连接到他们的节点或信任任何数量的提供者。我们可以期待类似的生态系统出现,为选择信任而不是验证的 Rollup 用户提供 Rollup 状态。

我们对 Rollup 感到兴奋,因为它们保留了区块链的有利方面,如保证数据可用性和无需许可的参与,同时允许 Rollup 设计者将验证和安全性定制到应用的需求。Rollup 将能够托管许多目前在以太坊上运行成本过高的应用。

题图: Jievani Weerasinghe on Unsplash



继续滑动看下一个

# Rollup 是什么?| Thought for Today

James Prestwich 加密厨房
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存