本文发表于 2021年 6 月 1 日。1
介绍
我们先来打个比方。
想象一下,我们回到了初中数学课堂上。“残忍” 的初中数学老师给我们每人发了一张卷子,上面列了 100 道数字很大的除法题。我们的任务是解出尽可能多的题。但是,这里面有个陷阱:我们只能将最终的解和每个计算步骤写在一张答题纸上。几分钟后,我们有了一种不祥之感,越想越觉得这个任务荒谬至极。算完几道题之后,这张答题纸就已经满满当当了。
这个噩梦般的故事与 Rollup 有什么关系?
在这个故事里,答题纸就是以太坊区块,算术题就是智能合约交易。以太坊目前非常拥堵。每个区块内要包含的交易太多了。更糟糕的是,绝大多数交易都是计算密集型的,例如闪电贷和通过聚合器路由的交易。随着 DeFi 兴起,简单转账和支付已经成了过去时。
这就是问题的关键所在。就像数学老师要求我们将每个计算步骤都写在一张答题纸上那样,以太坊也必须处理并记录每个事务的每一笔计算。
直到 Rollup 出现。
Rollup 将计算转移到链下,只将最少的事务数据存储在链上。从这个基本意义上来讲,Rollup 就是以太坊的草稿纸。Rollup 负责所有复杂的数据处理,让每个以太坊区块都能容纳(叠卷)成倍多的智能合约事务。
这个比喻不仅直观呈现了 Rollup 旨在解决的问题(“因计算过载而导致的网络拥堵”),还让我们大概了解了 Rollup 解决方案需要做到什么(“将计算转移到链下”)。但是,Rollup 的实际运作方式、呈现形式以及魅力所在都是我们需要深入研究的。
什么是 Rollup?
Rollup 本质上是一条独立的区块链,但是进行了一些修改。和以太坊一样,Rollup 协议也使用 “虚拟机” 来执行智能合约代码。Rollup 的虚拟机独立于以太坊自己的虚拟机(EVM)运行,但是由以太坊上的智能合约管理。因此,这种联系可以让 Rollup 和以太坊之间进行通信。Rollup 负责执行事务并处理数据,以太坊负责接收并存储结果(译者注:其实以太坊还储存 Rollup 事务的数据,不仅只储存结果)。2
从技术层面来说,Rollup 链和传统区块链之间的主要区别在于出块方式。
通常来说,区块链由一个分布式参与者网络(“矿工” 或 “验证者”,具体取决于链的类型)维护。这些参与方通过共识创建区块。简单来说,参与方通过投票决定如何处理一组交易(如何创建下一个区块)。获得多数支持的区块将被永远写到区块链上。
相比之下,Rollup 链不按多数原则运行。监控 Rollup 状态的一方可以将 “断言” 发送至以太坊,来说明交易是如何处理的。重要的是,以太坊将决定是否接受这个断言,无论这个断言是否获得了 Rollup 上多数参与方的支持。3 这通常意味着,在 Rollup 上,实际只有一方负责处理交易和生成区块。4(译者注:这一点也不是绝对的)
等等…… Rollup 是中心化的?
Rollup 之所以能够如此高效地处理交易,一部分原因就在于它在出块方面的中心化特性。但是,这也提出了一个令人担忧的问题:在缺乏多数决共识的情况下,Rollup 如何确保出块的正确性 —— 如果区块创建者作恶怎么办?
由于密码学货币用户已经习惯了基于共识的区块链,这种中心化会令他们感到困惑。确实,如果这篇文章到此结束,我们可能会误以为 Rollup 只是 “由单个参与方复制的数据库”,就像 Avalanche 的联合创始人Kevin Seqniqi 最近在推特上所言。
实际上,我们很快就会明白,与其说人们对 Rollup 的中心化特性的担忧是错误的,不如说是一种逻辑误导。通常情况下,缺乏强大共识机制的中心化区块链确实容易遭到破坏和恶意操控。但是,就 Rollup 解决方案而言,缺乏去中心化并不会影响它们的安全性和完整性。5为了弄清楚背后的原因,我们需要更深入理解 Rollup 的原理。
数据可得性的重要性
回想一下文章开头提到的数学试卷。草稿纸就是我们的救命稻草。只要将计算过程写在草稿纸上,我们就只需在答题纸上写下问题和解。Rollup 就好比是草稿纸,“将智能合约计算转移到链下,只将最少的事务数据存储在链上”。
事实上,后半句话(将事务数据存储在链上)对于 Rollup 的运作方式来说至关重要。就 Rollup 而言,只有计算(数据处理)会被转移到链下。Rollup 所处理的每笔事务的输入数据(即 “调用数据”)仍存储在以太坊上。
将事务数据保存在链上为何如此重要?再拿数学试卷的例子来看,我们最后交给老师的答题纸上只有数学题和解。这样一来,即使我们没有将每个计算步骤写上去,老师也可以检查我们的作业情况。同理,永恒链上数据可得性意味着,Rollup 上的任何一个计算都可由以太坊基础层重复执行(译者注:吹毛求疵来说,这话是不对的。以太坊单笔事务可执行的计算量是有上限的)。
简而言之,Rollup 的链上数据可得性引入了内置审查流程。在将事务永久写入账本之前,以太坊可以再次确认 Rollup 上处理的事务的完整性 —— 就像是美国最高法院的司法审查权。6
局限性优势
Rollup 的主要优势就是其局限性。Rollup 只能将交易发送至基础层,不能强制基础层接受,因为以太坊可以在必要时推翻任何 Rollup 事务。由于存在审查过程,Rollup 事务不具备真正的终局性。
了解了 Rollup 的局限性后,我们回到上文提出的中心化问题。Rollup 的单方出块机制确实存在做恶的可能性。然而,一旦出现这种情况,以太坊会在完成审查流程后拒绝相关交易,并惩罚出块者。7
对于 Optimistic Rollup 和 ZK Rollup 来说,“审查流程” 的具体运作方式不同(详情请参见此处)。然而,无论是哪种 Rollup,审查流程远比以太坊自己处理交易(不依赖于 Rollup)高效得多。
总之,Rollup 系统以 “制衡” 为基础,从而保证以太坊的主权链地位。以太坊的共识是事实的最终仲裁者。请注意,侧链的情况完全不同。侧链不像 Rollup 那样存在审查流程,而是另有一套独立的共识机制来处理交易。侧链可以直接赋予交易终局性,而 Rollup 上的交易要等到以太坊确认后才能获得终局性。因此,侧链需要更多信任假设,因为它们无法从以太坊的去中心化安全性中受益。事实上,我认为侧链更像是兼容 EVM 的 Layer 1 ,而非 Rollup。
结论
总的来说:Rollup 将计算转移到链下,从而释放更多链上空间。链上数据可得性很重要,因为它使得以太坊可以复核 Rollup 交易的完整性。反之,审查流程可以检查 Rollup 出块,免去对共识机制的需求。
Rollup 最终可以让以太坊鱼和熊掌兼得:在释放成倍多链上空间的同时不破坏网络的去中心化安全性。至少在我看来,这正是我们所期望的优雅的可扩展性方案。
感谢 t11s 和 Hasu 富有见地的评论和建议。
脚注
注:我最近开始在 Deribit Insights 上连载关于 Rollup 的系列文章。其中,Part 1 探索了 ZK Rollup 和 Optimistic Rollup 之间的差异。很多读者希望我能推荐一篇关于 Rollup 的非技术入门文章,因为我的文章需要读者有一定的背景知识。实际上,确实有一些科普性文章会带来很大帮助(参见文章 1、2、3(中译本见 1、2、3))。但是,我还没有看到一篇没有任何技术术语的针对初学者的全面介绍。我写这篇文章的目的就是为了填补这一空缺。顺便一提,这种联系是通过某个叫作 “状态根” 的东西在链上维护的(状态根追踪 Rollup 的内部状态,包括账户余额、事务和代码等等)。关于更多详细信息,请阅读 Vitalik 的介绍。事实上,在 Optimistic Rollup 中,即使其他网络参与者都反对,出块一方也可以(正确!)处理事务。这就是 Optimistic Rollup 的 1/n 诚实参与者假设(如果你想要深入了解这部分内容,请阅读这篇文章的 “Secuirty Considerations” 一节)。Optimistic Rollup 和 ZK Rollup 对出块者的职责要求不同。如果你想要了解更多相关内容,请阅读这篇文章的 “Secuirty Considerations” 一节。Haseeb Qureshi 有一篇关于去中心化的文章很发人深省。Qureshi 的论点是,去中心化本身不一定就是好的,中心化本身也不一定就是坏的。虽然 Qureshi 在这篇文章中没有讨论 Rollup,他的论据有很高的相关性。在 1803 年的马伯利诉麦迪逊案中,马歇尔法院判定最高法院有权推翻它认为违宪的国会立法,有效地赋予了最高法院对所有立法事项的最终审查权。事实上,ZK Rollup 通过密码学方式防止其出块者在处理事务时作恶,因为相关事务的零知识证明本身是无效的。