Self-Admitted Technical Debt in Ethereum Smart Contracts: A Large-Scale Exploratory Study

被引:3
|
作者
Ebrahimi, Amir Mohammad [1 ]
Oliva, Gustavo A. [1 ]
Hassan, Ahmed E. [1 ]
机构
[1] Queens Univ, Sch Comp, Software Anal & Intelligence Lab SAIL, Kingston, ON K7L 3N6, Canada
基金
加拿大自然科学与工程研究理事会;
关键词
Contracts; Smart contracts; Decentralized applications; Source coding; Costs; Codes; Blockchains; Self-admitted technical debt; SATD; maintenance; smart contracts; ethereum; blockchain; MANAGEMENT;
D O I
10.1109/TSE.2023.3289808
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Programmable blockchain platforms such as Ethereum offer unique benefits to application development, including a decentralized infrastructure, tamper-proof transactions, and auditability. These benefits enable new types of applications that can bring competitive advantage to several business segments. Nonetheless, the pressure of time-to-market combined with relatively immature development technologies (e.g., the Solidity programming language), lack of high-quality training resources, and an unclear roadmap for Ethereum creates a context that favors the introduction of technical debt (e.g., code hacks, workarounds, and suboptimal implementations) into application code. In this paper, we study self-admitted technical debt (SATD) in smart contracts. SATD refers to technical debt that is explicitly acknowledged in the source code by developers via code comments. We extract 726 k real-world contracts from Ethereum and apply both quantitative and qualitative methods in order to (i) determine SATD prevalence, (ii) understand the relationship between code cloning and SATD prevalence, and (iii) uncover the different categories of SATD. Our findings reveal that, while SATD is not a widespread phenomenon (1.5% of real-world contracts contain SATD), SATD does occur in extremely relevant contracts (e.g., multi-million contracts). We also observed a strong connection between SATD prevalence and code cloning activities, leading us to conclude that the former cannot be reliably studied without taking the latter into consideration. Finally, we produced a taxonomy for SATD that consists of 6 major and 26 minor categories. We note that several minor categories are bound to the domain of blockchain and smart contracts, including gas-inefficient implementations and Solidity-induced workarounds. Based on our results, we derive a set of practical recommendations for contract developers and introduce open research questions to guide future research on the topic.
引用
收藏
页码:4304 / 4323
页数:20
相关论文
共 50 条
  • [31] On the value of a prioritization scheme for resolving Self-admitted technical debt
    Mensah, Solomon
    Keung, Jacky
    Svajlenko, Jeffery
    Bennin, Kwabena Ebo
    Mi, Qing
    JOURNAL OF SYSTEMS AND SOFTWARE, 2018, 135 : 37 - 54
  • [32] Wait for it: identifying “On-Hold” self-admitted technical debt
    Rungroj Maipradit
    Christoph Treude
    Hideaki Hata
    Kenichi Matsumoto
    Empirical Software Engineering, 2020, 25 : 3770 - 3798
  • [33] Recommending when Design Technical Debt Should be Self-Admitted
    Zampetti, Fiorella
    Noiseux, Cedric
    Antoniol, Giuliano
    Khomh, Foutse
    Di Penta, Massimiliano
    2017 IEEE INTERNATIONAL CONFERENCE ON SOFTWARE MAINTENANCE AND EVOLUTION (ICSME), 2017, : 216 - 226
  • [34] Detecting and Quantifying Different Types of Self-Admitted Technical Debt
    Maldonado, Everton da S.
    Shihab, Emad
    2015 IEEE 7TH INTERNATIONAL WORKSHOP ON MANAGING TECHNICAL DEBT (MTD) PROCEEDINGS, 2015, : 9 - 15
  • [35] Is Self-Admitted Technical Debt a Good Indicator of Architectural Divergences?
    Sierra, Giancarlo
    Tahmid, Ahmad
    Shihab, Emad
    Tsantalis, Nikolaos
    2019 IEEE 26TH INTERNATIONAL CONFERENCE ON SOFTWARE ANALYSIS, EVOLUTION AND REENGINEERING (SANER), 2019, : 534 - 543
  • [36] A large-scale exploratory study on the proxy pattern in Ethereum
    Ebrahimi, Amir M.
    Adams, Bram
    Oliva, Gustavo A.
    Hassan, Ahmed E.
    EMPIRICAL SOFTWARE ENGINEERING, 2024, 29 (04)
  • [37] Identification and Remediation of Self-Admitted Technical Debt in Issue Trackers
    Li, Yikun
    Soliman, Mohamed
    Avgeriou, Paris
    2020 46TH EUROMICRO CONFERENCE ON SOFTWARE ENGINEERING AND ADVANCED APPLICATIONS (SEAA 2020), 2020, : 495 - 503
  • [38] Self-admitted Technical Debt Research: Problem, Progress, and Challenges
    Guo Z.-Q.
    Liu S.-R.
    Tan T.-T.
    Li Y.-H.
    Chen L.
    Zhou Y.-M.
    Xu B.-W.
    Ruan Jian Xue Bao/Journal of Software, 2022, 33 (01): : 26 - 54
  • [39] FIXME: synchronize with database! An empirical study of data access self-admitted technical debt
    Biruk Asmare Muse
    Csaba Nagy
    Anthony Cleve
    Foutse Khomh
    Giuliano Antoniol
    Empirical Software Engineering, 2022, 27
  • [40] Deep neural network ensembles for detecting self-admitted technical debt
    Yin, Ming
    Zhu, Kuiyu
    Xiao, Hongli
    Zhu, Dan
    Jiang, Jijiao
    JOURNAL OF INTELLIGENT & FUZZY SYSTEMS, 2022, 43 (01) : 93 - 105