  Software development is a very broad activity that captures the entire life
cycle of a software, which includes designing, programming, maintenance and so
on. In this study, we focus on the maintenance-related concerns of the
post-deployment of smart contracts. Smart contracts are self-executed programs
that run on a blockchain. They cannot be modified once deployed and hence they
bring unique maintenance challenges compared to conventional software.
According to the definition of ISO/IEC 14764, there are four kinds of software
maintenance, i.e., corrective, adaptive, perfective, and preventive
maintenance. This study aims to answer (i) What kinds of issues will smart
contract developers encounter for corrective, adaptive, perfective, and
preventive maintenance after they are deployed to the Ethereum? (ii) What are
the current maintenance-related methods used for smart contracts? To obtain the
answers to these research questions, we first conducted a systematic literature
review to analyze 131 smart contract related research papers published from
2014 to 2020. Since the Ethereum ecosystem is fast-growing, some results from
previous publications might be out-of-date and there may be a gap between
academia and industry. To address this, we performed an online survey of smart
contract developers on Github to validate our findings and received 165 useful
responses. Based on the survey feedback and literature review, we present the
first empirical study on smart contract maintenance-related concerns. Our study
can help smart contract developers better maintain their smart contract-based
projects, and we highlight some key future research directions to improve the
Ethereum ecosystem.
