并行EVM大解析:打破性能瓶颈 开启Web3新时代

万字解读并行EVM:超越串行,如何突破区块链性能瓶颈?

性能已成为区块链行业进一步发展的瓶颈。区块链网络为个人和企业进行交易创造了一种新的、去中心化的信任基础。

以比特币为代表的第一代区块链网络以分布式记账的方式开创了去中心化的电子货币交易新模式,革命性地开创了一个新时代。以以太坊为代表的第二代区块链网络则充分发挥想象力,提出以分布式状态机的方式实现去中心化应用(dApp)。

从那时起,区块链网络开启了它自己十几年飞速发展的历史,从Web3基础设施到以DeFi、NFT、社交网络和GameFi等为代表的各种赛道,诞生了无数或技术或商业模式的创新。行业的蓬勃发展需要不断吸引新用户参与去中心化应用的生态建设,这反过来又对产品体验提出了更高的要求。

而Web3作为一种"前无古人"的新产品形态,不但要在满足用户需求上有所创新(功能性需求),还要考虑怎样在安全性和性能之间取得平衡(非功能性需求)。自诞生以来,人们提出了各种各样的解决方案试图解决性能问题。

这些解决方案大致可以分为两类:一类是链上扩容方案,如分片(sharding)和有向无环图(DAG);一类是链下扩容方案,如Plasma、闪电网络、侧链和Rollups等。但这还远远跟不上链上交易快速增长的速度。

尤其是经历了2020年DeFi Summer以及2023年年末比特币生态中铭文的持续爆发,业界迫切需要新的性能提升方案来满足"高性能、低费率"的要求。并行区块链就是在这样的背景下诞生的。

并行EVM叙事概况

并行EVM叙事标志着并行区块链领域形成了两强相争的竞争格局。以太坊对交易的处理是串行的,交易要按顺序一个接一个的执行,资源的利用率不高。如果将串行处理的方式变为并行处理将带来性能的巨大提升。

以太坊竞争对手如Solana、Aptos和Sui都是自带并行处理能力的,生态也发展的很不错,代币流通市值分别达到450亿、33亿和19亿美元,它们形成了并行非EVM阵营。面对挑战,以太坊生态也不甘示弱,纷纷站出来为EVM赋能,它们形成了并行EVM阵营。

某交易平台在其v2版本升级提案中高调宣称将成为"第一个并行EVM区块链",当前流通市值21亿美元,预后还有更大的发展。当下营销热度第一的并行EVM新公链Monad很受资本青睐,潜力也不可小视。而市值1.7亿美元、自带免费公共基础设施的L1公链Canto也宣布了自己的并行EVM升级提案。

除此之外,一众还处在早期阶段的L2项目也在通过整合多种L1链的能力提供跨生态的性能提升。除Neon做到了6900万美元流通市值外,其他项目还缺少相关数据。相信未来还会出现更多的L1和L2项目加入并行区块链战场。

不但并行EVM叙事还有很大的市场增长空间,而且并行EVM叙事所属的并行区块链板块也还有很大的市场增长空间,因此市场前景广阔。

目前L1和L2整体流通市值为7521.23亿美元,并行区块链流通市值为525.39亿美元,仅占约7%。而其中并行EVM叙事相关项目流通市值23.39亿美元,仅占并行区块链流通市值的4%。

万字解读并行EVM :超越串行,如何突破区块链性能瓶颈?

并行EVM叙事项目分类

业界一般将区块链网络分为4层结构:

  1. Layer 0(网络):区块链底层网络,处理基础的网络通信协议
  2. Layer 1(基础设施):依赖各种共识机制对交易进行验证的去中心化网络
  3. Layer 2(扩展):依赖于Layer 1的各种二层协议,旨在解决Layer 1的各种局限性,尤其是可扩展性
  4. Layer 3(应用):依赖于Layer 2或Layer 1,用于构建各种去中心化应用(dApp)

并行EVM叙事项目主要分为单体区块链和模块化区块链,单体区块链又分为L1和L2。从项目总数和几个主要赛道的发展可以看出,各并行EVM L1公链生态相比以太坊生态仍然存在很大的发展空间。

DeFi赛道有"高速低费率"的诉求,游戏赛道有"强实时交互"的诉求,二者都对执行速度有一定要求。并行EVM必然会给这些项目带来更好的用户体验,推动行业的发展进入到全新的阶段。

L1是自带并行执行能力的新公链,是高性能基础设施。L1这一派中,以Sei v2、Monad和Canto为代表的项目自行设计并行EVM,兼容以太坊生态并提供高吞吐量交易处理能力。

L2通过整合其他L1链的能力,提供跨生态合作的扩容能力,是rollup的显学。L2这一派中,Neon是Solana网络上的EVM模拟器,Eclipse利用Solana执行交易但在EVM上做结算。Lumio与Eclipse类似,只是把执行层换成了Aptos。

在上述单体区块链解决方案之外,Fuel提出了自己的模块化区块链思路。它将在第二个版本中将自己定位成以太坊rollup操作系统,提供更灵活、更彻底的模块化执行能力。

Fuel专注于执行交易,而将其余部分外包给一个或多个独立层的区块链,从而实现更灵活的组合:既可以成为L2,也可以成为L1,甚至是侧链或状态通道。目前Fuel生态有17个项目,主要集中在DeFi、NFT和基础设施三个领域。

不过只有Orally跨链预言机已投入实际应用。去中心化借贷平台Swaylend和永续合约交易平台SPARK上了测试网,其他项目还在开发中。

万字解读并行EVM :超越串行,如何突破区块链性能瓶颈?

并行EVM技术原理

要实现去中心化的交易执行,区块链网络必须履行4个职责:

  • 执行:执行和验证交易
  • 数据可用性:分发新区块到区块网络的所有节点
  • 共识机制:验证区块,达成共识
  • 结算:结算并记录交易的最终状态

并行EVM主要是对执行层的性能优化。这又分为一层网络(L1)解决方案和二层网络(L2)解决方案两种。L1的解决方案引入交易并行执行机制,让交易在虚拟机中尽量并行执行。L2的解决方案本质上是利用已经并行化的L1虚拟机实现某种程度上的"链下执行+链上结算"。

所以要理解并行EVM的技术原理,就要将其拆解开来:先理解什么是虚拟机(virtual machine)再理解什么是并行执行(parallel execution)。

虚拟机

在计算机科学中,虚拟机是指对计算机系统进行的虚拟(virtualization)或者模拟(emulation)。

虚拟机分为两种,一种叫系统虚拟机(system virtual machine),可以将一台物理机虚拟化为多台机器,运行多个操作系统,从而提高资源利用率。另一种叫进程虚拟机(process virtual machine),为某些高级编程语言提供抽象,让使用这种语言编写的计算机程序以一种平台无关的方式运行在不同平台上。

JVM就是一种为Java编程语言设计的进程虚拟机。Java语言编写的程序首先被编译成Java字节码(一种中间状态的二进制代码),Java字节码由JVM解释执行:JVM将字节码送给解释器,由解释器翻译成不同机器上的机器码,然后在机器上运行。

区块链虚拟机是进程虚拟机的一种。在区块链的语境下,虚拟机是指对分布式状态机进行的虚拟,用于分布式地执行合约,运行dApp。类比JVM,EVM就是一种为Solidity语言设计的进程虚拟机,智能合约首先被编译成opcode字节码,然后由EVM解释执行。

以太坊之外的新兴公链在实现自己的虚拟机时,更多采用的是基于WASM或eBPF字节码的虚拟机。WASM是一种体积小、加载快、可移植且基于沙盒安全机制的字节码格式,开发人员可以使用多种编程语言(C、C++、Rust、Go、Python、Java甚至TypeScript等)编写智能合约,然后编译成WASM字节码并执行。某公链上执行的智能合约正是采用了这一字节码格式。

eBPF前身是BPF(Berkeley Packet Filter,伯克利包过滤器),原本是用于网络数据包的高效过滤,后经过演化形成了eBPF,提供更丰富的指令集。

它是一项允许在不改动源码的情况下对操作系统内核进行动态干预和修改其行为的革命性技术。后来这项技术从内核中走出来,发展出了用户态eBPF运行时,其具有高性能、安全和可移植性。在Solana上执行的智能合约都会编译成eBPF字节码并在其区块链网络上运行。

而其他的L1公链中,Aptos和Sui使用Move智能合约编程语言,编译成特有的字节码在Move虚拟机上执行。Monad则自行设计了兼容EVM opcode字节码(Shanghai fork)的虚拟机。

万字解读并行EVM :超越串行,如何突破区块链性能瓶颈?

并行执行机制

并行执行是这样一种技术:

  1. 能够发挥多核处理器的优势同时处理多个任务,增大系统吞吐量;
  2. 确保得到的交易结果与按顺序串行执行交易时完全相同。

区块链网络常用TPS(每秒处理的交易数量)作为衡量处理速度的技术指标。并行执行的机制比较复杂,也很考验开发人员的技术水平,要解释清楚并不容易。下面从一个"银行"的例子入手,解释什么是并行执行。

首先,什么是串行执行?

情况1:如果我们把系统看成一家银行,把处理任务的CPU看成柜台,那么串行执行任务就好比这家银行只有一个柜台受理业务。此时来银行办业务的客户(任务)只能排成一条长龙,挨个办业务。对于每个客户,柜台工作人员都要重复同样的动作(执行指令)来为客户办理业务。没有轮到自己时客户只能等待,这就造成交易时间的延长。

那么什么是并行执行呢?

情况2:此时银行看到人满为患,就多开了几个柜台来处理业务,有4个柜员在柜台同时处理业务,速度就比原来快了约4倍,那么客户排队的时间大约也减少到了原来的1/4,银行办理业务的速度就提升。

如果不做保护,两个人同时给另一个人转账会发生什么错误?

情况3:A、B和C三个人,他们的账户上分别有2 ETH、1 ETH和0 ETH,现在A和B分别要给C转账0.5 ETH。在一个交易串行执行的系统中,不会出现任何问题(左箭头"<="表示读取账本,右箭头"=>"表示写入账本,下同):

A.transfer(C, 0.5):

  1. A <= 2
  2. A => 1.5
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 5
  • 分享
评论
0/400
解码先生vip
· 07-30 10:12
并行才是未来
回复0
gas_fee_traumavip
· 07-30 10:12
还得看 gas 费
回复0
HodlOrRegretvip
· 07-30 10:11
前路光明坎坷多
回复0
闪电出击小王子vip
· 07-30 10:07
并行确实是未来
回复0
Gas_Guzzlervip
· 07-30 10:03
必看好文非常干货
回复0
交易,随时随地
qrCode
扫码下载 Gate APP
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)