🎉 Gate xStocks 交易开启啦,现货、合约、Alpha齐上线!
📝 在Gate广场发帖,晒出你的交易体验或精彩截图,瓜分$1,000大奖池!
🎁 广场优质创作者5名,每人独享$100合约体验券!
🎉 帖文同步分享到X(推特),浏览量前十再得$50奖励!
参与方式:
1️⃣ 关注 @Gate广场_Official
2️⃣ 带 #Gate xStocks 交易体验# ,原创发帖(不少于20字,仅用活动标签)
3️⃣ 若分享到推特,请将链接提交表单:https://www.gate.com/questionnaire/6854
注:表单可多次提交,发布更多帖文可提升获奖机会!
📅 7月3日16:00—7月9日24:00(UTC+8)
详情:https://www.gate.com/announcements/article/45926
每一条体验,都有机会赢取大奖!快在Gate广场show出你的操作吧!
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的性能。