区块链扩容:水平扩展 vs.垂直扩展

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/592520.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python机器学习手册:从预处理到深度学习的实际解决方案

书籍:Machine Learning with Python Cookbook: Practical Solutions from Preprocessing to Deep Learning 作者:Kyle Gallatin,Chris Albon 出版:OReilly Media 书籍下载-《Python机器学习手册:从预处理到深度学习…

ASP.NET网上车辆档案管理系统

摘 要 本文采用基于Web的Asp.net技术,并与sql server 2000数据库相结合,研发了一套车辆档案管理系统。该系统扩展性好,易于维护。简化了车辆档案设计流程,去除了冗余信息。汽车销售企业可以通过本系统完成整个销售及售后所有档案…

IoTDB 入门教程 基础篇⑦——数据库管理工具 | DBeaver 连接 IoTDB

文章目录 一、前文二、下载iotdb-jdbc三、安装DBeaver3.1 DBeaver 下载3.2 DBeaver 安装 四、安装驱动五、连接数据库六、参考 一、前文 IoTDB入门教程——导读 二、下载iotdb-jdbc 下载地址org/apache/iotdb/iotdb-jdbc:https://maven.proxy.ustclug.org/maven2/o…

微信小程序 uniapp家庭食谱菜谱食材网上商城系统小程序ko137

随着生活节奏的不断加快,越来越多的人因为工作忙而没有时间自己出去订购喜欢的菜品。随着Internet的飞速发展,网络已经成为我们日常生活中必不可少的部分,越来越多的人也接受了电子商务这种快捷、方便的交易方式。网上订餐其独有的便捷性和直…

计算机网络——Dijkstra路由算法

实验目的 实现基于 Dijkstra 算法的路由软件 实验内容 网络拓扑如图所示 实验过程 先编写开辟应该图的空间,然后给点映射数字,构建图。程序获取用户输入的学号,构建图中边的权值。接下来程序从用户输入获取最短路径的搜索起点&#xff0…

Docker 中的 Nginx 服务为什么要启用 HTTPS

一安装容器 1 安装docker-20.10.17 2 安装所需的依赖 sudo yum install -y yum-utils device-mapper-persistent-data lvm23 添加Docker官方仓库 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo4 安装Docker CE 20.10.17 s…

【React】React-redux多组件间的状态传递

效果(部分完整代码在最底部): 编写 Person 组件 上面的 Count 组件,已经在前面几篇写过了,也可以直接翻到最底部看 首先我们需要在 containers 文件夹下编写 Person 组件的容器组件 首先我们需要编写 index.jsx 文件…

STM32G474 CMAKE VSCODE 开发环境搭建

本篇博文尝试搭建 stm32g474 的开发环境 一. 工具安装 1. 关于 MinGW、OpenOCD、Zadig 这些工具的下载和安装见 JlinkOpenOCDSTM32 Vscode 下载和调试环境搭建_vscode openocd stm32 jlink-CSDN博客 2. 导出一个 STM32 的 CMAKE 工程,这里略过。 3. 安装 ninja …

QT5之windowswidget_菜单栏+工具栏_核心控件_浮动窗口_模态对话框_标准对话框/文本对话框

菜单栏工具栏 新建工程基类是QMainWindow 1、 2、 3、 点.pro文件&#xff0c;添加配置 因为之后用到lambda&#xff1b; 在.pro文件添加配置c11 CONFIG c11 #不能加分号 添加头文件 #include <QMenuBar>//菜单栏的头文件 主窗口代码mainwindow.cpp文件 #include &q…

深入理解分布式事务⑨ ---->MySQL 事务的实现原理 之 MySQL 中的XA 事务(基本原理、流程分析、事务语法、简单例子演示)详解

目录 MySQL 事务的实现原理 之 MySQL 中的XA 事务&#xff08;基本原理、流程分析、事务语法、简单例子演示&#xff09;详解MySQL 中的 XA 事务1、XA 事务的基本原理1-1&#xff1a;XA 事务模型图&#xff1a;1-2&#xff1a;XA 事务模型的两阶段提交操作&#xff1a;Prepare …

「 网络安全常用术语解读 」通用漏洞报告框架CVRF详解

1. 背景 ICASI在推进多供应商协调漏洞披露方面处于领先地位&#xff0c;引入了通用漏洞报告框架&#xff08;Common Vulnerability Reporting Format&#xff0c;CVRF&#xff09;标准&#xff0c;制定了统一安全事件响应计划&#xff08;USIRP&#xff09;的原则&#xff0c;…

mysql 指定根目录 迁移根目录

mysql 指定根目录 迁移根目录 1、问题描述2、问题分析3、解决方法3.1、初始化mysql前就手动指定mysql根目录为一个大的分区(支持动态扩容)&#xff0c;事前就根本上解决mysql根目录空间不够问题3.1.0、方法思路3.1.1、卸载mariadb3.1.2、下载Mysql安装包3.1.3、安装Mysql 8.353…

ASP.NET 两种开发模式

1》》WebForm 开发模式 1. 服务器端控件 2. 一般处理程序html静态页Ajax 3. 一般处理程序html模板 如下图 2》》MVC 太复杂的系统&#xff0c;会造成Controller 过复杂。 后来就诞生了 MVP、MVVM等模式

腾讯云CentOS7使用Docker安装ElasticSearch与Kibana详细教程

文章目录 一、安装ElasticSearch二、安装Kibana 一、安装ElasticSearch 使用Docker拉取ElasticSearch镜像 这里版本选择的是7.15.2 docker pull docker.elastic.co/elasticsearch/elasticsearch:7.15.22. 查看ElasticSearch的镜像id docker images3. 创建ElasticSearch容器 …

目标跟踪—卡尔曼滤波

目标跟踪—卡尔曼滤波 卡尔曼滤波引入 滤波是将信号中特定波段频率滤除的操作&#xff0c;是抑制和防止干扰的一项重要措施。是根据观察某一随机过程的结果&#xff0c;对另一与之有关的随机过程进行估计的概率理论与方法。 历史上最早考虑的是维纳滤波&#xff0c;后来R.E.卡…

nn.GRU层输出:state与output的关系

在 GRU&#xff08;Gated Recurrent Unit&#xff09;中&#xff0c;output 和 state 都是由 GRU 层的循环计算产生的&#xff0c;它们之间有直接的关系。state 实际上是 output 中最后一个时间步的隐藏状态。 GRU 的基本公式 GRU 的核心计算包括更新门&#xff08;update gat…

从零开始学AI绘画,万字Stable Diffusion终极教程(四)

【第4期】图生图 欢迎来到SD的终极教程&#xff0c;这是我们的第四节课 这套课程分为六节课&#xff0c;会系统性的介绍sd的全部功能&#xff0c;让你打下坚实牢靠的基础 1.SD入门 2.关键词 3.Lora模型 4.图生图 5.controlnet 6.知识补充 在前面的课程中&#xff0c;我…

QT:QT窗口(一)

文章目录 菜单栏创建菜单栏在菜单栏中添加菜单创建菜单项添加分割线 工具栏创建工具栏设置停靠位置创建工具栏的同时指定停靠位置使用QToolBar类提供的setAllowedAreas函数来设置停靠位置 设置浮动属性设置移动属性 状态栏状态栏的创建在状态栏中显示实时消息在状态栏中显示永久…

数据结构-二叉树结尾+排序

一、二叉树结尾 1、如何判断一棵树是完全二叉树。 我们可以使用层序遍历的思路&#xff0c;利用一个队列&#xff0c;去完成层序遍历&#xff0c;但是这里会有些许的不同&#xff0c;我们需要让空也进队列。如果队列里到最后只剩下空那么这棵树就是完全二叉树。具体的实现如下…

工作问题记录React(持续更新中)

一、backdrop-filter:blur(20px); 毛玻璃效果&#xff0c;在安卓机上有兼容问题&#xff0c;添加兼容前缀也无效&#xff1b; 解决方案&#xff1a;让设计师调整渐变&#xff0c;不要使用该属性! 复制代码 background: radial-gradient(33% 33% at 100% 5%, #e9e5e5 0%, rgba…