Rollup是什么

Catalogue
  1. 1. 状态通道和Plasma
  2. 2. Rollup 是什么?
  3. 3. Optimistic Rollup
    1. 3.1. Optimistic Rollup特点
    2. 3.2. Optimistic Rollup运作方式
  4. 4. 什么是数据可用性?
  5. 5. 参考资料

2020 年 9 月,以太坊的 gas 价格突破历史新高,超过 477 Gwei,或许这预示着离 gas 价格涨至 Twei 的日子不远了。2017 年的 ICO 热潮以来,以太坊网络上还没有如此拥堵过,可以说现在的拥堵程度更高了。区块 gas 上限也创下了历史新高 1250 万。交易量达到了 2017 年的峰值的水平,区块大小也达到了历史最高水平。

目前,Eth2.0 的研究主要聚焦于底层的 PoS 和分片机制上。然而,Eth2.0 的计算可扩展性(即,在分片中通过智能合约来完成状态执行)要等到 phase 2 才能实现,目前预计要等到 2021 年以后。为了解决当前的拥堵,产生了很多Layer 2 解决方案,即在 Layer 2 上处理交易,只在必要时使用 Layer 1。这类解决方案包括状态通道、侧链和 Plasma 等。但是 Rollup 方案最近非常火爆,获得了很大进展,主要有两类 Rollup 方案:ZK Rollups 和 Optimistic Rollups。

状态通道和Plasma

构建在以太坊上且无需对底层 Layer 1 协议进行任何修改的可扩展性方案被称为 Layer 2 方案。这些方案无需与以太坊网络交互即可处理交易,并通过智能合约将其安全性锚定在以太坊的 Layer 1 上。Layer 2 方案之所以具有吸引力,是因为以太坊上可以运行多个类似方案,仅供那些可以感知 Layer 2 的应用使用,无需每个人都升级底层基础设施(这是一项风险极高的大工程)。虽然 Layer 2 并不一定会提供像 Layer 1 那样的安全性和确定性,但是相比 Layer 1 来说,它可以提高吞吐量,降低成本,并改善用户体验。对于某些应用来说,Layer 2 就够了。目前,最具潜力的 Layer 2 解决方案是状态通道和 Plasma。

状态通道最适合那些参与人数确定,并且需要在一段时间内多次交换状态更新的应用;另外,它也需要极强的可用性保证,来满足 “挑战期” 的安全需要。Connext Network 就是使用状态通道来帮助 dApp 实现可扩展性的典型例子。

Plasma 是 2017 年 8 月由 Vitalik Buterin 和 Joseph Poon 提出的。Plasma 是一个可扩展性框架,可以通过根链上的智能合约将资产转入/转出子链,所有交易执行都发生在子链上,状态承诺(通过根据区块中所有状态更新创建的默克尔根)会发布到根链上,等到之后退出根链时可以在欺诈证明中使用。Plasma 有多种变体方案,包括 Minimum Viable Plasma、More Viable Plasma、Cash、Debit 和 Prime。OMG Network 的 More Viable Plasma 是最近出现的 Plasma 项目,已经获得市场采用。

缺点:状态通道的最大缺点是其活性假设。用户或其受委托方需要一直监控 Layer 1,以便处理各种挑战。Plasma 不仅继承了这种活性假设,还引入了数据可用性假设,即,用户需要相信运营者会提供所有交易数据,以便在需要时使用这些数据来验证交易的正确性。如果没有数据可用性,在最糟糕的情况下,用户退出 Plasma 链时可能会引发大规模问题。状态通道和 Plasma 都不支持智能合约,这严重限制了需要具备 EVM 兼容性的应用。

Rollup 不需要引入上述两个限制性假设。这两个假设会在很多情况下造成不便。对于大部分应用来说,Rollup 相比状态通道和 Plasma 更有前景。接下来就让我们介绍一下 Rollup 的定义,以及它不需要像状态通道和 Plasma 那样引入限制性假设的原因。

Rollup 是什么?

Rollup 与 Plasma 非常相似,只有一处较大的差别,避免了数据可用性假设,即,所有 Layer 2 交易都会“汇总”到一个交易的调用数据(calldata)内,calldata是以太坊交易存储数据参数的只读区域,然后打包进区块提交至 Layer 1。鉴于调用数据在成本上比 Layer 1storage(合约存储)低得多,Rollup 方案可以让任何人在任何时候都能从 Layer 1 上获取 Layer 2 上的交易数据(不像 Plasma 方案那样只是默克尔根),用来验证状态转换。因此,Layer 2 数据一旦提交,即可从 Layer 1 上获得。这一特性可以免去活性假设和数据可用性假设的要求,让 Rollup 相比状态通道和 Plasma 更具优势。根据状态转换的验证方式,我们可以将 Rollup 分为两类:ZK Rollup 和 Optimistic Rollup。

ZK Rollup(ZKR):在 ZKR 中,运营者必须为 Layer 2 上的每个状态转换生成一个 zk-SNARK 有效性证明,并将这些有效性证明提交至 Layer 1 上的 Rollup 合约。Rollup 合约会验证这些从旧的默克尔根到新的默克尔根的状态转换的证明是否有效。虽然使用了新的元件,但是这些保障从本质上来说是密码学的。

Optimistic Rollup(OR):在 OR 中,运营者将新的默克尔根与交易数据一起提交至 Layer 1 上的 Rollup 合约。每个人都会假设这是有效的状态转换(不会像 ZKR 方案中那样进行验证),乐观地向前推进。因为,如果状态证明无效,就会有参与者使用欺诈证明来挑战它。这些保障从本质上来说是密码学经济的,因为代币奖励以及质押和罚没机制会激励运营者保持诚实。

根据深层次的对比分析可知,ZKR 更适合那些敲定时间较短(大约 1 ~ 20 分钟)的代币转账,但是不支持通用型应用所需的兼容 EVM 的智能合约。相比之下,OR 更适合那些需要兼容 EVM 的智能合约的应用,但是在默认情况下,敲定时间较长(大约 1~2 周),因为需要等待欺诈证明挑战期结束。但是,有一些技术可以提供经济保障,以缩短 OR 的敲定时间和提款时间,如让流动性提供者通过原子交换来提供提款服务,并收取少量费用,就可以轻松解决延迟问题。

Optimistic Rollup

增强区块链可扩展性的最早举措之一是侧链。侧链是与父链共同运行的区块链,但具备不同的特点:出块时间更短、区块大小更大、智能合约的表达性更强等。然而,普通的侧链有个致命的缺点:如果一条侧链上的绝大多数矿工/验证者都是不诚实的,用户资金就会被盗。

2019 年 6 月,ethresear上的《最小可行合并共识》文首次阐述了这一技术。从那时起,以太坊社区就开始大力支持 Optimistic Rollup,将其作为以太坊式智能合约执行的可扩展性方案,无需等到 Serenity Phase 2。

《最小可行合并共识》:https://ethresear.ch/t/minimal-viable-merged-consensus/5617

Optimistic Rollup特点

它具备很多理想特点。在所有区块链可扩展性技术中,它的特点都是无可比拟的。一个设计合理的 OR 系统将具备以下特点:

  • 免信任。不同于传统的侧链技术,OR 具有免信任性(或者更专业一点的说法是,具备信任最小化的特点)。你随时都能从 Rollup 上取出你的资金,无需信任 OR 上的绝大多数区块生产者都是诚实的。
  • 免许可。不同于 Plasma,OR 具有免许可性。任何人都可以成为 OR 上的区块生产者,因为 rollup 上的所有区块数据都发布在以太坊上,可以从以太坊上获取。如何选出下一个 领导者 是具体的实现问题,而非根本限制。
  • 免托管。如上文所述,由于 OR 兼具免信任性和免许可性,你随时都可以取出你的资金,而且没人可以阻止你。因此,OR 具备免托管性。
  • 表达性强。不同于 ZK rollup,OR(从理论和实践来说)具备较高的表达性。无论是类似比特币的 UTXO 付款,还是成熟的可兼容 EVM 的执行,OR 都能处理。
  • 开放参与。不同于支付通道,OR 支持智能合约,而且像 Uniswap 那样对所有人开放。
  • 资本效率高。不同于支付通道,OR 不要求用户提前锁定资金。
  • 抗链上拥堵。不同于支付通道和 Plasma,OR 可以抵御链上拥堵,因为 OR 的欺诈证明是在区块层面上的,而非像支付通道那样的关闭机制,或 Plasma 那样的退出机制。
  • 无需新的密码学。不同于 ZK rollup,OR 不需要任何新的密码学。
  • 快速(非即时)终局性。不同于 ZK rollup,OR 不需要生成证明,因此 OR 区块可以立即发布到以太坊上。由于有效的 OR 区块无法回滚,一旦这些区块被发布到以太坊上,就能够获得像以太坊那样的最终确定性。

Optimistic Rollup运作方式

首先,OR 是作为信任最小化的双向锚定侧链,换言之,即使侧链上的每个验证者都不诚实,也不会出现资金被盗的情况,OR 在运作方式上异常简单:

  1. 聚合者将 rollup 上的交易收集起来,打包进 rollup 区块,并将该 rollup 区块连同保证金(我们很快就会解释为什么需要保证金)一起发送到以太坊(或另一条类似以太坊的区块链,上面运行着具有大量状态的智能合约)上的智能合约中。这个 rollup 区块不会被翻译或执行——智能合约只记录区块哈希,并追踪所有 rollup 区块的哈希。rollup 区块本身不存储在智能合约内,但是所有人都可以在以太坊的历史交易中找到它们。
  2. rollup 区块包含一个状态根,即,该 rollup 区块的状态树的根。如果该状态根是无效的,则任何人都可以在挑战期内使用欺诈证明来证明它是无效的。这可能是因为这个 rollup 区块中有一笔交易是无效的,或者因为状态根是无效的。如果一个 rollup 区块被证明是无效的,合约就会将 rollup 链回滚,这个无效区块后面的所有的 rollup 区块都会变成孤块。一旦欺诈证明成功,保证金中的一部分会支付给证明者,剩余部分则销毁。
  3. 如果直到挑战期结束都没有人提交欺诈证明,合约会敲定 rollup 区块,允许聚合者取回保证金。用户将款项从 rollup 侧链上取回到主链上时,需要在 rollup 链上发起取款请求,只有当合约敲定该 rollup 区块后,款项才能取回。

OR 的吞吐量以以太坊的数据可得性吞吐量为上限。在这种情况下,我们可以将 OR 视为伪分片。多个 OR 可以在同一个数据可得性层上并行运行。

什么是数据可用性?

英文是data availability,可翻译为数据可用性或数据可得性。“数据可得性”和“数据可得性问题”指的是一些区块链扩容方案所面临一个问题。具体来说,就是当新的区块创建时,节点如何确保该区块中的所有数据都已发布到网络上?困难之处在于,如果区块生产者没有公布区块中的所有数据,就没人能发现该区块中是否隐藏了恶意交易。

在本文中,我将深入探讨数据可得性问题的重要性,以及相关解决方案。

参考资料