1. 引言
随着Rollups 的兴起,区块链扩容一直集中在模块化(modular)vs. 整体式(monolithic)之争。
如今,模块化与整体式这种一分为二的心理模型,已不适合于当前的扩容场景。本文,将展示:
- 水平扩展
- 与 垂直扩展
始终是区块链扩容的基础框架,并解释:
- 采用水平扩展与垂直扩展如何带来更好的扩容解决方案。
2. 何为模块化 vs. 整体式?
何为模块化 vs. 整体式?:
- 模块化链:是指将区块链的核心功能分为不同的层(layer)。
- 整体式链:是指将所有核心功能集成到单个互连的层中。
可将“层”视为“机器”:
- 整体式链:有运行所有任务的单个validator节点
- 模块化链:有多个(2-3)个运行不同任务的全节点。
如,Rollup 通常有两类节点: - 1)rollup全节点:用于执行
- 2)以太坊全节点:用于结算 + 数据可用性(DA,Data Availability)
validium 可能会利用三类节点:
- 1)rollup全节点:用于执行
- 2)以太坊全节点:用于结算
- 3)DA全节点:用于 DA 的替代数据可用性
模块化将区块链的任务划分为至少两类全节点。这样,模块化链在构建每个区块时可利用多台机器的计算能力。
这是水平扩展的一种形式 。
模块化对于考虑区块链扩容很有用,因为:
- 其具有水平可扩展性。
另一方面,大多数整体式阵营选择通过软件优化、实现并行虚拟机、数据pipelining、更快的网络协议和(最值得注意的是)更强大的硬件来扩容。从本质上讲,整体式链试图从单个全节点中挤出尽可能多的计算能力。
这是垂直扩展的一种形式 。
有批评认为,整体式链将导致中心化:
- 若依靠增加单个节点的能力来扩展,则不可避免地会遇到底层硬件的物理限制,并被迫增加硬件要求以进一步扩展。
然而,这种批评是错误的,因为并非所有的整体式链都仅仅依赖于垂直扩展。
如:
- Near 是一个基于分片网络架构的整体式 L1 区块链。这意味着Near全节点负责所有任务(即执行、结算和数据可用性), 但Near全节点只负责Near全局状态的一小部分。因此,Near 通过根据状态而不是任务来划分工作,来利用多台机器的力量(就像模块化链一样)。
由此可知,整体式链和模块化链所实现的扩容技术方面都不受限制。两者都可以水平和/或垂直扩展。
此外,模块化与整体式的争论始终植根于水平扩展与垂直扩展框架。从严格的技术角度来看,模块化偏向水平扩展,这是其设计所固有的,而整体式偏向于垂直扩展。
目前已成功推出了模块化链,额外的扩展优势不再在于使其“更加模块化”。 现在的焦点是:
- 链如何利用水平扩展或垂直扩展技术。
采用水平扩展与垂直扩展心理模型,可轻松推理每条链在此过程中所做的权衡。
3. 水平扩展 vs. 垂直扩展
水平扩展 起源可追溯到 20 世纪 70 年代,当时分布式计算研究为水平扩展概念奠定了基础。如今,所有扩展技术都可以分为水平扩展和垂直扩展。
3.1 垂直扩展
垂直扩展会增加每个节点的硬件利用率或硬件要求。在区块链中,这通常是通过并行虚拟机(即多线程进程)等软件优化来完成的。
一个流行的例子是:
- EVM vs. SVM
- EVM 顺序执行交易,而 SVM 并行执行交易。
- SVM 通过利用更多的 CPU 内核来实现并行执行交易,因此 SVM 每秒可比 EVM 处理更多的交易。注意:这种类型的垂直扩展是 Eclipse L2 背后的基础。
在权衡方面,垂直扩展受到可用硬件的限制,由于硬件需求的增加而趋于中心化,且与水平扩展相比,其可扩展性较差。
3.2 水平扩展
水平扩展通过将工作负载分散到多个节点上来增加系统可访问的机器数量。如前所述,模块化链本质上是将任务分配到多台机器上。然而,链通常可以通过分片实现更大程度的水平扩展 。
2023年11月,=nil; Foundation推出了一种名为 zkSharding的可证明分片架构,为=nil;(一种新的以太坊L2)的基础。 =nil; 设计的核心是:
- 将其全局状态划分到多个分片上。
- 每个分片均由 =nil; 的去中心化委员会运营。
- validators:负责构建区块并管理跨分片交易。
- 每个分片都会生成一个有效性证明,该证明会发送到主分片进行聚合,然后再发布到以太坊上验证。
=nil; 通过两种方式利用水平扩展的力量:
- 1)=nil; 是一个模块化区块链,其利用以太坊的强大共识和数据可用性保证,从而将任务分布在多个全节点上。
- 2)=nil; 是一个分片区块链,因此将部分状态分布在许多全节点上。
这两种技术都减少了任何单台机器需要承受的负载,并提高了网络的总体可扩展性。
那么,水平扩展的权衡有哪些呢?归结为两点:
- 网络和共识的复杂性
- 以及 机器或分片之间的异步通信。
4. 以太坊扩容终极游戏
无论是水平扩展,还是垂直扩展,均不限于模块化或整体式架构。这就是为什么水平扩展与垂直扩展框架提供了更多空间来探索新的解决方案,使模块化区块链更具可扩展性。
如:
- 一种选择是垂直扩展模块化stack中都某层。一种流行的方法是实现并行虚拟机,从而扩展执行吞吐量。如上所述,Eclipse 正在利用 SVM 和其他rollups(如 Starknet)实现 BlockSTM 来启用并行化。
但是,垂直扩展总是受到单台机器的限制,无法打破该物理定律。
一种解决方案可能是选择通过分片进行水平扩展。
当前的模块化设计才刚刚开始触及水平扩展的全部潜力。通过分片:
- 可利用任意数量机器的能力(而不是按任务分割 2-3 台机器)。
换句话说,许多机器可以并行运行相同类型的任务。这就是以太坊和 Celestia 希望分别通过 Danksharding 和数据分片实现的目标。但是,分片本质上并不局限于数据可用性层——也可像 =nil; L2那样,将DA层与执行层相结合。
若将通过模块化stack实现的水平扩展与分片提供的水平扩展相结合,将获得可用计算能力的大幅增加。
但不仅限于如此,还可以更好:
- 区块链扩容的最终目标将合并水平扩展和垂直扩展, 从而产生具有并行虚拟机的分片区块链。
=nil; Foundation,正有条不紊地努力实现这一最终状态设计。=nil; L2 通过利用模块化、水平可扩展架构 ( zkSharding ) 和垂直扩展validator实现(分片内并行化),采取了积极的扩容路线图。
=nil; 设计可在不牺牲状态、流动性或用户碎片化的情况下实现全局扩展。
其中zkSharding总体架构图为:
参考资料
[1] 2024年4月29日 =nil; Foundation官方博客 zkSharding for Ethereum
[2] 2024年4月29日 =nil; Foundation官方博客 Modular vs. Monolithic Is Dead: Why horizontal vs. vertical scaling is the better framework for Ethereum scalability
[3] Horizontal vs Vertical Scaling Debate