EVM并行化:从高性能Layer1到EVM兼容方案的技术演进

EVM:以太坊的核心

EVM(以太坊虚拟机)是以太坊的核心,负责运行智能合约和处理交易。

虚拟机通常用于真实计算机的虚拟化,由虚拟机管理程序或整个操作系统实例进行虚拟化。它们必须提供实际硬件、系统调用和其他内核功能的软件抽象。

EVM在一个更有限的领域中运行:它只是一个计算引擎,提供了计算和存储的抽象,类似于Java虚拟机(JVM)规范。从高层次来看,JVM旨在提供与底层主机操作系统或硬件无关的运行时环境,实现跨系统的兼容性。同样,EVM执行自己的字节码指令集,这些指令集通常由Solidity编译而成。

EVM是一个准图灵完备的状态机,"准"是因为所有执行步骤都会消耗有限的资源Gas,因此任何给定的智能合约执行都会限制在有限的计算步数内,避免了执行过程可能的死循环,从而导致整个以太坊平台停止的情况。

EVM没有调度功能,以太坊的执行模块从区块中取出交易,EVM负责依次执行。执行过程中会修改最新的世界状态,一笔交易执行完成后进行状态累加,到达区块完成后的最新世界状态。下一区块的执行又严格依赖上一个区块执行后的世界状态,所以以太坊的交易线性执行过程无法很好地进行并行执行优化。

从这个意义上说,以太坊协议约定交易按照顺序执行。虽然顺序执行确保了交易和智能合约能够以确定性顺序执行,保障了安全性,但在面临高负载的情况下,可能会导致网络拥堵和延迟,这也是为什么以太坊有极大的性能瓶颈,需要Layer2 Rollup扩容的原因。

并行EVM:高性能 Layer1 的换心术

高性能Layer1的并行之道

大多数高性能Layer1都是基于以太坊不能并行处理的缺陷去设计自己的优化方案,这里只聊执行层的优化,也就是虚拟机和并行执行。

虚拟机

EVM设计成一台256位的虚拟机,目的是为了更易于处理以太坊的哈希算法,它会明确产生256位的输出。然而,实际运行EVM的计算机则需要把256位的字节映射到本地架构来执行智能合约,从而使得整个系统变得非常低效和不实用。因此从虚拟机的选择上,高性能Layer1更多采用的是基于WASM,eBPF字节码或Move字节码的虚拟机,而非EVM。

WASM是一种体积小、加载快、可移植且基于沙盒安全机制的字节码格式,开发人员可以使用多种编程语言编写智能合约,然后编译成WASM字节码并执行。WASM已经被许多区块链项目接纳为标准,包括EOS,Dfinity,Polkadot,Cosmos,Near等,以太坊未来也会集成WASM,从而保证以太坊的执行层更加高效、简单,适合作为完全的去中心化计算平台。

eBPF前身是BPF(Berkeley Packet Filter,伯克利包过滤器),原本是用于网络数据包的高效过滤,后经过演化形成了eBPF,提供更丰富的指令集,允许在不改动源码的情况下对操作系统内核进行动态干预和修改其行为。后来这项技术从内核中走出来,发展出了用户态eBPF运行时,其具有高性能、安全和可移植性。某区块链上执行的智能合约都会编译成SBF(基于eBPF)字节码并在其网络上运行。

Move是一种新的智能合约编程语言,注重灵活性、安全和可验证性。Move语言旨在解决资产和交易中的安全性问题,使得资产和交易能够被严格定义和控制。Move的字节码验证器是一个静态分析工具,分析Move字节码并确定是否遵守所需的类型、内存和资源安全规则,不需要在智能合约级别实现并在运行时检查。某些新兴公链继承了Move或通过自身定制版本的Move来编写其智能合约。

并行EVM:高性能 Layer1 的换心术

并行执行

区块链中的并行执行意味着同时处理不相关的交易。把不相关的交易看作互不影响的事件。例如,如果两个人在不同的交易平台上交易代币,他们的交易可以同时处理。但是,如果它们在同一平台上交易,则可能需要按照特定的顺序执行交易。

实现并行执行的主要挑战是确定哪些交易是不相关的,哪些是独立的,大多数高性能Layer1依赖于两种方法:状态访问方法和乐观并行模型。

状态访问方法需要预先知道每个交易可以访问区块链状态的哪一部分,从而分析出哪些交易是独立的。代表方案是某些新兴公链。

在某些公链中,程序(智能合约)是无状态的,因为它们不能自行访问(读取或写入)在整个交易过程中持续存在的任何状态,要访问或保持状态,程序需要使用帐户。每个交易必须指定在交易执行期间将访问哪些帐户,这样交易处理运行时可以调度非重叠交易并行执行,同时保证数据一致性。

在某些Move实现中,每个智能合约都是一个模块,由函数和结构定义组成。结构在函数中实例化,可以通过函数调用传递给其他模块。运行时存储的结构实例作为对象,存在三种不同类型的对象,分别是拥有者对象,共享对象和不可更改对象。并行化策略与前述相似,交易也需要指定操作哪些对象。

乐观并行模型在所有交易都是独立的假设下运行,只是回顾性地验证这一假设并在必要时进行调整。代表方案是某些新兴公链。

某公链使用Block-STM(区块软件事务内存)的方法来应用乐观并行执行。在Block-STM中,交易首先在区块内按照一定的顺序进行设置,然后在不同的处理线程之间进行拆分,以便同时执行。在处理这些交易时,系统会跟踪每个交易更改的内存位置。在每一轮处理之后,系统检查所有的交易结果。如果它发现某个交易触及了由早期交易更改的内存位置,则擦除其结果并再次运行。这一过程一直持续到区块中的每个交易都被处理完毕。

并行EVM:高性能 Layer1 的换心术

并行EVM

并行EVM(Parallel EVM)早在2021年就被提起,那时候指的还是支持同时处理多个交易的EVM,旨在改进现有EVM性能和效率,代表方案有某些公链基于Block-STM实现的并行EVM。

但在2023年底,一些行业专家不约而同在展望2024年趋势时又提到了并行EVM,带火了一波采用了并行执行技术的EVM兼容Layer1,包括一些新兴项目。

现如今,某些EVM兼容方案、以太坊SVM(Solana虚拟机)的Layer2 Rollup、以太坊Move虚拟机的Layer2 Rollup、模块化执行层Layer1都纷纷贴上了并行EVM的标签,令人眼花缭乱。

我认为合理的能定义成并行EVM的只有以下三类:

  1. 没有采用并行执行技术的EVM兼容的Layer1的并行执行升级,例如某些主流公链;

  2. 采用了并行执行技术的EVM兼容的Layer1,例如一些新兴项目;

  3. 采用了并行执行技术的非EVM兼容的Layer1的EVM兼容方案,例如某些跨链项目。

并行EVM:高性能 Layer1 的换心术

某些主流公链作为最主流的兼容EVM的Layer1自不必多说,这里简单介绍下一些新兴项目和跨链方案。

某些新兴公链是采用PoS机制的兼容EVM的高性能Layer1,旨在通过并行执行显着增强可扩展性和交易速度。它们允许在区块内并行执行交易以提高效率。通常使用乐观并行模型,在上一步的执行完成之前就开始执行新交易。为了应对不正确的结果,会跟踪输入/输出并重新执行不一致的交易。静态代码解析器可以预测依赖关系,避免无效的并行性,并在不确定时恢复到简单模式。这种并行执行增加了吞吐量,同时减少了交易失败的可能性。

某些跨链方案是开发的解决方案,用于在其他公链之上执行EVM交易。实际上是一个智能合约,该合约内实现了一个EVM解释器,编译为特定字节码。内部实现了一套以太坊交易模型和账户模型,用户只需要支付EVM GAS费用即可发送交易。原生网络的费用是由代理支付的。某些公链强制要求交易提供账户列表,包装交易也不例外,所以代理的职责包括生成这个账户列表,同时也获得了原生的交易并行执行能力。

这里补充一点,类似将EVM作为智能合约运行以实现EVM兼容的方案还有其他一些跨链项目,理论上某些新兴公链上也可以采用此方案来实现无侵入性的EVM兼容,有项目正在做这样的工作。某些项目是一个模块化框架,用于在任何分布式环境中构建和部署基于Move的基础设施、应用程序和区块链。其中某些模块可以将EVM操作码无缝转换为Move操作码,这意味着Solidity项目可以利用Move的性能和安全优势,而无需一行Move代码。

EVM兼容使得开发者可以轻松将他们的以太坊应用迁移到链上,而无需进行大规模修改,是一个很好建设新兴公链生态的方向。

并行EVM:高性能 Layer1 的换心术

总结

区块链的并行技术已经是个老生常谈的话题了,叙事每隔一段时间就会抬一次头,但是目前主要都是对以某些公链的Block-STM机制为代表的乐观执行模型的改造和模仿,没有实质性的突破,所以热度难以持续。

展望未来,还会有更多的新兴的Layer1项目加入并行EVM的竞争,而对于一些旧的Layer1也会实现EVM并行升级或EVM兼容的方案,两个方向殊途同归,还会诞生更多与性能提升有关的新叙事。

不过相比于高性能EVM的叙事,我还是更希望区块链能百花齐放,出现类似WASM,SVM及Move VM的叙事。

并行EVM:高性能 Layer1 的换心术

并行EVM:高性能 Layer1 的换心术

此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 7
  • 分享
评论
0/400
MEV之眼vip
· 7小时前
全靠Gas榨干钱包,付费享受折磨
回复0
薅毛自由职业者vip
· 7小时前
这gas哪儿给薅啊
回复0
链上资深小透明vip
· 7小时前
玩区块链不看指标 就看代码和创新
回复0
清醒的梦游者vip
· 7小时前
开gas就完事了
回复0
幻想破灭预言家vip
· 7小时前
还讨论什么JVM啊 Gas费都吃人了
回复0
GmGmNoGnvip
· 7小时前
字节码也太秀了8
回复0
MemeCoinSavanvip
· 7小时前
evm基本上是给degens用的java,老实说
查看原文回复0
交易,随时随地
qrCode
扫码下载 Gate APP
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)