推断以太坊字节码中不必要的写入内存访问(扩展版)

摘要:区块链上执行的智能合约的程序的效率是一种基本属性,而在优化智能合约方面尤为重要。这是因为优化智能合约直接影响部署和执行合约的成本,因为与合约的字节大小和资源消耗(称为gas)相关的费用需要支付。优化内存使用被认为是一个具有挑战性的问题,需要精确推断被访问的内存位置。对于大多数使用编译器solc生成的以太坊虚拟机(EVM)字节码也是如此,其非常独特和低级的内存使用方式挑战着自动推理。本文介绍了一种在solc生成的EVM字节码级别开发的静态分析方法,可以推断出不必要的写内存访问,并且可以安全地删除它们。我们的实现在超过19,000个真实的智能合约上进行了应用,在不到4小时的时间内检测到了大约6,200个不必要的写访问。有趣的是,其中许多写入是由solc生成的内存使用模式所导致的,通过删除整个字节码块可以被大大优化。据我们所知,现有的优化工具无法推断出这些不必要的写访问,因此无法检测到影响以太坊智能合约的部署和执行成本的这些低效问题。

作者:Elvira Albert, Jes''us Correas, Pablo Gordillo, Guillermo Rom''an-D''iez and Albert Rubio

论文ID:2301.04757

分类:Programming Languages

分类简称:cs.PL

提交时间:2023-01-13

PDF 下载: 英文版 中文版pdf翻译中