🎉 #Gate Alpha 第三届积分狂欢节 & ES Launchpool# 联合推广任务上线!
本次活动总奖池:1,250 枚 ES
任务目标:推广 Eclipse($ES)Launchpool 和 Alpha 第11期 $ES 专场
📄 详情参考:
Launchpool 公告:https://www.gate.com/zh/announcements/article/46134
Alpha 第11期公告:https://www.gate.com/zh/announcements/article/46137
🧩【任务内容】
请围绕 Launchpool 和 Alpha 第11期 活动进行内容创作,并晒出参与截图。
📸【参与方式】
1️⃣ 带上Tag #Gate Alpha 第三届积分狂欢节 & ES Launchpool# 发帖
2️⃣ 晒出以下任一截图:
Launchpool 质押截图(BTC / ETH / ES)
Alpha 交易页面截图(交易 ES)
3️⃣ 发布图文内容,可参考以下方向(≥60字):
简介 ES/Eclipse 项目亮点、代币机制等基本信息
分享你对 ES 项目的观点、前景判断、挖矿体验等
分析 Launchpool 挖矿 或 Alpha 积分玩法的策略和收益对比
🎁【奖励说明】
评选内容质量最优的 10 位 Launchpool/Gate
EVM并行化:提升以太坊性能的突破口
EVM并行化:解决以太坊性能瓶颈的关键
EVM作为以太坊的执行引擎和智能合约运行环境,是其最核心的组件之一。为了确保智能合约在不同节点上都能得到相同结果,满足一致性要求,虚拟机技术成为了最佳选择。EVM能在不同操作系统和设备上以相同方式运行智能合约,保证了跨平台兼容性。
智能合约在上链前会被编译为EVM字节码。EVM执行合约时,按顺序读取这些字节码,每条指令都有相应的Gas成本。EVM会追踪每条指令执行过程中的Gas消耗,消耗量取决于操作复杂度。
作为核心执行引擎,EVM采用串行方式处理交易,所有交易在单一队列中排队并按确定顺序执行。这种设计简单易维护,但随着用户群体扩大和技术发展,其性能瓶颈日益凸显,尤其在Layer2中表现明显。
对于Layer2的关键组件Sequencer来说,如果配套模块效率足够高,最终瓶颈将取决于Sequencer本身的效率。有团队通过极致优化,使Sequencer每秒可执行约2000多笔ERC-20转账。但对于更复杂的交易,TPS势必大幅下降。因此,交易处理的并行化成为未来的必然趋势。
以太坊交易执行的核心组件
除EVM外,另一个与交易执行密切相关的核心组件是stateDB,用于管理以太坊的账户状态和数据存储。以太坊使用Merkle Patricia Trie树状结构作为数据库索引。每次交易执行都会改变stateDB中的某些数据,这些变更最终反映在全局状态树中。
stateDB负责维护所有以太坊账户状态,包括EOA账户和合约账户,存储账户余额、智能合约代码等数据。交易执行过程中,stateDB会读写相应账户数据。交易执行结束后,stateDB将新状态提交到底层数据库中进行持久化。
总的来说,EVM负责解释和执行智能合约指令,根据计算结果变更区块链状态,而stateDB则作为全局状态存储,管理所有账户和合约的状态变化。两者协作构建了以太坊的交易执行环境。
串行执行的局限性
以太坊的交易分为EOA转账和合约交易两类。EOA转账是最简单的交易类型,处理速度快,gas费低。而合约交易涉及智能合约的调用与执行,EVM需要逐条解释和执行合约中的字节码指令,复杂度和资源消耗都更高。
在串行执行模式下,区块内的交易按先后顺序逐笔处理。每笔交易都有独立的EVM实例,但所有交易共用同一个stateDB。EVM在执行过程中需要不断与stateDB交互,读取数据并写回变更后的结果。
这种串行执行模式的瓶颈显而易见:交易必须排队执行,如果出现耗时较长的智能合约交易,其他交易只能等待,无法充分利用硬件资源,效率受到较大限制。
EVM的多线程并行优化
为了突破串行执行的限制,业界提出了EVM的多线程并行优化方案。这种方案类似于多个柜台同时服务的银行,可以同时处理多笔交易,显著提升效率。但并行执行面临的主要挑战是状态冲突问题,需要采取特别措施来应对。
某项目对EVM的并行优化思路如下:
设置多个线程同时处理不同交易,线程间互不干扰。
为每个线程分配独立的临时状态数据库(pending-stateDB)。各线程执行交易时,将状态变化暂时记录在pending-stateDB中,而非直接修改全局stateDB。
区块内所有交易执行完毕后,将各pending-stateDB中的状态变更依次同步到全局stateDB。如无冲突,可顺利合并记录。
该方案对读写操作进行了优化:
读操作:先检查Pending-state的ReadSet,如有所需数据直接读取;否则从上一区块的全局stateDB读取历史状态。
写操作:所有修改先记录到Pending-state的WriteSet,待交易执行完成后再尝试合并到全局stateDB。
为解决状态冲突问题,引入了冲突检测机制:
所有交易执行完成后,多个pending-stateDB中的变更记录合并到全局stateDB。合并成功后,最终状态提交到全局状态树,生成新的状态根。
研究显示,在低冲突工作负载中,并行执行的TPS相比传统串行执行提升了3-5倍。在高冲突工作负载中,理论上充分优化后甚至可达60倍提升。
总结
EVM多线程并行优化方案通过为每个交易分配临时状态库,并在不同线程中并行执行交易,显著提高了交易处理能力。通过优化读写操作和引入冲突检测机制,在保证状态一致性的前提下实现了交易的大规模并行化,解决了传统串行执行模式的性能瓶颈。这为以太坊Rollup的未来发展奠定了重要基础。
未来还可进一步探索如何优化存储效率、应对高冲突情况,以及借助GPU进行优化等方向,以进一步提升EVM的性能。