模块化 vs. 单体化架构已死
作者:Avi Zurlo
编译:Block unicorn
自从 Rollups 的兴起以来,区块链的扩展一直集中在模块化与单体化的争论上。最初,这种二元对立是一种有用的思维模型,用于推理区块链的可扩展性,但是现在,这两个阵营都已经超越了它。
如今,模块化与单体化的对比给我们的可扩展性思维模型带来了不必要的限制。
那么,还有什么替代方案呢?
在本文中,我们将展示水平扩展与垂直扩展一直是区块链可扩展性的基本框架,并解释采用水平扩展与垂直扩展如何带来更好的扩展解决方案。
理解模块化 vs. 单体化
首先,是一些定义:
模块化链将区块链的核心功能分离为不同的层。
单体化链将所有核心功能集成到单一的、相互连接的层中。
我们可以将“层”视为“机器”——单体化链有一个运行所有任务的单一验证器节点,而模块化链有多个(2-3个)运行不同任务的全节点。
例如,Rollup 通常有两个运行节点:一个用于执行的 Rollup 全节点,以及一个用于结算+数据可用性(DA)的以太坊全节点。而 validium 可能会利用三个运行节点:一个用于执行的 Rollup 全节点,一个用于结算的以太坊全节点,以及一个用于 DA 的备用数据可用性层全节点。
模块化将区块链的任务分配到至少两个全节点上。通过这样做,模块化区块链在构建每个区块时可以利用多台计算机的计算能力。
这是水平扩展的一种形式。
模块化在思考区块链扩展性时很有用,因为它是一种水平扩展的类型。
另一方面,大多数单体化阵营选择通过软件优化、实现并行虚拟机、数据管道、更快的网络协议和(最值得注意的是)更强大的硬件来扩展。从本质上讲,单体化链试图从单个全节点中提取尽可能多的计算能力。
这是垂直扩展的一种形式。
批评者认为,这种方法趋于集中化:如果依靠增加单个节点的功率来扩展,则不可避免地会遇到底层硬件的物理限制,并被迫增加硬件要求以进一步扩展。
然而,这种批评是不正确的,因为并非所有的单体化链都只依赖于垂直扩展。
例如,Near 是一个基于分片网络架构构建的单体化 L1 区块链。这意味着 Near 的全节点负责所有任务(即执行、结算和数据可用性),但它们只负责 Near 全局状态的一小部分。因此,Near 通过根据状态而不是任务来分配工作,从而利用了多台计算机的计算能力(就像模块化链一样)。
我们可以看到,无论是单体化链还是模块化链,在它们实现的扩展技术方面都没有限制。两者都可以进行水平扩展和/或垂直扩展。
此外,模块化与单体化的争论始终植根于水平与垂直扩展的框架中。从严格的技术角度来看,模块化倾向于水平扩展,这是其设计所固有的,而单体化则倾向于垂直扩展。
现在我们已经成功推出了模块化链,额外的扩展优势不再在于“更加模块化”。现在的焦点是链如何利用水平或垂直扩展技术。
采用水平 vs. 垂直的思维模型使我们能够轻松推理每个链在此过程中所做的权衡。
重新定义对话:水平 vs. 垂直扩展
在深入研究水平 vs. 垂直扩展框架之前,重要的是要承认它的起源可以追溯到 20 世纪 70 年代,当时分布式计算研究为水平扩展概念奠定了基础。如今,所有的扩展技术都可以归类为水平或垂直扩展。
垂直扩展
垂直扩展会增加每个节点的硬件利用率或硬件要求。在区块链中,这通常是通过并行虚拟机(即多线程进程)等软件优化来完成的。
一个常见的例子是 EVM 与 SVM。
EVM 按顺序执行事务,而 SVM 则是并行执行事务。SVM 通过利用更多的 CPU 核心来实现这一点,因此 SVM 每秒可以比 EVM 处理更多的事务。注意:这种垂直扩展类型是 Eclipse L2 背后的基础。
在权衡方面,垂直扩展受到可用硬件的限制,由于硬件需求的增加而趋于集中化,并且与水平扩展相比可扩展性较差。
水平扩展
另一方面,水平扩展通过将工作负载分散到多个节点上来增加系统可以访问的机器数量。如前所述,模块化链本质上是将任务分配到多台机器上。然而,链通常可以通过分片实现更大程度的水平扩展。
=nil; 这里提供了一个有用的例子。
去年11月,=nil; 基金会推出了一种可验证的分片架构,称为 zkSharding,它是新的以太坊 L2 的基础。=nil; 设计的核心是将其全局状态划分到多个分片上。每个分片均由 =nil; 的去中心化委员会运行,他们构建区块并管理跨分片交易。此外,每个分片都会生成一个有效性证明,该证明会发送到主分片进行聚合,然后在以太坊上发布和验证。=nil; 通过两种方式利用水平扩展的能力:
-
首先,=nil;是一个模块化区块链,它利用以太坊的强大共识和数据可用性作为保证,从而将任务分配在多个全节点上。
-
其次,=nil;是一个分片区块链,因此将部分状态分布在许多全节点上。
这两种技术都减轻了任何单个机器需要承担的负载,并提高了网络的总体可扩展性。
那么,水平扩展的权衡有哪些呢?这可以归结为两点:网络和共识的复杂性以及机器或分片之间的异步通信。
以太坊可扩展性的终局之战
水平扩展和垂直扩展均不局限于模块化或单体化架构。这就是为什么水平 vs. 垂直扩展框架提供了更多空间来探索新的解决方案,使模块化区块链更具可扩展性。
例如,一种选项是垂直扩展模块化堆栈的一层。一种常用的方法是实现并行虚拟机,从而提高执行吞吐量。正如上面提到的,Eclipse 正在利用 SVM 和其他 Rollups,比如Starknet,实现 BlockSTM 以实现并行化。
但是,垂直扩展始终受限于单台机器的限制,我们不能打破物理定律。
一种解决方案可能是选择通过分片实现水平扩展。
当前的模块化设计才刚刚开始触及水平扩展的全部潜力。通过分片,我们可以利用任意数量机器的计算能力(而不仅仅是2-3台机器分担任务)。
换句话说,许多机器可以并行运行相同类型的任务。这就是以太坊和 Celestia 希望分别通过 Danksharding 和数据分片实现的目标。但是,分片本质上并不局限于数据可用性层——它还可以与执行相结合(如 =nil; L2 的情况)。
如果我们将通过模块化堆栈实现的水平扩展与分片提供的水平扩展相结合,我们将获得可用计算能力的大幅增加。
但我们可以做得更好……
区块链可扩展性的最终目标将融合水平和垂直扩展,从而产生具有并行虚拟机的分片区块链。
在 =nil; 基金会,我们正在系统地朝着这个最终状态设计迈进。=nil; 的 L2 通过利用模块化、水平可扩展的架构 (zkSharding) 和垂直扩展的验证器实现(分片内并行化),采取了一条积极的扩展路线图。
因此,=nil;的设计可以在不牺牲状态、流动性或用户碎片化的情况下实现全球规模。
如果对水平扩展和 zkSharding 感到好奇的话,可以到 =nil; 基金会的 Discord 和 X 来加入对话。