EVM并行化突破:多线程执行提升交易处理能力

robot
摘要生成中

EVM的并行化之路:从串行到多线程执行

众所周知,EVM是以太坊的核心执行引擎,负责智能合约的运行。为了确保不同节点上的智能合约能够得到相同的执行结果,EVM提供了一个统一的虚拟环境,类似于Java虚拟机JVM。

智能合约在部署到区块链上时,会先被编译成EVM字节码。EVM在执行合约时,会按顺序读取这些字节码,每条指令都有相应的Gas成本。EVM会追踪每条指令执行时的Gas消耗,消耗量取决于操作的复杂度。

以Reddio为例,阐述并行EVM的优化之路

传统的EVM采用串行方式处理交易,所有交易在单一队列中排队按顺序执行。这种设计简单易维护,但随着用户群体增长和对TPS要求提高,串行执行的性能瓶颈日益凸显,尤其在Layer 2解决方案中更为明显。

以Reddio为例,阐述并行EVM的优化之路

除EVM外,以太坊交易执行的另一个核心组件是stateDB,用于管理账户状态和数据存储。EVM每次执行交易都会更新stateDB中的数据,这些变更最终反映在全局状态树中。

在串行执行模式下,EVM和stateDB协作处理交易的过程如下:

  1. 一个区块内的交易按顺序逐笔处理
  2. 每笔交易使用独立的EVM实例,但共用同一个stateDB
  3. EVM执行过程中不断与stateDB交互,读取和写入数据
  4. 所有交易处理完毕后,将stateDB中的变更提交到全局状态树

以Reddio为例,阐述并行EVM的优化之路

这种串行模式的主要问题是,复杂的智能合约交易会阻塞其他交易,无法充分利用硬件资源。

为解决这一问题,一些项目开始探索EVM的并行优化方案。以某Layer 2项目为例,其核心思路是为每个线程分配一个临时状态数据库(pending-stateDB):

  1. 多线程并行执行不同交易
  2. 每个线程使用独立的pending-stateDB记录状态变更
  3. 所有交易执行完毕后,将pending-stateDB中的变更同步到全局stateDB

以Reddio为例,阐述并行EVM的优化之路

该方案对读写操作做了特殊处理:

  • 读操作优先检查pending-stateDB,若无数据则读取全局stateDB
  • 写操作暂存在pending-stateDB中,不直接修改全局stateDB

以Reddio为例,阐述并行EVM的优化之路

为避免状态冲突,该方案引入了冲突检测机制:

  • 监测不同交易的读写集是否有重叠
  • 发现冲突时标记相关交易需要重新执行

以Reddio为例,阐述并行EVM的优化之路

最后,将多个pending-stateDB的变更合并到全局stateDB,生成新的状态根。

以Reddio为例,阐述并行EVM的优化之路

这种并行优化方案在低冲突工作负载下,可将TPS提升3-5倍。在高冲突情况下,理论上可达到60倍提升。

以Reddio为例,阐述并行EVM的优化之路

总的来说,EVM的并行化是提升以太坊及其Layer 2性能的重要方向。通过多线程并行执行和临时状态库等技术,可以在保证一致性的前提下,大幅提高交易处理能力。未来还可以通过进一步优化存储效率、改进冲突处理策略等手段,进一步提升EVM的性能。

以Reddio为例,阐述并行EVM的优化之路

以Reddio为例,阐述并行EVM的优化之路

以Reddio为例,阐述并行EVM的优化之路

ETH-3.58%
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 5
  • 分享
评论
0/400
FlatTaxvip
· 07-24 20:11
60倍?吹牛不上税
回复0
光速退群大师vip
· 07-22 02:02
不错嘛 能把TPS翻个60倍
回复0
NFT深呼吸vip
· 07-22 00:27
之后大饼王者归来
回复0
反向指标哥vip
· 07-22 00:11
看涨就是顶,看跌就是底
回复0
SerumDegenvip
· 07-22 00:10
只是另一个诱高以太坊的药水,老实说……先给我看看真实的交易每秒数
查看原文回复0
交易,随时随地
qrCode
扫码下载 Gate APP
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)