如何节省我的 Gas 费:理解和检测 Solidity 程序中的现实世界 Gas 问题
软件工程
2025-07-29 v2
摘要
在公共区块链系统 Ethereum 上执行智能合约会因其计算和数据存储而产生称为 Gas 费的费用。当程序员开发智能合约(例如使用 Solidity 编程语言)时,他们可能会无意中编写导致不必要 Gas 费增加的代码片段。这些问题(我们称之为 Gas 浪费)可能导致用户遭受重大的金钱损失。本文率先通过两个关键步骤帮助 Ethereum 用户降低 Gas 费。首先,我们对开源 Solidity 程序和 Ethereum 交易追踪中的 Gas 浪费进行了实证研究。其次,为了验证我们的研究发现,我们开发了一种名为 PeCatch 的静态工具,以有效检测 Solidity 程序中的 Gas 浪费,并手动检查 Solidity 编译器的代码以 pinpoint 导致 Gas 浪费的实现错误。总体而言,我们提出了 11 个见解和四条建议,这可促进未来的工具开发和程序员意识提升;修复我们检测到的漏洞每天可节省 76 万美元的 Gas 费。
引用
@article{arxiv.2403.02661,
title = {How to Save My Gas Fees: Understanding and Detecting Real-world Gas Issues in Solidity Programs},
author = {Mengting He and Shihao Xia and Boqin Qin and Nobuko Yoshida and Tingting Yu and Yiying Zhang and Linhai Song},
journal= {arXiv preprint arXiv:2403.02661},
year = {2025}
}