中文

定义以太坊上的智能合约缺陷

软件工程 2020-04-20 v3

摘要

智能合约是运行于区块链上的程序。它们不可变更,因此一旦部署便无法修补漏洞。因而在部署前确保它们无缺陷且设计良好至关重要。合约缺陷是智能合约中导致其产生不正确或意外结果、或以非预期方式行为的错误、瑕疵或故障。合约缺陷的检测是一种避免潜在漏洞并改进现有代码设计的方法。由于智能合约包含诸多独特特征,例如gas系统、去中心化,寻找智能合约特有的缺陷十分重要。为填补此空白,我们从Ethereum StackExchange收集了智能合约相关帖子以及真实世界的智能合约。我们手动分析这些帖子和合约,借此定义了20类合约缺陷。我们将它们归类为指示潜在的安全性、可用性、性能、可维护性与可重用性问题。为验证从业者是否认为这些合约有害,我们创建了在线调查并收到来自32个不同国家的138份回复。反馈表明这些合约缺陷是有害的,移除它们将提升智能合约的质量与鲁棒性。我们在587个真实世界智能合约中手动识别了所定义的合约缺陷,并公开了我们的数据集。最后,我们总结了由合约缺陷引发的5类影响。这些有助于开发者更好地理解缺陷的症状与移除优先级。

关键词

引用

@article{arxiv.1905.01467,
  title  = {Defining Smart Contract Defects on Ethereum},
  author = {Jiachi Chen and Xin Xia and David Lo and John Grundy and Daniel Xiapu Luo and Ting Chen},
  journal= {arXiv preprint arXiv:1905.01467},
  year   = {2020}
}