模块化堆栈
模块化堆栈是 Celestia 独有的概念。它指的是将区块链的所有不同层解耦为独立的层。因此,当我们说堆栈时,我们指的是所有的层一起运作。
那么存在哪些层呢?毋庸置疑,有共识和数据可用性层 Celestia,但也有其他层。这里我们特指结算层,它可以是一条链,这条链上面的 rollups 有一个信任最小化的桥,用于统一的流动性和 rollups 之间的桥接。这些结算层可以是各种类型的。例如,你可以有受限制的结算层,只允许基于其之上的执行 rollups 拥有简单的桥接和解析合约。然而,你也可以有结算层,其上有自己的应用,也有 rollups。尽管也存在其他类型的滚动,它们不依赖于结算层,而是仅靠Celestia 自己的功能,这些被称为主权 rollups,我们将在下一章讨论这些。
现在,也有可能出现这样的堆栈,执行层不直接向结算层发布块数据,而是直接向 Celestia 发布。在这种情况下,执行层只是将他们的区块头发布到结算层,然后结算层会检查某个区块的所有数据是否包含在 DA 层中。这是通过结算层的一个合约完成的,该合约从 Celestia 接收交易数据的 Merkle 树。这就是我们所说的数据证明。
模块化堆栈的另一个巨大优势是其主权。在模块化堆栈中,治理可以被划分到特定的应用程序和层,不会与其他应用程序重叠。如果有问题,治理者可以在不干扰集群中的其他应用的情况下修复它。
主权 Rollups
主权 rollup(sovereign rollup) 是一个独立于任何结算层运作的 rollup。这意味着它不依赖于具有智能合约功能的结算层(提供状态更新和证明),而是纯粹通过 Celestia 上的命名空间发挥作用。通常情况下,rollups 在一个生态系统中发挥作用,比如以太坊,它有一个 rollup 智能合约(解析合约)。这个 rollup 的智能合约也在结算层和 rollup 之间提供信任最小化的桥接。然而,在以太坊上,所有的 rollup 都在争夺珍贵的 calldata。这就是为什么正在研究 EIP-4844,它将提供一个新的交易类型:blob 交易。这也会增加区块大小。然而,即使有了 blob 交易,很可能仍然会有激烈的结算竞争。
大多数单片链都有能力处理智能合约。以以太坊为例,有一个链上智能合约,处理状态根,也就是 rollup 的当前状态的 Merkle 根。这个合约不断检查之前的状态根是否符合其当前根的 rollup 批次。如果是这样的话,那么就会创建一个新的状态根。然而,在 Celestia 上,这是不可能的,因为 Celestia 不会处理智能合约。
相反,在 Celestia 上,主权 rollup 直接向 Celestia 发布他们的数据。这里的数据不会被计算或结算,而只是存储在区块头中。区块头是识别区块链上一个特定区块的东西,每个区块都是独一无二的。在这个区块头中,存在一个 Merkle 根,它是由所有的哈希交易组成的。
那么,它是如何工作的呢?Rollup 有自己的点对点网络,全节点和轻节点都从这里下载区块。然而,他们也通过 Merkle 树验证所有的 rollup 区块数据在 Celestia 上的发送和排序(因此被称为数据可用性)。因此,链的规范历史是由本地节点设定的,这些节点验证了 rollup 的交易是正确的。这其中的含义是,主权 rollup 需要在数据可用性层上发布每一个交易,这样任何节点都可以跟踪正确的状态。因此,作为 rollup 命名空间的观察者的完整节点(把命名空间看作是 rollup 的智能合约)也可以为轻节点提供安全。这是因为,在 Celestia 上,轻节点几乎等同于全节点。
我们再解释一下命名空间(namespaces)。在 Celestia 上,Merkle 树是按命名空间排序的,这使得 Celestia 上的任何 rollup 只下载与他们的链相关的数据,而忽略了其他 rollup 的数据。命名空间 Merkle 树(NMTs)使 rollup 节点能够检索他们查询的所有 rollup 数据,而无需解析整个 Celestia 或 rollup 链。此外,它们还允许验证器节点证明所有的数据都已正确地包含在 Celestia 中。
那么,为什么主权 rollup 具有独特的前景呢?因为之前的 rollup 实现,比如在以太坊上的实现是有限的,因为以太坊节点由于是包揽所有职能的,所以需要存储执行相关的状态。然而,在模块化设计中,我们可以有专门的节点用于各种目的,这应该使网络的运行成本大大降低。因此,运行网络的成本与轻节点的成本成比例,而不是完整节点的成本,因为正如我们前面解释的那样,轻节点相当于完整节点。
让我们来看看一些 rollup 实现如何作为主权 rollups 发挥作用的。首先,有必要解释一下各种 rollup 证明系统在 Celestia 上是如何运作的。
Optimistic rollups 依赖于欺诈证明。欺诈证明将通过 rollup 的全节点和轻节点在客户之间进行点对点的传播。我们将进一步研究这一点的实现。主权 rollup 改变了欺诈证明的分发方式。他们现在不是在结算层合约上进行验证,而是在 rollups 点对点网络中分发,并由本地节点进行验证。通过 Celestia 上的主权 Optimistic Rollups,我们也可能将挑战期降到最低,这意味着我们解决了当前 OR 的主要障碍之一,因为他们目前在以太坊上的争议窗口非常保守。这是可能的,因为目前,所有的欺诈互动都发生在以太坊高度竞争的区块空间中的链上,这导致了长时间的最终性。然而,在主权 rollup 上,如果连接到一个诚实的全节点,任何轻节点都具有全节点的安全性,因此欺诈交互应该更快。
ZK rollups 依赖于有效性证明(例如 zksnarks)。作为主权 rollup 的 ZK rollup 的功能与目前的实现方式相当类似。然而,它不是向智能合约发送 ZK 证明,而是在 rollup 的点对点网络中分发,供节点验证。主权 ZK rollups 很像统一结算层上的 ZK rollups,允许各种执行运行时作为主权链在彼此之上运行,因为它们的交易不被 Celestia 解释。在这里,ZK rollup 之上的运行时可以以多种方式运行。可以有隐私保护运行时、特定于应用程序的运行时等等。这就是所谓的分形扩展(Fractal Scaling)。
现在,我们已经建立了主权 rollups 的概念,并对它们将如何在 Celestia 上实现有了一个概念,让我们看看两种不同的 rollups 架构是怎样的:
那他们为什么需要 Celestia?Optimistic rollups 需要 DA,以便检测欺诈证据,而 ZK rollups 需要 DA,以便知道 rollup 链的状态。同样重要的是,当你看到某样东西时,要始终保持逆向思维。因为如果不这样做,你经常会被自己的信念所蒙蔽。在本节中,我将尝试解释主权 rollups 带来的一些负面影响。
主权 rollups 将严重依赖于建立在它们之上的新生态(例如 dApps)。但是,如果 rollup 本身已经有一定生态,并且 dApps 是开源的,那么这样做就容易得多了。尽管如此,流动性仍然是需要克服的主要问题。流动性通常会被划分为主权 rollup 和基于其之上的运行时间两类。因此,rollups 将严重依赖于对其他层(如其他主权 rollup 或结算层)的安全、信任最小化的桥接。稍后我们将介绍一些可能的实现。此外,主权 rollups 的实现严重依赖于正在构建的能够支持其各种功能的基础设施。
Optimistic Rollup 实现
在本节中,我们将尝试解释一个可能的主权 Optimistic rollup 实现是如何工作的。
构造为 OR 提供欺诈证明的独特方式之一是在 rollup 上使用全节点和轻节点来玩一个游戏。这个游戏是在两个节点之间进行的,一个是挑战者,一个是应答者。挑战者将通过充当验证者的第三个节点向响应者发送一个查询。响应程序对该查询的应答将通过相同的通道发生。在收到质疑后,验证者会将查询转发给响应者,然后响应者会生成一个响应,该响应将被发送回验证者和挑战者。验证器将一致地执行检查,以确保两者之间没有不匹配,并且它们不是恶意的。验证者的行为是确保响应者没有发送错误的 Merkle 树,而挑战者的行为是确保响应者遵循正确的根。如果反应者能够保护自己,那么游戏将照常进行。在这场游戏中,诚实的挑战者总是会赢,而诚实的回应者总是会赢。
Celestia 充当数据可用性层,X 充当结算层
也有可能既不使用纯粹连接到 Celestia 的结算层进行桥接,也不使用主权 rollup 功能。由于 Celestia 只是为底层 DA 层提供共享安全,所以只要 Celestia 能够将可用交易数据的 Merkle 根发送到一个结算层合约,就可以使用任何结算层。这意味着,如果需要,任何结算层都可以用于 rollup。那么他们为什么要这么做?许多现有的结算层,如以太坊,已经有了一个繁荣的生态系统。因此,已经有了流动性和用户可以利用。对于不希望依赖于从头构建整个生态系统的 rollup,这是特别有利的。现在,这不仅仅局限于作为结算层的以太坊。例如,你还可以将 Mina 用作 ZK rollup。这意味着你可以将你的交易数据发送给 Celestia,同时将状态更新和 zk-proof 发送给 Mina。通过这样做,你已经拥有了一个默认证明有效性的结算层。
如果你是一个 rollup 运营方,想要利用流动性和使用其他区块链的用户,那么这种类型的解决方案对你非常有吸引力。它也可能成为一种即插即用类型的 rollup 运营方。你可以把不同的排序器插到不同的结算层上。例如,一个ZK rollup 排序器可以连接到 Mina 并提供状态更新和有效性证明。而另一个不同 ZK rollup 上的排序器可以通过 Quantum 连接到以太坊进行结算。他们的共同点是,他们会把所有的交易数据发送给 Celestia,然后 Celestia 会在结算层操作一个智能合约或类似的合约,在那里它会发送一个可用数据的 Merkle 树(认证)。
让我们以 ZK rollup为例,看看它在架构上是如何实现的:
价值捕获
Celestia 本身的收入来源将是来自各种提交的交易批次的交易费用。Celestia 的交易费用将与以太坊目前的 EIP-1559 运作方式非常相似,所以是一种销毁机制。这意味着将会有一个动态的基础费用,将被销毁,以及一个“小费”,让验证器推动特定的交易更快通过,这些验证器也会从新区块后的 token 发行中获得价值。然而,这是从 Celestia 的验证器的角度来看的,那么从用户的角度来看它会是什么样子呢?我们先了解一下,你所处的层次(L1 或者 L2)所对应的手续费,然后我们可以得出用户体验会是什么样子。
执行 rollups 的费用结构将主要是运营成本和 DA 发布成本。很可能还会有间接成本,这样 rollup 就会产生利润。这意味着,对于用户来说,你可能会支付一个包含这三个方面的费用外加一个拥堵费。不过由于拥堵减少,这个费用可能会低很多。
结算层的收入来源是 rollup 为能够结算它而支付的结算合约费。此外,通过结算层,在 rollups 之间也会有信任最小化的桥,因此它也可以收取桥接费。
那么,如果没有结算层,主权 rollups 又会怎样呢?在主权 rollup 中,用户必须支付 gas 费才能访问 rollup 的计算。这个 rollup 会设定一个费用,很可能是由治理决定的,然后你可能还需要支付拥堵费。rollup 上的这些费用将包括向 Celestia 发布数据的费用,以及 rollup 验证器的少量开销。你可以放弃结算费用,这可能会给最终用户带来极低的费用。
最后,我们可以创建一个收费结构,以了解各种费用对终端用户的影响。模块化堆栈的最终用户可能会得到3个固定费用,4个也是可能的。这是 DA 发布费,结算合约费和 rollup 执行费。第四种可能的收费是在拥堵期间收取拥堵费。用户只在执行层上支付一笔费用,这笔费用将包含模块化堆栈中所有层的成本。所以让我们从用户的角度来看看收费结构是怎样的:
那么这对未来意味着什么呢? 如果 Celestia 被证明是 rollup 使用的更便宜、更快的数据可用性层,同时仍然提供去中心化和共享的安全性,那么你可以看到 rollup 越来越多地使用它来实现数据可用性。如果我们考虑一下目前的 rollup 花费多少成本来使用以太坊的安全,那么在 Celestia 上的 rollup 将花费更少。然而,以太坊的拥塞问题即将得到修复,主要是 blob 交易、质押和分片。
那 MEV 呢?目前,rollup 利用排序器在内存池中收集和排序用户的交易,然后将其执行并发布到 DA 层。这是一个关于 MEV 的问题,因为在当前的实现中排序器主要是中心化的,因此不是抗审查的。当前的解决方案是将排序器去中心化,这是当前很多 rollup 计划做的,尽管这带来了它自己的一组问题。另一种以某种形式解决这个问题的方法是将验证器和交易列表的排序分开。 综上所述,模块化堆栈的各层通过交易价值获得收益。而用户从一个网络层的交易中获得价值,并且支付手续费。
桥接
正如我们在前面讨论过的,如果一个 rollup 有一个结算层,那么它将有一个信任最小化的桥,通过这个结算层连接到其他 rollups。但是,如果是主权 rollup,或者希望桥接到另一个集群,会发生什么情况呢?让我们看看跨 rollup 通信。
在两个要进行通信的主权 rollups 的情况下,它们实际上可以使用轻客户技术,这与 IBC 的功能非常相似。轻客户端将通过 p2p 网络接收来自两个 rollup 的区块头以及 rollup 所使用的证明。这既可以通过锁和铸造机制(例如 IBC)实现,也可以通过中继器的验证者实现。通过使用 Cosmos SDK 构建链,以及那些使用 Tendermint 或 optimmint 桥接的链变得更加无缝,因为你可以完全利用 IBC 和 ICS 的优势。然而,这需要两个链包含彼此的状态机,并让桥接链的验证者注销交易。其他的沟通方式也可以存在。例如,我们可以想象第三条链,它与一些轻客户端一起工作。在上面,两个想要桥接的链可以将他们的区块头作为数据流,然后作为两个结算层的功能。或者,你可以依赖 Cosmos 链来充当“intercluster rollup hub”,其中链的验证器可以根据 rollup 的条件来操作桥接。还有各种各样的桥接即服务链,如 Axelar 等。
但是,到目前为止,促进桥接的最简单方法是执行 rollup 使用相同的结算层,因为它们在该层上有信任最小化的桥接合约。 层与层之间的桥梁之所以如此重要,是因为它允许统一的流动性。其次,通过允许协议和层通过共享状态相互组合,我们解锁了新的互操作性级别。状态共享是指一个链调用另一个链的能力。这一点特别值得关注,特别是使用 ICS-27 的链间账户的能力。
因此,我们可以得出这样的结论:轻客户端对于像 IBC 这样的互操作性标准至关重要。因此,Celestia 轻客户端将使各种集群中的链间互操作性更加安全。关于 Celestia 与 IBC 的联系,他们计划利用治理来将某些链与 Celestia 的连接列入白名单,以限制状态爆炸。
终端用户验证
虽然过去几年的各种单片和模块化设计方法都是创新的,而且建造它的人才数量也是惊人的。在各种权衡之下,有一个基本问题在我们的领域里已经存在了相当长的时间。我们认为,这个问题的核心是终端用户的验证及其需要。
你可以无休止地争论关于不同设计的各种权衡。但最终,这也许归结为一个问题:拥有终端用户验证的可能性是否重要。很多设计上的权衡(例如区块大小)都是围绕着运行一个全节点的便利性进行的,而 DAS 使轻客户端成为 "一等公民",可以与全节点相媲美。
这样想的基本假设是,用户会关心成为 "一等公民" 的问题。用户可以通过运行轻客户端/全节点轻松地验证链,但这并不意味着他们会这样做,或者他们会重视这样做的能力。
支持这种做法的论点是相当直接的。如果用户不关心验证,你还不如运行一个中心化的数据库。它总是更有效率,因为去中心化往往是以牺牲效率为代价的。因此,我们建立加密协议的原因是,终端用户能够验证计算。
反对的论点是,只要网络足够去中心化,终端用户验证本身并不重要。只要用户体验好,用户就不会关心它。终端用户验证有多重要,目前还没有明确的答案。然而,我们认为最终用户能够验证区块链网络是一个值得追逐的目标,也是许多人在这个领域构建的原因。
模块化堆栈的未来
本节将作为一种方式来设想在 Celestia 之上构建的模块化堆栈在未来可能是什么样子。我们将从架构上概述如何查看模块化堆栈,以及我们可能看到的层类型。
下面是一个可以在模块化堆栈中发挥作用的许多可能层的图表。他们都有一个共同点,他们都使用 Celestia 来获取数据。我们可能会看到各种主权 rollup,包括 OR 和 ZK Rollup,这将没有结算层的功能。我们还可能看到 rollup 使用 Cevmos 作为结算层,以及各种应用程序链。我们也有可能看到其他类型的结算层。这些结算层可能是受限制的,这意味着它们要么只是为了桥接和 rollup 而预先设置契约,要么依赖于治理到白名单合约。
在图表的右侧是其他非原生结算链,有些 rollups 也可以利用它们的流动性和结算能力,同时依赖 Celestia 向结算层提供交易数据的认证。所有这些集群都将通过各种桥接服务连接起来。 你没有看到的是将要构建的所有基础设施,这些基础设施可以方便地访问 Celestia 的各种功能,比如 RPC 终端、APIs 等等。