比较以太坊二层扩容方案 Optimistic Rollup 生态 9 个项目的方法和技术设计决策以及其中的各种取舍。

相关阅读:《以太坊二层扩容之路:Plasma 衰落与 Rollup 崛起

原文标题:《以太坊重要扩容方案 : Optimistic Rollup 现状报告》(The State of Optimistic Rollup)
撰文:Daniel Goldman,自由软件工程师、技术顾问、作家
翻译:Emma、Snow Lu
校对:Samuel

如果不是因为这篇研究报告是受 MolochDAO 之托而作,我想 DAOSquare 应该不会翻译如此「技术性」的学术论文(至少现阶段不会)。不过,以太坊的扩展性的确是一个重要且热门的话题,现有的解决方案包括 Optimistic Rollup、ZK Rollup,而 Optimistic Rollup 则是一个提出时间并不长的新兴方案,它被认为是最有前途的扩容方案。那么时至今日它的发展情况如何?前景又如何?本文作者 Daniel Goldman 通过大量的调研完成了此份报告,现在,DAOSquare 将这份成果分享给大家,不过由于篇幅过于「宏大」,我们将分三期奉上,本篇为第一、二部分。


以太坊新兴 Optimistic Rollup 生态系统的技术概览

以太坊重要扩容方案 : Optimistic Rollup 现状报告 (上)Optimistic Rollerball (Daniel Goldman original, 2020)

以下报告由 MolochDAO 授权制作,John Adler 提供相关意见 / 复审;但此篇所有观点均代表本人。此外,项目评估仅为该报告发稿时的状态简况(2020 年 2 月)。事事均在变化,不做过度承诺。

笼罩以太坊扩容社区的阴霾--Optimsitc Rollup。

2019 下半年,Optimistic Rollups (ORU 或 Optiroll) 作为以太坊 Layer 2 扩容协议迅速兴起大热。本文旨在概述新兴 ORU 的开发生态系统至发稿时的简况(2020 年 2 月)。我们先将 ORU 理论属性放于 Layer 2 设计空间大背景下,之后比较不同项目的方法和技术设计决策以及其中的各种取舍。9 个项目包括:

  • Fuel Labs
  • ANON
  • Whitehat, Cellani, Lim ( hereby 「WCL」)
  • Pinkiebell
  • Offchain Labs
  • Interstate Network
  • Optimism
  • IDEX
  • Celer

点击此处回顾他们的差异性。最后,我们将深入探讨一些定性问题,这些问题将围绕以上项目如何在空间中发挥自己的作用。

背景 & 理论

尽管美名在外,但开放且未授权的区块链也有很多问题:网络中的所有完整节点必须可见,并验证系统处理的每笔交易;超低效率(相较中心化数字支付系统而言)是加密货币备受争论的扩容挑战的核心。

Layer 2 协议是减轻此类负担的一类方法。将所有的节点全部验证所有交易,变为仅由感兴趣的各方(例如那些希望获得自己资金的人)对交易的某些子集进行本地验证,以此(以某种方式,形状或形式)来转移这种负担 。重要的是,他们保留基本层无需信任的安全模型,同时无需依赖用户自己运行的软件以外的资源。

数据可用性:解决

在以太坊 Layer 2 研发的早期阶段,研发人员计划在隐含假设下运作,即基础层「减轻验证负担」就是完全将(某些)交易数据隔离在区块链之外。(请参阅 Josh Stark 2018 年初的文章 Making Sense of Ethereum’s Layer 2 以了解当时的思维方式)。

加密货币协议有其内在的经济属性,可以激励区块生产者及时地、广泛地共享区块(除非是自私挖矿等边缘情况 selfish-mining edge cases);区块链基础层有时被称为「数据可用性引擎」。确保数据是(完全)公开的,可以保证其能够进行验证,并且无效交易几乎无法通过。

因此,在 Layer 2 的场景中,如果要将数据完全隔离在链外,将不再能保证我们有这种数据可用性;因为那些担心数据有效性的人可能会隐瞒数据。因此,我们必须弄清楚,在这种极端情况下,如何以某种方式确保不会发生无效的状态更新。对于 Layer 2 系统,数据隐瞒问题始终是最难最坏的情况;因为最糟糕的就是在没有信息的情况下去探寻事实。

如果我们的定义足够宽松,针对该数据隐瞒问题的所有解决方案都可以分为两大类:状态通道和 Plasma (channels and Plasma)。如果两方在一个通道中,双方一致同意后,链下数据的更新才真正有效。因此,如果 Alice 选择保留 Bob 的数据,Alice 将处于最新状态;保留数据对她没有好处。相比之下,Plasma 则没有双方一致同意的这一要求。这直接导致在 Plasma 中,如果用户没有任何直接证据,则可能发生无效更新。即使在这种情况下,Plasma 仍可以保证用户持有必要的链下数据,在交互质疑期中证明并确保其资产所有权。

就实际结果而言,状态通道已成为第一个 Layer 2 构造。人们很容易理解,且状态通道(可能)确实解决了一些基础的研究挑战,我们的确也看到状态通道在比特币和以太坊上的应用。状态通道具有一些实用属性,例如即时交易,这些属性非常契合一些特定应用程序的需求。尽管是较通用的扩容方案,但在某种程度上仍受限制。从本质上讲,通道之间是彼此独立的,且免信任的连接将导致资本效率低下,及 / 或受制于可用的流动路径。(我之前在 Bitcoin’s Lightning Network 发表了相关限制以及解决策略。)

Plasma 有望提供一种用途更广,侧链式扩容方案,使参与者之间可以更轻松地进行信息交互,但是它的发展路程却更艰难。有关 Plasma 技术挑战的细节不在本文讨论范围之内。但是,(非常)简单来说,不能保证数据可用性的这种特质,让很多特性难以立刻保留,例如:支持任意计价支付,用户的验证 / 存储要求最小化,避免大批量退出方案,以及支持智能合约逻辑 。虽然可以缓解这些问题,但是解决一个障碍的代价往往是加剧另一个障碍。简而言之,很难做到完全正确,即使这些构造足够可行,其复杂性也会让实践变得困难而缓慢。(我已在此处及此处发表分析了 Plasma Cash 及其变体的合理进展及其带来的挑战。

Plasma 的问题让甚至一些人认为其会消失(declare its demise)。即使有人认为这种说法还为时过早(例如我),但是毫无疑问,Plasma 比预期设想的更加困难复杂,而且传输结果的空间速度比最初希望的要慢。随着 Plasma 的停滞,以太坊社区渴望类似非监管下的、具有侧链特性的事物。此时,就研究和实施状态而言,Optimistic Rollup 出现了。

数据可用性: 让步

我们可以在各种先前的提案中发现目前 Optimistic Rollup 的构造痕迹,比如 Shadowchains, Coinwitness, bulk validation with ZK-SNARKS (现在称之为 ZK Rollup), 以及 2015 年初的一场关于 Arbitrum 的学生演讲等。

就目前了解而言,John Adler 和 Mikerah Quintyne-Collins (又称「「Bad Crypto Bitch 」)将协议基础称为「合并共识 Merged Consensus」。先前的 Plasma Group 团队(现为 Optimism,下文介绍)在一篇博客文章中描述了类似原理,并在 Optimistic Layer 2 游戏语义分析中将其定为框架,命名为 Optimistic Rollup (无论出于何种原因),并最终确定。

Optimictic Rollup 采用前一段中所述的框架并把它翻转过来;ORU 并不打算在数据隐瞒的情况下保留非监管性,而是采取了一种更直接的方法,即直接要求将交易数据发布在链上,更具体地说,要求将足够的数据发布在链上,以便任何运行以太坊节点的人都可以重建 ORU 的状态。扩容的好处在于,Layer 1 仅需发现数据并将其 Merkle 树化为区块根,无需执行任何操作;(理想情况下)计算仅在 Layer 2 执行。因此,交易数据作为呼叫数据发布在链上,并且不存储在状态中;因为状态容量增长和计算成本(可能)是以太坊扩容的核心瓶颈,这具有不小的增长空间。

与 Plasma 一样,基础层无法直接验证交易就意味着会有一些无效交易。在 ORU 下,任何当事方都将见证无效交易的更新,然后通过欺诈证据向基础层展示欺诈证明,欺诈证明将还原欺诈性区块以及及后续的区块更新。一旦过了足够的时间而没有提交欺诈证明,就可以确定并汇总区块,从这些区块中启动的提款就可以完成。为了抑制故意发布无效区块的行为对社区的恶意破坏,区块提交人会发布一个保证金,如果欺诈证明有效,将大幅削减保证金。这种防欺诈处理的精确方式是任何特定 ORU 结构的核心。

与 Plasma 相比,ORU 有一个不可避免的根本性缺点,那就是它的扩容性相对较低。假设链上数据与 ORU 块中的数据成正比,则 ORU 构造会受到基础层最大数据量的限制。不过在其他方面 ORU 也有很多益处,包括:

  • 更轻松 / 更广泛地支持智能合约
  • 更容易地支持任意付款面额
  • 无需许可的区块生产
  • 更简单的博弈退出机制
  • 相对简单的操作

正如我们预料,即使是上述因素也需要在不同的 ORU 结构中相互权衡。(有关 ORU 背后的更多信息,请参阅 John Adler 的 「The Why’s of Optimistic Rollup」。)

Projects Overview 项目概览

以太坊重要扩容方案 : Optimistic Rollup 现状报告 (上)

本报告采访了 9 个使用 ORU 设计模式的项目,其中一个项目选择在发布时保持伪匿名状态(以下称为「 ANON」)。

仅考虑 Optimistic Rollup 范围内的项目,也就是说,它们必须都是 「Optimistic」,包括某种假设,即「假设有效,除非或者直到提交欺诈证明」(即,不是 ZK-rollup)并包括「Rollup」,即,链上发布了足够的数据,任何观察者都可以重建状态并检测无效性(即,不是 Plasma)。大多数所讨论的大多数项目都严格符合这些参数,唯一的例外是 IDEX 2.0,其详细信息将在下面讨论。基于 Plasma 或与 Plasma 相邻的构建上工作的其他各种项目,都属于研究 ORU 的初期阶段,包括 Matic,LeapDAO 和 Cryptoeconomics Lab。

智能合约支持和欺诈证明互动性

ORU 项目之间的核心区别在于它们对智能合约脚本的支持程度,以及它们所需要的验证和欺诈证明的性质。在本次调研的 9 个项目中,有 5 个项目在其 Rollup 中实现了完整的以太坊虚拟机功能,其中 rollup 侧链具有 Solidity 智能合约支持,其支持程度(大致)与以太坊基础层的智能合约支持程度相当,而其余项目则更偏向于支持更有限的、受限的功能。

广义上讲,除了智能合约功能本身之外,支持完整的 EVM 能够保证 rollup 和主链之间的技术一致性,有望与基础架构工具更轻松地集成,并且让开发人员更容易过渡,他们已习惯在 Layer1 上使用 Solidity 编译的智能合约。相反,那些更偏向于支持更有限的、受限的功能项目具有以下优点:成本更低的(或多或少)欺诈证明,验证更容易,可以针对特定用户直接实现优化以及总体上的简化。

完整的 EVM: Layer 2 虚拟机

为了使 Layer 2 智能合约计算保持无需信任,必须有一个备用方案,即以某种形式在 Layer 1 执行这种计算。由此可见,ORU 支持完整的 EVM,Layer 2 需要自己的虚拟机,该虚拟机可在 EVM 基本层中执行,为此高性能的创建实现并非易事。简而言之,EVM 的设计初衷并非旨在自身运行。您可以从 EIP 中了解到其中的一些挑战,它也讨论了修改 EVM 以直接合并此功能的可能性,以及 Kelvin Fitcher 在 Plamsa 中对这一问题的概述。

因此,所有五个完整的 EVM 项目都为 Layer 2 执行创建了自己的 EVM 修正版本。为了确保欺诈证明的可靠性和可预测性,VMs 的执行必须是确定性的;即,在证明时必须能够准确再现最初发现欺诈的情况。 因此,非确定性操作必须完全修改或删除,例如,检查区块高度,难度和时间戳。同样,用于合约创建或销毁的操作码也需要删除,因为这种逻辑是特殊的。因此,在部署到 ORU 链之前,ORU 上 Layer 1 的合约可能需要对 Solidity 代码进行一些小的修改。

欺诈证明

所有完整的 EVM ORUs 在如何促进欺诈证明方面都具有一些基本的共性:定期排序并提交 ORU 链的状态,计算操作的哈希值也是如此,包括执行状态转换。(在所有实践中,生成和验证 state-root 的提交责任都落在了运营商身上,而不是用户身上)。欺诈证明在某种程度上使用了这些数据来表明,所提交的步骤实际上并未正确地将初始状态转换为最终状态。

完整的 EVM 实践中主要区别在于它们处理这些欺诈证明的交互程度。 ORU 本质上必须包含足够的呼叫数据,这样可以立刻发现欺诈行为,并最终得到主链的共识。但是,执行此欺诈证明的过程因构造而异。

在单轮(有时,会被令人困惑地称之为「非交互式」)欺诈证明方案中,欺诈总是可以在单笔交易中证明,也可以在单方的多笔交易中证明。这样做的好处是可以立即「解决争议」,没有麻烦的载体,因此不需要欺诈证明人的保证金,而且操作简单。在多轮欺诈证明中,欺诈是显而易见的,但是欺诈证明者和区块生产者之间需要几个交互步骤。这样做的好处是 Gas 成本更低(在某些情况下更低),链上数据成本也可能更低。

单轮欺诈证明

Nutberry,Optimism 和 Celer 的 ORU 都支持单轮欺诈证明。这就要求每笔交易都必须提交到序列化的后状态根(post-state root)。在 Optimism 的模型中,Celer 也直接受到影响,如果检测到欺诈,欺诈证明者会发布交易的初始状态和最终状态的时间(slot),并让主链完全执行交易。(此流程与用于验证以太坊区块的无状态客户 stateless client 模型非常相似)。理想情况下,交易只需要最少的状态时间(slot)即可证明欺诈。但是原则上,交易可能需要读取大量状态数据。如果欺诈证明需要大量数据和 / 或计算,很难将其放在主链区块上,那么 Optimism 可将证明拆分为多个交易(请注意,这些交易仍由欺诈证明者提交。因此,从某种意义上来说,此额外步骤不符合「交互」的条件。)

Nutberry 的方法与此类似,但使用「门控计算(gated computing)」模型执行合约。智能合约被修补以包含检查点(checkpoint)。 在此模型中,交易会提交多个更细化的中间状态根,可能需要更多数据,但在较小的数据块中执行欺诈证明。

多轮欺诈证明

证明者需要与欺诈证明者之间进行多个步骤的交互才能决定多轮欺诈证明是否属实。按照 ORU 的定义,关键是要发布足够的数据,让任何一个诚实的参与者或观察者都可以从一开始就确定哪一方在说真话,从而预测了质疑期的结果。

在 Interstate One 的例子中,交易包含状态根,且发布时提交 Merkle 根至对应执行的步骤,而不是提交至步骤本身。 从某种意义上说,这种提交是一种二级「optimistic」的假设。 只有验证者提出问题时,操作员才会将 EVM 消息栈(stack)张贴在呼叫数据中,验证者可以使用该信息简要证明欺诈。 在最坏的情况下,此过程总共进行 3 轮,并且要求呼叫数据与所涉及的交易中的步骤数量成线性关系(与单轮欺诈证明相比,在所有情况下都需要线性数据)。

在互动性增强方面最先进的是 Offchain Labs 的 Arbitrum Rollup,可以最大程度地减少链上的足迹。 使用 Arbitrum,只有区块,而非交易,需要提交状态根。 与 Interstate 一样,这些也包括了提交哈希值的计算。 如果双方提出了相互矛盾的主张,则他们将进入争端;在该争端中,他们会交互式地找出无效执行的单个计算步骤(如果欺诈,原则上必须至少存在一个无效步骤)。

他们通过在栈(stack)中进行有效的二进制搜索直到欺诈已隔离:即,欺诈证明者通过栈(stack),在中途的一个点请求状态哈希,然后将栈(stack)二等分并重复已知无效的一半。 此过程将不断重复,直到只剩下一个无效的操作,然后在链上执行该操作。 因此,在最坏的情况下,此过程需要(n)个日志步骤(其中 n 是操作数),并且需要最少的 Layer 1 计算。

这种方法的一个令人惊讶的特性是,尽管争议正在进行,但无需暂停系统的其余部分。用户和区块生产者可以继续照常进行交易。可以将「争议」视为可能性树中的分枝。诚实的用户可以验证且确定哪一方是诚实的,并在此基础上继续发展,了解争端最终将以何种方式解决。因此,争议的持续时间不会让系统的其余部分延迟。有关更多信息,请参见 How Arbitrum Rollup Works。

应用特定的 Rollups

ORU 项目支持更受限制的功能,同时寻求围绕更特定的案例进行优化:通证支付、去中心化交易、私人支付和大规模迁移。这四个协议都各不相同,也将分别进行探讨。

Fuel (「区块链上的比特币」)

Fuel 正在实施以支付为中心的、基于 UTXO 的 ORU 侧链,其数据模型类似于比特币。 这种设计需要平衡智能合约的一些功能,以利于实现简便性以及更便宜的验证和欺诈证明。 实际上,关于 Fuel 与完整 EVM ORU 的权衡,许多想法与比特币与和以太坊的权衡相似。

与比特币一样,Fuel 链的状态被隐式定义为所有未花费的交易输出的集合;不需要状态根序列化。 支持简洁欺诈证明的模型与 Greg Maxwell 在 2014 年 Greg Maxwell in 2014 最初为比特币提出的模型相似(并在 2019 年由 John Adler 单独再次发现 and independently rediscovered by John Adler in 2019); 交易与比特币交易非常相似,但是包含一个额外的数据区,用于指定每个输入的处理位置。 有了这个数据区,就可以在一个回合中用一个或两个包含证明(inclusion proofs)来证明所有欺诈案件(双重支付攻击,虚假投入等)。 除了低成本的欺诈证明之外,UTXO 模型还有望实现更高性能的验证-更好的状态访问模式和并行空间(与同步完成的验证 EVM 执行相比)。

Fuel 将使用一种模型来支持 ERC20 和 ERC721 传输,该模型可以反映比特币彩色硬币提案(colored coins proposal for Bitcoin)。 它还支持某些特殊的交易类型,包括 HTLCs 的原子互换。 该计划最终支持一种更强大的无状态谓语脚本语言,其功能类似于比特币脚本。 (有关更多信息,请参见此处)。

ANON 的 ZK-Optimistic-Rollup (「区块链上的 ZCash」)

另一个独特的 ORU 项目是 ANON 的 ZK-Optistic-Rollup,它支持 E RC-20 和 ERC-721 支付交易,并具有与 ZCash 隐私地址相同的隐私保证。该设计与 ZCash 本身有很多共同点(有关 ZCash primer,请参见此处);资金索赔采用 UTXO 式的「签发」形式;支付产生的新签发和创建的「废止通知(nullifier)」,记录该签发是用于防止未来重复支出。交易也包括 ZK-SNARK,可证明其满足所有有效性条件,且没有向观察者实际透露任何细节。

为了维护简洁的欺诈证明,ZK-ORU 拥有 ZCash 中没有的功能:废止通知存储在 Sparse Merkle 树中,并随每个新的 ORU 块进行更新。这样可以轻松证明成员资格(已提交的)和非成员资格(未提交的)。与所有其他 ORU 一样,计算被乐观地延迟了,包括 SNARKS 本身的验证。所有的欺诈情况,包括无效的 SNARK,只需一步就能证明。

注意,生成 SNARK 的重任落在用户身上;ANON 预计一个客户会花费 10-30 秒生成 SNARK。

(还要注意,尽管名称和组成部分相似,但 ZK-Optimistic-Rollup 实际上与 ZK-Rollup 有所不同,后者不一定提供隐私保护,不使用欺诈证明,并且使用运营商生成的 SNARK 证明其有效性。欢迎使用加密货币。)

WCL 的 ORU Hub

该 ORU 操作旨在成为 rollup 链之间的批交易标准,是让用户自愿将其资金迁移到升级合约的一种手段。

该操作本身是一条简单的,仅基于帐户支付的链,与 Fuel 一样,它提供廉价的欺诈证明和数据验证。这种构造的主要目的是建立一种标准架构,以便能够直接在不同链之间进行转移,即,不必从一条链中取出款后再重新存到到另一条链上。这可以通过支持批量存款和建立单向链间的交叉连接实现。 只要目的链上的验证者发现出发链上的欺诈行为,就可以将付款视为最终付款,而不会产生任何额外的延迟。这与围绕 ETH 2.0 交叉分片通信的研究 ETH 2.0 cross shard communication 逻辑相类似。

虽然主要的计划用例是可升级性,但此机制潜在的其他用例是在单独的、不同的、实时 rollup 链之间迁移,我们需要对此进行更多研究。关于 rollup 链间迁移的精确协议,以及需要确认的规范链,更多详细信息尚未公开,日后会在此处附上链接。

IDEX 2.0

IDEX 的独特之处在于,他们将 ORU 作为已经投入生产的项目的最佳扩容版本,IDEX 合约当前已在主网运行,IDEX 合约使用的状态模块(state)比任何以太坊其他应用程序都要多。

IDEX 2.0 的 rollup 链支持登记订单式去中心化交易功能,并且围绕此特定用例构建而成。 该链负责执行订单,维护用户余额,允许设置发生其他功能,例如更高级的订单类型,自动交易引擎等。

IDEX 的 ORU 中的验证者必须有 IDEX 通证。验证者提交收据证明已发布的区块,并根据他们在有效区块上的签名和有效欺诈证明的签发而受到奖励和 / 或惩罚(如果他们选择接受全部的「风险」验证)。奖励是使用一部分的交易费用和自己的通证支付的(加密经济学模型的分析不在本文范围内;有关更多信息,请参阅 IDEX 2.0 白皮书 DEX 2.0 whitepaper)。

在协议中,区块生产者仅上传区块的 Merkle 根作为初始投入,仅在质疑时将区块内容发布到呼叫数据中。由于无法在链上保证 rollup 区块数据的可用性,因此,这并不完全符合上述 「Optimistic Rollup」 的定义; 实际上,他们将其称为 「优化的 Optimizied Rollup Optimized Optimistic Rollup」。 一旦发布呼叫数据后,就可以通过一两个附加步骤来证明欺诈行为。

来源链接:medium.com