Cointime

扫码下载App
iOS & Android

一文读懂EVM编译技术及其过程:以太坊技术生态稳定运行的关键

随着区块链技术的不断进步,以太坊虚拟机(Ethereum Virtual Machine,简称EVM)的性能已成为广泛关注的焦点。EVM是以太坊生态系统的核心,负责执行所有交易和智能合约,从而维护网络的全局状态,即所谓的世界状态(World State)。交易类型多样,从简单的以太币转账到智能合约的部署和执行都包括在内。

智能合约是在EVM上运行的程序,它们执行复杂的业务逻辑,通常使用Solidity这种高级语言编写。编写完成的Solidity智能合约代码需要被编译成EVM可以直接执行的字节码,然后通过交易发送到以太坊网络上进行部署。一旦部署,用户即可调用合约函数来执行预定的逻辑。

以太坊EVM概念图

在这个过程中,EVM的编译技术是十分关键的,它会影响以太坊网络的整体性能。本文将对EVM编译过程的一些关键点进行深入探析,希望为读者提供对这一关键技术更加深入的理解。

Ethereum虚拟机(EVM)的编译技术一直是研究和开发的焦点。它关乎整个区块链网络的性能和安全性。当谈到EVM编译方式时,常见的问题是:它更偏向于哪种编译方式?是即时编译(JIT)还是预先编译(AOT)?JIT编译器是一种在程序运行时进行编译的编译器。它不是在程序开始运行之前将所有代码转换为机器代码,而是在程序执行过程中,当某部分代码需要执行时,才将其编译为机器代码。AOT编译器是在程序运行之前,将源代码完全编译为机器代码的编译器。这意味着在程序开始运行时,所有的代码都已经被转换为可以直接执行的机器代码。

从单个合约的角度看,EVM似乎更偏向于AOT。合约在运行过程中只有完全被编译和完全被解释这两种模式。这意味着不存在运行过程中部分代码(例如经常执行的热路径)被编译的情况。但如果从整体上考虑,常用的合约会被预编译,而其他的则采用解释器的方式运行。这种模式在某种程度上与JIT有些相似。那么为什么选择这种实现方式呢?主要原因是这种方式在实现和维护上都非常方便,并且具有很高的性能上限。

另外,考虑到EVM的evmone已经实现了所有操作码的语义,开发者只需稍作修改,将这些操作码连接起来,然后交给高度优化的C++编译器进行编译。这种方法的灵感来自于一个古老的理论计算机科学思想,即通过结合解释器和源代码直接生成编译后的代码,这也被称为“first Futamura projection”。总的来说,所选策略旨在确保项目的效率、稳定性和可维护性,同时也充分考虑了未来的性能提升空间。

EVM编译技术可以极大提升其执行效率,EVM执行效率的增加能够使得节点在同等硬件条件下,以更快速度完成更多计算任务。这理论上能够增加gas limit,因为每个区块能处理的交易数增多,网络吞吐量随之提升。同时,较高的gas limit支持执行更复杂的智能合约,并可能缩短交易确认时间。

然而,提升gas limit并不是没有风险的。我们必须权衡编译技术本身的资源消耗。目前的Gas模型尚未充分反映编译过程的资源消耗。简单放宽Gas限制有可能被恶意利用。如果编译优化后的代码执行效率提升不均匀,或者编译过程本身代价高昂,盲目增加gas limit可能会导致安全风险,如DoS攻击。因此,任何增加gas limit的措施都必须确保不会危及网络的安全性和稳定性。

对此,一个可能的方案是找到统一的方法量化编译成本。但由于合约编译算法的复杂度不一,量化编译成本变得不易。一个更为合理的策略是在EVM中加入编译预处理步骤,允许节点统计编译时的Gas消耗,准确地记录实际成本。此外,一律强制编译所有合约并不现实,因为这样做会导致过度的计算和存储资源消耗。实际上,仅有部分合约频繁使用,而大部分很少被调用。更高效的做法是区分“热”合约与“冷”合约,仅对那些活跃的热合约进行编译。执行客户端可以根据合约近期的Gas使用情况,自行决定是否进行编译或是清除编译缓存。如果攻击者引发的计算成本低于用户实际支付的Gas费,这种攻击就在经济上成立。

EVM公链生态数据图

总体来说,EVM编译技术的改进对Gas模型的设计产生了深远影响。这需要从经济激励、编译算法复杂度和客户端实施等多方面进行综合考量和平衡。完全透明的编译技术可能难以实现,但进一步研究这种设计思路是有价值的,以便编译技术能够自然融入,不需频繁调整协议。EVM编译技术的进步应当推动Gas模型的持续优化,并确保系统的安全与高效运行。

随着以太坊虚拟机(EVM)编译技术的改进,我们可以预见到几个关键的受益方向。

1、安全性 - Fuzzing/Testing可以更快:

Fuzzing 是一种自动化的软件测试技术,它通过自动生成并注入大量的随机数据到程序中,监控异常如崩溃或失败来检测安全漏洞。当EVM编译技术提升,它可以加速fuzzing的过程,因为编译优化后的EVM代码执行更快,可以在较短的时间内进行更多的测试迭代。 

 Testing 指的是智能合约的各类测试过程,包括单元测试和集成测试等。编译技术的改进使得智能合约的执行效率提高,测试框架可以在更短时间内完成对合约的调用和验证。

2、高性能 App-specific Rollup:

  Rollup 是一种区块链扩容解决方案,它将多个交易打包成一个或几个交易,并在链外处理后将结果提交到主链。一个App-specific Rollup 是特指为单一应用设计的Rollup,例如只为一个去中心化交易所(DEX)服务。在这样的环境中,编译技术可以针对特定应用进行优化,提升执行效率,不必担心因编译器漏洞(compiler bomb)导致的性能问题,也无需处理不活跃(冷)合约可能带来的负担。

3、更高效的RPC节点:

  RPC(Remote Procedure Call)节点 提供了一个接口供外界与区块链网络交互,例如执行eth_call来读取智能合约状态。EVM编译技术的优化可以极大地提升RPC节点处理请求的能力,一个优化后的节点在处理读操作时,可能拥有原来100个未优化节点的处理能力。这意味着网络能够以更低的成本提供更高的吞吐量。

4、计算密集型(Compute-intensive)的DApp成为可能:

  计算密集型DApp 指的是那些需要大量计算资源来执行操作的去中心化应用,如复杂的金融模型、科学计算或图形处理。当前,这类应用由于Gas成本和计算能力的限制而难以实现。随着EVM编译技术的改进,可以实现更有效的代码执行,从而降低每个计算步骤的Gas成本,并提升合约执行的速度。这使得更为复杂和计算密集型的应用得以在区块链上运行,开启新的应用场景和业务模型。

通过这些扩展,我们可以看到EVM编译技术不仅能够提高现有应用的效率和安全性,也将可能推动新一代计算密集型应用的发展。随着区块链技术的进步,未来的区块链网络可能会变得更加高效和多样化,支持各种各样的去中心化应用。

以太坊虚拟机(EVM)的性能瓶颈是否存在,取决于使用场景。在第一层(L1)的实时同步任务中,EVM并不构成瓶颈,因为同步过程中的计算需求与网络的其他部分相比尚在可控范围内。然而,对于旨在极大提高处理量的第二层(L2)和第三层(L3)扩展解决方案来说,EVM的性能就显得尤为关键了。

对高性能执行客户端,如Reth的性能分析表明,如果运行在配置较高的服务器上(例如配备了大量内存和NVMe SSD),EVM解释器在历史数据同步过程中已经消耗了25%到33%的计算资源。这个比例仅略低于输入输出(IO)操作的资源消耗。对于那些力图实现比L1高出几个数量级的吞吐量的L2解决方案(如MegaETH项目),即使现在EVM只占5%的开销,也可能很快变成性能瓶颈。这是因为随着吞吐量的增加,原本占比较小的开销也会相对放大,限制整个系统的性能提升。为此,MegaETH考虑到了每一个可能的瓶颈,并为每一个瓶颈设计了相应的解决方案,其中EVM的编译优化只是众多措施中的一个。

零知识EVM(zkEVM)的代表性项目Polygon

至于零知识EVM(zkEVM),其性能瓶颈可能出现在追踪生成(tracegen)环节。假设我们的本地代码执行效率比标准的EVM解释器快100倍,我们可以先对所有交易进行快速执行,将交易分割成若干段,并获取每个阶段结束时的中间状态(intermediate states)。最后,我们可以将每一段的追踪生成证明任务分配给zkEVM,转换成可以并行处理的任务。这种预处理方法能将本来顺序执行的任务改造为可大规模并行执行的任务,从而显著提高处理效率。虽然这只是对zkEVM潜在实现的初步理解,但它揭示了我们如何可以通过创新来解决目前区块链面临的性能挑战。

区块链技术还处在早期阶段,EVM作为其核心技术组件之一,其编译与运行优化仍有很大的改进空间。我们期待随着区块链技术的进一步成熟,EVM的性能可以达到一个更高的水准,支持未来多样化和大规模的应用,并保持足够的安全性。

EVM编译技术的发展和应用将可能推动Ethereum网络走向一个新的时代,我们期待更多的研究和探索能够带来更多的突破。

评论

所有评论

推荐阅读

  • ETH跌破2400美元

    行情显示,ETH跌破2400美元,现报2399.82美元,24小时跌幅达到2.23%,行情波动较大,请做好风险控制。

  • BTC跌破81000美元

    行情显示,BTC跌破81000美元,现报80982.52美元,24小时跌幅达到1.73%,行情波动较大,请做好风险控制。

  • 费城半导体指数下跌近2%,连续第八天下跌

    10月16日,费城半导体指数下跌近2%,连续第八天下跌,势将迎来自2006年5月以来最长的连跌纪录。

  • Circle:2026 年上半年营收约 14 亿美元

    据 Circle 官方博客,公布了 2026 年上半年 USDC 相关营收的分配情况。上半年 Circle 营收约 14 亿美元。其中约 8.19 亿美元,也就是每 1 美元营收中约 59 美分,支付给 USDC 分销合作伙伴并用于交易成本。 Circle 表示,合作伙伴分到的收益和它带来的 USDC 规模挂钩。合作伙伴在平台上持有和增长的 USDC 余额越多,分到的储备收入就越多。最大合作伙伴 Coinbase 第二季度产品内平均 USDC 持有量达 200 亿美元,创历史新高,同比增长 44%。同期,USDC 链上结算量超过 36 万亿美元,铸造和赎回总额超过 3150 亿美元,日均约 17 亿美元。

  • Circle:2026 年上半年营收约 14 亿美元

    据 Circle 官方博客,公布了 2026 年上半年 USDC 相关营收的分配情况。上半年 Circle 营收约 14 亿美元。其中约 8.19 亿美元,也就是每 1 美元营收中约 59 美分,支付给 USDC 分销合作伙伴并用于交易成本。 Circle 表示,合作伙伴分到的收益和它带来的 USDC 规模挂钩。合作伙伴在平台上持有和增长的 USDC 余额越多,分到的储备收入就越多。最大合作伙伴 Coinbase 第二季度产品内平均 USDC 持有量达 200 亿美元,创历史新高,同比增长 44%。同期,USDC 链上结算量超过 36 万亿美元,铸造和赎回总额超过 3150 亿美元,日均约 17 亿美元。

  • 苹果美股盘前涨超2%

    苹果美股盘前涨超2%,开盘势创历史新高。苹果首款折叠屏手机iPhone Duo正式开售仅一分钟,全型号库存迅速售空。

  • 嘉信理财为其客户提供比特币购买服务

    10 月 16 日,据 The Bitcoin Historian 消息,管理资产规模约 13 万亿美元的美国券商嘉信理财(Charles Schwab)宣布,旗下所有客户现可直接在其账户中购买比特币(BTC),预计涉及超过 4000 万美国用户。

  • Strategy 拟对 STRC 实施每日分红,维持 12% 年化股息率

    10月16日,Strategy 作出有条件分红宣告:若 10 月 28 日股东会议通过每日股息修订提案,STRC 将在 2026 年 11 月 1‑30 日执行每日分红,保持 12.00% 的年化股息率不变。 一旦提案获批,每一个自然日都将成为 STRC 的股息登记日,周末、节假日全部包含在内。本次分红安排生效完全取决于股东投票结果,若修正案未获得通过,则不会落地执行。

  • 日本央行行长植田和男:我们将继续提高利率

    日本央行行长植田和男:我们将继续提高利率,因为潜在通胀接近2%,金融环境仍然宽松。

  • BTC跌破82000美元

    行情显示,BTC跌破82000美元,现报81995.76美元,24小时涨幅达到0.9%,行情波动较大,请做好风险控制。