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 条
  • [21] An empirical study on self-admitted technical debt in modern code review
    Kashiwa, Yutaro
    Nishikawa, Ryoma
    Kamei, Yasutaka
    Kondo, Masanari
    Shihab, Emad
    Sato, Ryosuke
    Ubayashi, Naoyasu
    INFORMATION AND SOFTWARE TECHNOLOGY, 2022, 146
  • [22] Examining the Impact of Self-admitted Technical Debt on Software Quality
    Wehaibi, Sultan
    Shihab, Emad
    Guerrouj, Latifa
    2016 IEEE 23RD INTERNATIONAL CONFERENCE ON SOFTWARE ANALYSIS, EVOLUTION, AND REENGINEERING (SANER), VOL 1, 2016, : 179 - 188
  • [23] Characterizing and Mitigating Self-Admitted Technical Debt in Build Systems
    Xiao, Tao
    Wang, Dong
    Mcintosh, Shane
    Hata, Hideaki
    Kula, Raula Gaikovina
    Ishio, Takashi
    Matsumoto, Kenichi
    IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, 2022, 48 (10) : 4214 - 4228
  • [24] Large-Scale Empirical Study of Inline Assembly on 7.6 Million Ethereum Smart Contracts
    Liao, Zhou
    Song, Shuwei
    Zhu, Hang
    Luo, Xiapu
    He, Zheyuan
    Jiang, Renkai
    Chen, Ting
    Chen, Jiachi
    Zhang, Tao
    Zhang, Xiaosong
    IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, 2023, 49 (02) : 777 - 801
  • [25] SATDBailiff-mining and tracking self-admitted technical debt
    AlOmar, Eman Abdullah
    Christians, Ben
    Busho, Mihal
    AlKhalid, Ahmed Hamad
    Ouni, Ali
    Newman, Christian
    Mkaouer, Mohamed Wiem
    SCIENCE OF COMPUTER PROGRAMMING, 2022, 213
  • [26] Data Balancing Improves Self-Admitted Technical Debt Detection
    Sridharan, Murali
    Mantyla, Mika
    Rantala, Leevi
    Claes, Maelick
    2021 IEEE/ACM 18TH INTERNATIONAL CONFERENCE ON MINING SOFTWARE REPOSITORIES (MSR 2021), 2021, : 358 - 368
  • [27] Wait for it: identifying "On-Hold" self-admitted technical debt
    Maipradit, Rungroj
    Treude, Christoph
    Hata, Hideaki
    Matsumoto, Kenichi
    EMPIRICAL SOFTWARE ENGINEERING, 2020, 25 (05) : 3770 - 3798
  • [28] Automated Identification of On-hold Self-admitted Technical Debt
    Maipradit, Rungroj
    Lin, Bin
    Nagy, Csaba
    Bavota, Gabriele
    Lanza, Michele
    Hata, Hideaki
    Matsumoto, Kenichi
    2020 20TH IEEE INTERNATIONAL WORKING CONFERENCE ON SOURCE CODE ANALYSIS AND MANIPULATION (SCAM 2020), 2020, : 54 - 64
  • [29] Automatically Learning Patterns for Self-Admitted Technical Debt Removal
    Zampetti, Fiorella
    Serebrenik, Alexander
    Di Penta, Massimiliano
    PROCEEDINGS OF THE 2020 IEEE 27TH INTERNATIONAL CONFERENCE ON SOFTWARE ANALYSIS, EVOLUTION, AND REENGINEERING (SANER '20), 2020, : 355 - 366
  • [30] Multiclass Classification for Self-Admitted Technical Debt Based on XGBoost
    Chen, Xin
    Yu, Dongjin
    Fan, Xulin
    Wang, Lin
    Chen, Jie
    IEEE TRANSACTIONS ON RELIABILITY, 2022, 71 (03) : 1309 - 1324