智能合约为何自毁?对以太坊上 selfdestruct 函数的调查
软件工程
2021-11-30 v3
摘要
selfdestruct 函数由以太坊智能合约提供,用于销毁区块链系统上的合约。然而,它对开发者而言是一把双刃剑。一方面,使用 selfdestruct 函数使开发者能够在紧急情况(例如遭受攻击)发生时从以太坊移除智能合约(SC)并转移以太币。另一方面,该函数会增加开发复杂度,并为攻击者打开攻击向量。为了更好地理解 SC 开发者在合约中包含或排除 selfdestruct 函数的原因,我们开展了一项在线调查以收集他们的反馈并总结关键原因。他们的反馈显示,66.67% 的开发者会在销毁旧合约后向以太坊部署一个更新后的合约。根据此信息,我们提出了一种通过计算代码相似度来寻找自毁合约(亦称前驱合约)及其更新版本(后继合约)的方法。通过分析前驱合约与后继合约之间的差异,我们发现了导致合约消亡的五个原因;其中两个(即未匹配的 ERC20 代币和权限限制)可能影响合约的生命周期。我们开发了一款名为 LifeScope 的工具来检测这些问题。LifeScope 在检测未匹配的 ERC20 代币时报告了 0 例假阳性或假阴性。在权限限制方面,LifeScope 平均达到了 77.89% 的 F 值和 0.8673 的 AUC。根据排除 selfdestruct 函数的开发者反馈,我们提出了建议以帮助开发者更好地在以太坊智能合约中使用 selfdestruct 函数。
引用
@article{arxiv.2005.07908,
title = {Why Do Smart Contracts Self-Destruct? Investigating the Selfdestruct Function on Ethereum},
author = {Jiachi Chen and Xin Xia and David Lo and John Grundy},
journal= {arXiv preprint arXiv:2005.07908},
year = {2021}
}