理解现实中的Solidity事件日志实践
软件工程
2023-08-25 v1
摘要
编写日志消息是一种公认的传统编程实践,并且对各种各样的软件开发活动至关重要。Solidity编程中的日志机制由高层级事件特性启用,但迄今为止缺乏针对理解现实中Solidity事件日志实践的研究。为填补这一空白,我们在本文中首次使用托管于GitHub上的2,915个流行Solidity项目,对当前Solidity事件日志实践进行定量特征研究。该研究系统性地探究了事件日志的普遍性、当前事件日志实践的良好性,特别是事件日志代码演进的原因,并给出了8条原创且重要的发现。这些发现显著包括存在大比例独立的事件日志代码修改,且不同类别的独立事件日志代码修改的潜在原因是多样的(例如,缺陷修复和gas节省)。我们还给出了研究发现的启示,这些启示可启发开发者、研究者、工具构建者和语言设计者改进事件日志实践。为说明我们研究的潜在益处,我们基于其中一条发现开发了一个概念验证检查器,该检查器在35个流行GitHub项目中有效检测出消耗额外gas的问题事件日志代码,且9位项目所有者已确认所检测到的问题。
引用
@article{arxiv.2308.12788,
title = {Understanding Solidity Event Logging Practices in the Wild},
author = {Lantian Li and Yejian Liang and Zhihao Liu and Zhongxing Yu},
journal= {arXiv preprint arXiv:2308.12788},
year = {2023}
}
备注
Accepted by 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE'23)