中文

Solidity 错误处理机制的演进历程

软件工程 2024-02-06 v1

摘要

在 Solidity 智能合约中使用错误处理至关重要,因为智能合约执行需要验证的交易。未经仔细处理的交易可能导致程序崩溃和漏洞,进而造成经济损失和法律后果。尽管 Solidity 的设计者不断尝试用新特性更新该语言,包括错误处理(EH)特性,但开发者必须迅速掌握如何使用它们。我们对 283K 个独特的开源智能合约进行了一项大规模实证研究,以识别 Solidity 错误处理特性随时间推移的使用模式。总体而言,大多数错误处理特性的使用率有限。然而,我们观察到一种 Solidity 定制化错误处理特性(即 require)的使用率呈上升趋势(> 60%)。这表明现代编程语言的设计者可以考虑让错误处理更贴合每种语言的目的。我们对 102 个版本的 Solidity 文档的分析表明,Solidity 具有易变性,因为该语言频繁变更,即错误处理特性每年会有一到两次的变更。如此频繁的发布可能会让智能合约开发者感到困惑,阻碍他们仔细阅读 Solidity 文档并正确采用错误处理特性。此外,我们的发现揭示,近 70% 的被检查智能合约因缺少错误处理(例如,未检查的外部调用)而面临潜在故障的风险。因此,应通过提供更具信息性的文档来进一步支持错误处理特性的使用,该文档应包含(1)具有代表性且有意义的示例,以及(2)关于潜在错误处理误用影响的详细信息。

关键词

引用

@article{arxiv.2402.03186,
  title  = {Charting The Evolution of Solidity Error Handling},
  author = {Charalambos Mitropoulos and Maria Kechagia and Chrysostomos Maschas and Sotiris Ioannidis and Federica Sarro and Dimitris Mitropoulos},
  journal= {arXiv preprint arXiv:2402.03186},
  year   = {2024}
}