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

news/2024/5/20 22:15:40

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


http://www.mrgr.cn/p/58518035

相关文章

Leetcode—706. 设计哈希映射【简单】(constexpr)

2024每日刷题(127) Leetcode—706. 设计哈希映射 数组实现代码 class MyHashMap { public:MyHashMap() {memset(arr, -1, sizeof(arr));}void put(int key, int value) {arr[key] value;}int get(int key) {if(arr[key] -1) {return -1;} return arr…

车载测试系列:车载以太网测试(一)

汽车行业对可靠性和安全性要求越来越高,车载以太网在应用过程中,为了保证其可靠性与安全性,需要对其开展测试工作。 传统的以太网测试和车载以太网测试存在一定差异,传统以太网测试方法并不适用汽车以太网测试。 汽车行业对测试…

Homework 7

1.尝试建模电梯的状态图2.学校规定:一个学生可选修多门课,一门课有若干学生选修; 一个教师可讲授多门课,一门课只有一个教师讲授; 一个学生选修一门课,仅有一个成绩。 学生的属性有学号、学生姓名;教师的属性有教师编号,教师姓名;课程的属性有课程号、课程名。 要求:根据…

【Java基础】设计模式——单例设计模式

单例设计模式(Singleton Design Pattern)是一种创建型设计模式,它确保⼀个类有且只有⼀个实例,并提供一个全局访问点来访问这个唯一实例。 单例模式主要解决的是,⼀个全局使⽤的类频繁的创建和消费,从⽽提…

Colibri for Mac v2.2.0激活版:专业级无损音乐播放器

Colibri for Mac是一款专为Mac用户设计的高分辨率无损音乐播放器。它基于BASS技术构建,为用户带来极致的音频体验。Colibri支持所有流行的无损和有损音频格式,如FLAC、MP3、AAC等,确保音乐播放的清晰度和完美度。其独特的清晰比特完美播放技术…

HTML5/CSS3粒子效果进度条 超炫酷进度条动画源码

特效介绍 之前我已经分享了几款效果很不错的CSS3进度条插件,比如CSS3 Loading进度条加载动画特效、CSS3 3D进度条按钮 18款精美样式。今天我再来分享一款很有特色的HTML5/CSS3进度条应用。这款进度条插件在播放进度过程中出现粒子效果,就像一些小颗粒从…

无人直播需要什么软件系统?最新AI实景自动无人直播软件:智能化引领直播拓客新时代

随着互联网的快速发展(无人直播招商加盟:hzzxar)直播行业已经成为商家品牌推广和商品销售的热门方式。近年来,人工智能技术的飞速发展,催生了一款令人惊叹的AI实景自动无人直播软件,为商家提供了全新的直播…

【论文笔记】KAN: Kolmogorov-Arnold Networks 全新神经网络架构KAN,MLP的潜在替代者

KAN: Kolmogorov-Arnold Networks code:https://github.com/KindXiaoming/pykan Background ​ 多层感知机(MLP)是机器学习中拟合非线性函数的默认模型,在众多深度学习模型中被广泛的应用。但MLP存在很多明显的缺点:…

【数据结构】栈(Stack)和队列(Queue)

文章目录 栈一、栈的概念及结构二、栈的特点三、栈的实现1.初始化栈2.判断栈空3.入栈4.出栈5.取栈顶元素6.栈的元素个数7.销毁 队列一、队列的概念及结构二、队列的特点三、队列的实现1.初始化2.入队3.出队4.判断队空5.取队头元素6.取队尾元素 总结 栈 一、栈的概念及结构 栈…

组件化开发根组件

目录 一、组件化开发介绍 二、根组件 一、组件化开发介绍 组件化:一个页面可以拆分成一个个组件,每个组件有着自己独立的结构、样式、行为。 好处:便于维护,利于复用,提升开发效率。 二、根组件 组件分类&#xff…

韩顺平0基础学Java——第4天

p45—p71 老天鹅,居然能中断这么久,唉...学不完了要 API API:application programing interface应用程序编程接口 www.matools.com 可以理解成Python的调包...c的头文件对吧 字符型 char用单引号 String用双引号 char本质上是个整数&#xff0c…

nginx--反向代理

反向代理 指的是代理外网用户的请求到内部的指定web服务器器,并将数据返回给用户的一种方式,这是用的比较多的一种方式 模块和功能 ngx_http_proxy_module: 将客户端的请求以http协议转发至指定服务器进行处理。ngx_stream_proxy_module&…

【大数据】学习笔记

文章目录 [toc]NAT配置IP配置SecureCRT配置PropertiesTerminal Java安装环境变量配置 Hadoop安装修改配置文件hadoop-env.shyarn-env.shslavescore-site.xmlhdfs-site.xmlmapred-site.xmlyarn-site.xml 环境变量配置 IP与主机名映射关系配置hostname配置映射关系配置 关闭防火墙…

interp2函数最临近nearest测试

code clear all; close all;clc; % 假设这是我们的原始数据,一个30x60的网格,表示经度和纬度 % 这里使用随机数创建一个示例矩阵,实际应用中应当使用真实的海拔高度数据 longitude linspace(0, 180, 30); latitude linspace(-90, 90, 60);…

【隧道篇 / WAN优化】(7.4) ❀ 03. WAN优化的原理 ❀ FortiGate 防火墙

【简介】相信对WAN优化感兴趣的人都会有疑问,WAN优化真的有作用吗?如果真的有作用,那是根据什么原理呢?让我们来更深入的了解一下。 客户端和服务器端 其实很多人在一开始看到WAN优化这个词,就自然的以为上网速度太慢&…

照片生成ai漫改头像生成漫画全套教程免费(自取)

今天给大家分享一一个AI漫改头像,轻松日增1000,简单操作好上手的一个互联网新项目,哈那其实AI漫改头像也火了差不多有半年左右了, 那其实利用AI软件将真人的照片生成漫画的形象,这个看起来很简单的方法却在小红书上大…

压缩归档库-Snappy介绍

1.简介 Snappy 是一个 C 编写的压缩和解压缩库,由 Google 开发。它专为速度而设计,而不是最大压缩率或与其他压缩库的兼容性。 Snappy 通常用于需要快速压缩和解压缩的场景。 Snappy具有以下属性: 快速:压缩速度达到250 MB/秒及…

安装oh-my-zsh(命令行工具)

目录一、安装zsh、git、wget二、安装运行脚本1、curl/wget下载2、手动下载三、切换主题1、编辑配置文件2、切换主题四、安装插件1、zsh-syntax-highlighting(高亮语法错误)2、zsh-autosuggestions(自动补全)五、更多优化配置 一、安装zsh、git、wget安装oh-my-zsh的前提需要…

CH592 蓝牙透传模块

设备架构串口透传协议说明 模块通过串口和用户MCU相连,建立用户MCU 和 BLE 设备之间的双向通讯。 用户可以通过串口,使用指定的AT指令对串口波特率、BLE连接间隔,以及不同的发包间隔,模块将会有不同的数据吞吐能力。 串口默认配置为 115200bps。 模块的串口Rx一次最大可输入…