中文

理解Solidity编译器中的缺陷

软件工程 2024-08-12 v3

摘要

Solidity编译器在以太坊上支持智能合约应用开发中扮演关键角色,它通过管理领域特定语言Solidity的语法,并执行Solidity代码的编译与优化。Solidity编译器的正确性对于在依赖智能合约的行业中促进透明度、效率和信任至关重要。然而,与其他软件系统一样,Solidity编译器也容易存在缺陷,这些缺陷可能在区块链平台上生成错误的字节码,从而导致严重的安全问题。作为一种面向智能合约的领域特定编译器,Solidity编译器在许多方面与其他编译器不同,这给检测其缺陷带来了独特挑战。为了理解Solidity编译器中的缺陷并惠及未来研究,本文首次对533个Solidity编译器缺陷进行了系统性研究。我们仔细考察了它们的特征(包括症状、根本原因和分布)以及触发它们的测试用例。我们的研究得出了关于Solidity编译器缺陷的七个重要发现。此外,为了研究Solidity编译器模糊测试工具的局限性并将我们的发现应用于实际场景,我们在构建的基准测试上评估了三种Solidity编译器模糊测试工具。结果表明,这些模糊测试工具在检测Solidity编译器缺陷方面效率低下。这种低效率源于它们未能考虑有趣的缺陷诱导特征、与缺陷相关的编译标志以及测试预言机。

关键词

引用

@article{arxiv.2407.05981,
  title  = {Towards Understanding the Bugs in Solidity Compiler},
  author = {Haoyang Ma and Wuqi Zhang and Qingchao Shen and Yongqiang Tian and Junjie Chen and Shing-Chi Cheung},
  journal= {arXiv preprint arXiv:2407.05981},
  year   = {2024}
}