EVM并行化:提升以太坊性能的突破口

robot
摘要生成中

EVM并行化:解决以太坊性能瓶颈的关键

EVM作为以太坊的执行引擎和智能合约运行环境,是其最核心的组件之一。为了确保智能合约在不同节点上都能得到相同结果,满足一致性要求,虚拟机技术成为了最佳选择。EVM能在不同操作系统和设备上以相同方式运行智能合约,保证了跨平台兼容性。

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

作为核心执行引擎,EVM采用串行方式处理交易,所有交易在单一队列中排队并按确定顺序执行。这种设计简单易维护,但随着用户群体扩大和技术发展,其性能瓶颈日益凸显,尤其在Layer2中表现明显。

对于Layer2的关键组件Sequencer来说,如果配套模块效率足够高,最终瓶颈将取决于Sequencer本身的效率。有团队通过极致优化,使Sequencer每秒可执行约2000多笔ERC-20转账。但对于更复杂的交易,TPS势必大幅下降。因此,交易处理的并行化成为未来的必然趋势。

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

以太坊交易执行的核心组件

除EVM外,另一个与交易执行密切相关的核心组件是stateDB,用于管理以太坊的账户状态和数据存储。以太坊使用Merkle Patricia Trie树状结构作为数据库索引。每次交易执行都会改变stateDB中的某些数据,这些变更最终反映在全局状态树中。

stateDB负责维护所有以太坊账户状态,包括EOA账户和合约账户,存储账户余额、智能合约代码等数据。交易执行过程中,stateDB会读写相应账户数据。交易执行结束后,stateDB将新状态提交到底层数据库中进行持久化。

总的来说,EVM负责解释和执行智能合约指令,根据计算结果变更区块链状态,而stateDB则作为全局状态存储,管理所有账户和合约的状态变化。两者协作构建了以太坊的交易执行环境。

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

串行执行的局限性

以太坊的交易分为EOA转账和合约交易两类。EOA转账是最简单的交易类型,处理速度快,gas费低。而合约交易涉及智能合约的调用与执行,EVM需要逐条解释和执行合约中的字节码指令,复杂度和资源消耗都更高。

在串行执行模式下,区块内的交易按先后顺序逐笔处理。每笔交易都有独立的EVM实例,但所有交易共用同一个stateDB。EVM在执行过程中需要不断与stateDB交互,读取数据并写回变更后的结果。

这种串行执行模式的瓶颈显而易见:交易必须排队执行,如果出现耗时较长的智能合约交易,其他交易只能等待,无法充分利用硬件资源,效率受到较大限制。

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

EVM的多线程并行优化

为了突破串行执行的限制,业界提出了EVM的多线程并行优化方案。这种方案类似于多个柜台同时服务的银行,可以同时处理多笔交易,显著提升效率。但并行执行面临的主要挑战是状态冲突问题,需要采取特别措施来应对。

某项目对EVM的并行优化思路如下:

  1. 设置多个线程同时处理不同交易,线程间互不干扰。

  2. 为每个线程分配独立的临时状态数据库(pending-stateDB)。各线程执行交易时,将状态变化暂时记录在pending-stateDB中,而非直接修改全局stateDB。

  3. 区块内所有交易执行完毕后,将各pending-stateDB中的状态变更依次同步到全局stateDB。如无冲突,可顺利合并记录。

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

该方案对读写操作进行了优化:

  • 读操作:先检查Pending-state的ReadSet,如有所需数据直接读取;否则从上一区块的全局stateDB读取历史状态。

  • 写操作:所有修改先记录到Pending-state的WriteSet,待交易执行完成后再尝试合并到全局stateDB。

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

为解决状态冲突问题,引入了冲突检测机制:

  • 监测不同交易的ReadSet和WriteSet,发现多个交易尝试读写相同状态项时视为冲突。
  • 标记冲突交易为需要重新执行。

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

所有交易执行完成后,多个pending-stateDB中的变更记录合并到全局stateDB。合并成功后,最终状态提交到全局状态树,生成新的状态根。

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

研究显示,在低冲突工作负载中,并行执行的TPS相比传统串行执行提升了3-5倍。在高冲突工作负载中,理论上充分优化后甚至可达60倍提升。

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

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

总结

EVM多线程并行优化方案通过为每个交易分配临时状态库,并在不同线程中并行执行交易,显著提高了交易处理能力。通过优化读写操作和引入冲突检测机制,在保证状态一致性的前提下实现了交易的大规模并行化,解决了传统串行执行模式的性能瓶颈。这为以太坊Rollup的未来发展奠定了重要基础。

未来还可进一步探索如何优化存储效率、应对高冲突情况,以及借助GPU进行优化等方向,以进一步提升EVM的性能。

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

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

此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 6
  • 分享
评论
0/400
down_only_larryvip
· 6小时前
涨啦 V神终于开窍了
回复0
BlockTalkvip
· 6小时前
爱看不看 反正tps上去了
回复0
LiquidityOraclevip
· 6小时前
又吹上天惹
回复0
梭哈一姐vip
· 6小时前
也就是说转账更快了?
回复0
ProveMyZKvip
· 6小时前
这波性能优化属于是顶级玩家了
回复0
智能合约补漏工vip
· 7小时前
直接看扩展性风险 锁机制设计太naive
回复0
交易,随时随地
qrCode
扫码下载 Gate APP
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)