原文作者:Mustafa Al-Bassam, Ertem Nusret Tas, Nima Vaziri
大多数使用 Celestia 作为其共识和数据可用性层的应用程序都将托管在 Rollup 上。作为一种新的第 2 层解决方案,最初提出以提高交易吞吐量,Rollup 可能是几乎所有区块链应用程序的未来家园,无论是使用 Celestia、以太坊还是其他平台来实现共识和数据可用性。
在这篇文章中,我们将讨论什么是 Rollup,它们目前如何在以太坊上运行以及它们将如何在 Celestia 上运行。
在当前的以太坊 Rollup 中,以太坊链被奉为 Rollup 的结算层,使 Rollup 有效地成为以太坊的“婴儿链”,其中 Rollup 链由以太坊上的智能合约定义。这也可以与 Polkadot 平行链模型相媲美,其中中继链被奉为平行链的结算层。
然而在 Celestia 中,我们设想了一种新型的 Rollup:主权 Rollup 链。这些是独立的主权链,其中 Rollup 链由 Rollup 子网络本身定义,类似于独立的 L1,并且可以选择与其他链或结算层一起拥有受信任或信任最小化的桥梁。
目录
什么是 Rollup?
以太坊上的 Rollup(结算层)
Celestia(主权)上的 Rollup
主权交叉 Rollup 通信
为什么是主权的?
什么是 Rollup?
Rollup 是将其区块发布到另一个区块链的区块链,并继承该区块链的共识和数据可用性(称为一个“共识和数据可用性层”)。
典型的 Rollup 由三个主要方维护:排序器(sequencers)、Rollup 完整节点、Rollup 轻客户端。所有 Rollup 都有一个状态,例如,可能是 Rollup 用户在某个时间点的所有帐户地址和代币余额。
Sequencers 是接收来自用户的新 Rollup 交易的节点,将交易组合成一个区块,并将该区块发布到共识和数据可用性层。一个区块由两部分组成:区块头和实际的交易数据。除其他外,区块头包含对链状态的加密承诺——通常是 Merkle 根。
Rollup 完整节点是下载所有 Rollup 区块头和交易数据、处理和验证所有交易的节点,以计算 Rollup 的状态并检查所有交易是否有效。如果全节点在汇总区块中遇到无效事务,它会拒绝并忽略该区块。因此,Sequencers 无法创建具有无效交易的有效区块,因为节点会从他们的视野中拒绝它们。
Rollup 轻客户端只下载 rollup 区块头,不下载和处理任何交易数据,因此无法计算最新状态或验证 rollup 本身的状态有效性。相反,他们可以从最新的 Rollup 区块头中了解最新的状态承诺,并向 Rollup 完整节点询问部分状态。他们还使用欺诈证明或有效性证明等技术间接检查 Rollup 交易的有效性。
当 Rollup 节点同步 Rollup 链时,它们使用共识和数据可用性层对 Rollup 区块施加的排序。如果它是 Rollup 中要在数据可用性层上发布的第一个处于其高度的有效区块,则它们将确认这个 Rollup 区块的最总想 - 无论是直接检查有效性(完整节点)还是间接检查有效性(轻客户端)。
有关 Rollup 的更详细和技术性的解释,我们建议读者参阅 Celestia 论坛上有关 Rollup 的文章。
以太坊上的 Rollup(enshrined 结算)
当前以太坊上的 Rollup 将其区块直接发布到基于 EVM 的智能合约,也称为桥合约。该合约有效地实现了一个用于 Rollup 的链上轻客户端,该客户端接收区块头并处理欺诈或有效性证明。在这个模型中,以太坊主链有一个神圣的、硬编码的、信任最小化的桥。
使用桥合约,用户可以在 Rollup 和桥合约所在的执行链之间以信任最小化的方式存取资产,因为由于欺诈或有效性证明,合约不会接受来自 Sequencers 的无效区块。
以太坊链作为共识和数据可用性层,仅记录和最终确定根据桥合约有效的区块。因此,Rollup 完整节点和轻客户端(智能合约之外)将以太坊链上轻客户端视为关于什么是规范(正确)Rollup 链的真相的根本来源。在这个模型中,我们认为以太坊被奉为 Rollup 的耦合结算层,其中 Rollup 是以太坊的“婴儿链”,而不是一种拥有自己权利的独立链。
Celestia上的 Rollup(主权)
Celestia 上的主权 Rollup 不会将他们的区块发布到智能合约中,而是直接作为原始数据发布到链上。Celestia 共识和数据可用性层不解释或对 Rollup 区块执行任何计算,也不为 Rollup 运行链上轻客户端。
相反,Rollup 像第 1 层区块链一样有效地运行:完整节点和轻客户端直接从 Rollup 自己的点对点网络下载 Rollup 的区块。主要区别在于,他们还通过 Merkle 证明验证了 Rollup 区块数据是否包含在 Celestia 数据可用性层上并对其进行排序。因此,与第 1 层区块链类似,这个规范链由本地验证分叉选择规则和 Rollup 交易的节点确定,而不是由链上轻客户端确定。
欺诈和有效性证明的工作方式也类似于它们在第 1 层区块链中的工作方式。欺诈证明通过点对点网络直接传递给客户端,有效性证明简单地包含在区块头中(例如,参见 Mina 协议)。因为点对点网络中的网络同步延迟很可能远小于获取包含在链上的欺诈证明的延迟,这意味着点对点欺诈证明的挑战期可能要短得多,从而为轻客户端带来更快的最终确定性。
在这个模型中,Rollup 和任何结算层之间没有桥,因为 rollup 区块只是直接发布到数据可用性层,而不是智能合约。这与 Cosmos 的设计理念相一致,在 Cosmos zones 中,通往 Cosmos Hub 的桥不是内置确定的,而是可选的,可以添加,同时仍允许 zones 保留其主权。Rollups 仍然可以以信任最小化的方式连接到其他 Rollup——我们将在下一节讨论这个问题。
如果一条 Rollup 链没有规定一个结算层来确定规范链和 Rollup 的交易有效性规则,则它是主权的。相反,Rollup 的规范链是由 Rollup 的点对点网络中的节点确定的(前提是这些区块在数据可用性层上可用)。这意味着结算层不能强制将交易包含在 Rollup 中。
“不设结算层”主要是社会区别,而不是技术区别,这意味着 Rollup 的社区之间存在社会合约,即 Rollup 的交易有效性规则由社区定义,而不是不可变的 L1 合约。在实践中,这意味着到 Rollup 的桥(未被写入)必须是可变的,以便有一条升级路径来确认主权 Rollup 上的硬分叉(在下一节中讨论)。
因此,这意味着 Rollup 社区可以通过硬分叉升级链,而无需对结算层或数据可用性层进行硬分叉,也无需嵌入破坏链的信任最小化性质的链上治理。如果有资产是在主权 Rollup 链上本地铸造的,而不是所有资产都从其他链桥接,则这一点尤其重要。
主权 Rollups 也可以仅将以太坊用作数据可用性层,而无需将以太坊用于结算,但是与使用诸如 Celestia 之类的“纯”数据可用性层相比,这会增加更多开销,因为 Rollup 节点需要对数据的有效性感兴趣以太坊结算层中的所有交易,以便为以太坊数据可用性层运行一个节点。
也可以在 Celestia 上构建一个“结算 Rollup”,这是主权 Rollup 的一种。结算 Rollup 可以具有将其用作结算层的非主权 Rollup。然而,结算层是主权的,就像以太坊 L1 是主权一样,因为它的社区经常通过社会共识用硬分叉升级它。
主权跨 Rollup 通信
如上所述,Celestia Rollup 在 Rollup 和任何结算层之间没有一座设置的桥梁。Rollup 的结算层和执行层因此被解耦和模块化。那么 Celestia Rollups 如何连接到其他链呢?因为没有结算层,这让我们有更广阔的跨链桥设计空间。我们在下面探索设计空间和各种选项。
让我们假设某个主权 Rollup 链 A 想要与另一个链 B 桥接——我们将假设它也是一个 Rollup。
点对点 vs. 链上结算
链 A 和 B 可以直接在两个链的轻客户端中相互嵌入一个轻客户端。例如,两条链都将为链 A 和 B 运行一个轻客户端。轻客户端因此将通过点对点网络直接接收区块头和任何相关的欺诈或有效性证明。我们将此称为点对点结算。
两个链上都存在一个桥合约,这将允许资产被提取并存入任一链(例如通过锁定和铸造机制),并由每个链的 sequencers 或验证者监控(通过中继器直接或间接实现)以执行转移。
另一方面,轻客户端也可以实现为链上智能合约,将区块头和欺诈/ZK 证明提交给链上智能合约。这就是以太坊 Rollup 的现状。我们将此称为链上结算。
中心辐射型 vs. 点对点桥接
目前,预计 Rollup 将连接到充当结算中心的单个结算层,例如以太坊(中心辐射桥接)。如果 Rollup 链 A 和 B 都连接到同一个中心(hub),那么它们可以使用 hub 作为结算的中介来将资产相互连接起来。
但是,就像 IBC 一样,Rollup 也可以选择直接相互桥接,而不是使用中间 Hub 链(点对点桥接)。
动态与静态桥接
根据 Rollup 链的执行环境,可能需要链升级或硬分叉来桥接新链。这是因为链 A 和 B 必须支持彼此的执行环境,才能支持彼此的欺诈或 ZK 证明。
让我们假设 Optimistic Rollup 链 A 的状态机是直接用 Golang 编写的(例如使用 Cosmos SDK),而不是像 EVM 或 CosmWasm 这样的智能合约环境。为了与链 B 桥接,链 B 需要升级其节点软件,以便将链 A 的状态机作为库,以验证链 A 的欺诈证明。这是因为链 B 无法自动添加链 A 的状态机代码,因为它可能是恶意的或不确定的,从而构成安全风险。因此,需要社会共识或治理来增加这样的桥。在使用链 B 不理解的 ZK 证明结构的有效性 Rollup 的情况下,这也同样需要。我们将其称为静态桥接,因为必须通过链升级显式添加桥接。这样的桥可以实现为 IBC 轻客户端。
另一方面,如果 Optimistic Rollup 链 A 是在 EVM 或 CosmWasm 等沙盒智能合约环境中编写的,那么链 B 可以允许将链 A 的状态机代码直接添加到链 B 的状态机中,而无需任何必要用于社会共识或治理,例如使用智能合约。同样,如果链 A 是 ZK 汇总,它可以动态桥接到链 B,只要链 B 能够理解链 A 的 ZK 证明。我们将此称为动态桥接。
非 enshrined 与 enshrined 结算层
如果 Rollup 链将其区块和证明发布到充当结算中心(如以太坊)的结算层,则我们说如果规范链及其交易有效性规则由结算层确定,则结算层是 enshrined(神圣或完美)的。
另一方面,如果 Rollup 将其区块和证明发布到结算层,但 Rollup 的规范链最终由 Rollup 网络本身决定,我们就说结算层是非 enshrined。为了使非 enshrined 的结算层有意义,它应该有一种不需要硬分叉结算层的方式来升级 Rollup。
基于委员会与基于证明的桥
为了使两条 Rollup 链之间的跨链桥的信任最小化,Rollup 链必须验证彼此的欺诈或 ZK 证明,这意味着它们必须了解彼此的状态机(基于证明的桥梁)。
但是,也存在基于委员会的桥(例如今天的 IBC 桥),该桥不依赖于状态有效性的证明,而是依靠委员会来证明区块的有效性。这样的桥梁并没有最小化信任,因为委员会可以窃取资金。然而,这样的桥可能具有较低的复杂性,因为目标链不需要具有处理源链的欺诈或 ZK 证明的功能。
在当前的 IBC 桥中,委员会是源链的验证者集。然而,人们可以设想这样一个世界,委员会由证明多个链的专业跨链桥提供商运营。这可以被认为是仅用于桥的链间安全性,而不是区块生产。在这样的设置中,桥委员会与源链的验证者集解耦。
可升级与不可升级的跨链桥
当前以太坊 Rollup 的最终目标是 Rollup 不应由多重签名或委员会进行升级,因为如果可以,它们不会被信任最小化,因为资金可能会通过升级被盗。在这个模型中,Rollup 只能通过硬分叉 L1 来升级,因为规范链是由 L1 的结算层定义的,这意味着 Rollup 没有主权。
然而,为了使主权 Rollup 变得实用,应该有一个升级路径,承认 Rollup 是主权的而不是神圣的结算层的。有几种方法可以考虑,这些方法会影响桥是否最小化信任。假设一条 Rollup 链 A 是硬分叉,而链 B 需要为链 A 升级其轻客户端:
对于静态桥,链 B 也需要硬分叉。这样的升级路径将意味着桥的信任最小化,因为不涉及多重签名或委员会。
对于动态桥,由链 A 控制的委员会(例如 DAO)可以升级链 B 上的轻客户端。这将是一个可信的桥。
对于动态桥,由链 B 控制的委员会(例如 DAO)可以升级链 B 上的轻客户端。如果链 B 是结算层,这使结算层有责任实施升级,这可能是可取的,如果结算层有专门的治理,或具有较高的经济安全性。这也将是一个值得信赖的桥。
为什么是主权?
“主权不仅仅是一个模因。这是硬分叉的能力。这是一种认识:区块链和社会中最重要的一层是社会共识。
这是人>代币的编码。人 > 验证者。人 > 治理。”
Rollup 的核心是简单的区块链,而 Rollup 桥只是这些区块链的轻客户端。以太坊推广的 Rollup 的当前现状旨在具有神圣的结算层的不可升级的汇总。这等效于为永远无法升级的区块链运行客户端,其区块只有在被轻客户端的一个神圣的链上实例接受以进行 Rollup 时才有效。如上所示,这只是 Rollup 设计空间的一小部分。
在 Celestia Labs,我们对没有固定结算层的主权 Rollup 感兴趣,因为我们相信区块链中最重要的层是社会共识。特别是,区块链是一种允许社区以主权方式进行社会协调的工具,而不会受到现状的负担。这意味着将硬分叉视为一项功能,而不是错误,因为硬分叉赋予主权社区强制执行社会共识的能力。当出现问题时,这作为一种社会追索机制尤其重要,例如在 DAO 黑客攻击后以太坊分叉时。
主权 Rollups 将成为主权社区拥有社区计算机来跟踪和执行社会经济价值和协议的有效方式,无需引导或维护自己的共识层和验证者集的开销,也无需服从于一个他们支持或不支持的神圣的结算层的社会共识。
主权 Rollups 还为开发人员在其执行环境中提供了更大的灵活性,因为他们不受必须为其 Rollup 处理欺诈或 ZK 证明的神圣结算层的限制,因为在许多情况下,某些结算层存在欺诈或 ZK 证明可能无法轻松或有效地处理。
请留意未来的帖子,我们将更深入地阐述为什么主权在区块链中很重要。