[论文解读] Blockchain Superoptimizer
本文提出 ebso,一种针对以太坊虚拟机(EVM)字节码的超优化器,利用 SMT 求解自动发现更便宜且语义等价的字节码序列。通过将 EVM 语义编码为 SMT 公式,ebso 找到了可降低气体成本的优化——在单一案例中节省高达 20,220 气体——证明基于 SMT 的超优化在真实世界智能合约中是可行且有效的。
In the blockchain-based, distributed computing platform Ethereum, programs called smart contracts are compiled to bytecode and executed on the Ethereum Virtual Machine (EVM). Executing EVM bytecode is subject to monetary fees---a clear optimization target. Our aim is to superoptimize EVM bytecode by encoding the operational semantics of EVM instructions as SMT formulas and leveraging a constraint solver to automatically find cheaper bytecode. We implement this approach in our EVM Bytecode SuperOptimizer ebso and perform two large scale evaluations on real-world data sets.
研究动机与目标
- 通过自动发现更便宜的字节码序列,解决以太坊上执行智能合约的高成本问题。
- 探究在以太坊明确的气体成本模型下,是否可通过 SMT 求解实现 EVM 字节码的超优化。
- 在真实世界的智能合约上评估两种超优化策略——基础型与无界型——以比较其性能与优化效果。
- 在高度优化的竞赛合约以及以太坊主网上最常被调用的合约中,识别并验证优化方案。
- 分析 SMT 求解器在超优化中的局限性与偏差,尤其是非确定性行为与可扩展性问题。
提出的方法
- 将 EVM 指令语义的子集编码为 SMT 公式,以支持对字节码行为的正式推理。
- 实现两种超优化策略:基础型(枚举候选序列并使用 SMT 检查等价性)与无界型(将枚举编码为求解器约束)。
- 使用现代 SMT 求解器(如 CVC4、Vampire)搜索保持功能等价性的最小成本指令序列。
- 以 SMT-LIB 格式导出生成的 SMT 约束,用于基准测试与求解器比较。
- 将该工具应用于两个真实世界数据集:竞赛合约(为最小气体消耗而优化)以及以太坊主网上最常被调用的 2,500 个合约。
- 缓存并泛化常见优化模式,以提升效率并支持未来局部优化(peephole optimization)的集成。
实验结果
研究问题
- RQ1基于 SMT 的超优化能否在真实世界的智能合约中有效降低 EVM 字节码的气体成本?
- RQ2在真实以太坊合约上,基础型与无界型超优化策略在优化覆盖率与性能方面如何比较?
- RQ3最常发现的优化类型是什么?哪些因素会影响求解器发现这些优化的能力?
- RQ4SMT 求解器的非确定性行为与性能限制在多大程度上影响了最优字节码序列的发现?
- RQ5该工具能否在高度优化或生产级智能合约中发现此前未知的优化?
主要发现
- ebso 在一个已高度优化的竞赛数据集中发现了 19 项优化,表明即使手工优化的代码仍可进一步改进。
- 在以太坊主网上最常被调用的 2,500 个合约中,无界超优化(uso)方法发现了 943 项优化,总计节省气体 17,871,覆盖所有区块。
- 基础超优化(bso)方法发现了 184 项优化,节省气体 6,903,其每区块平均节省气体比例(46.1%)高于 uso(29.63%),原因在于其聚焦于更小但影响更大的区块。
- 尽管 bso 的优化率更高,但仅在 393 个案例中找到最优解,而 uso 在 943 个案例中找到最优解,表明其在可扩展性与完备性方面更优。
- 出人意料的是,bso 发现了 21 项 uso 错过的优化,全部涉及短小、复杂的区块且气体成本极低(<10g),表明求解器的非确定性可能影响搜索结果。
- 最显著的节省来自冗余存储访问模式:通过将一个 5 条指令的序列替换为空程序,气体消耗从 5,220g 降低至 20,220g。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。