Characterizing the software evolution of smart contracts: An exploratory-descriptive study using GitHub and Etherscan
Abstract
Blockchain has been framed as one of the new disruptive internet-based infrastructures. Part of this potential comes from strengthening blockchain public platforms, such as Ethereum, which enable decentralized applications (dApps). These solutions are based on smart contracts (SCs) and face specific constraints that challenge software evolution, such as data immutability and transparent access to the source code. In particular, code transparency can be observed through tools such as Etherscan, which provides public access to a vast amount of information from the SCs deployed in Ethereum. In addition, we can notice organizations in this ecosystem empowering themselves with open source development practices towards the SCs development, including the wide use of GitHub. This enriched scenario motivated us to conduct an exploratory-descriptive study based on mining software repositories to understand the SC software evolution through evaluating the similarity between the version developed on GitHub and the one being used in Ethereum (and auditable via Etherscan). In the light of a quali-quantitative analysis of 27 SCs, this paper contributes 1) by characterizing four patterns that depict different SC evolution behavior and 2) by approaching a string-based experimental method to compare the similarity between SC versions.
References
Francisco Javier Carrera Arias. 2019. Fuzzy String Matching in Python. https://www.datacamp.com/community/tutorials/fuzzy-string-python. Acessado em: 04/05/2021.
Amiangshu Bosu, Anindya Iqbal, Rifat Shahriyar, and Partha Chakraborty. 2019. Understanding the motivations, challenges and needs of blockchain software developers: A survey. Empirical Software Engineering 24, 4 (2019), 2636–2673.
Partha Chakraborty, Rifat Shahriyar, Anindya Iqbal, and Amiangshu Bosu. 2018. Understanding the software development practices of blockchain projects: a survey. In Proceedings of the 12th ACM/IEEE International Symposium on Empirical Software Engineering and Measurement. 1–10.
Jiachi Chen, Xin Xia, David Lo, John Grundy, and Xiaohu Yang. 2020. Maintaining smart contracts on Ethereum: Issues, techniques, and future challenges. arXiv preprint arXiv:2007.00286 (2020).
Chris Dannen. 2017. Introducing Ethereum and solidity. Vol. 318. Springer.
Giuseppe Destefanis, Michele Marchesi, Marco Ortu, Roberto Tonelli, Andrea Bracciali, and Robert Hierons. 2018. Smart contracts vulnerabilities: a call for blockchain software engineering?. In 2018 International Workshop on Blockchain Oriented Software Engineering (IWBOSE). IEEE, 19–25.
Ahmed E Hassan. 2008. The road ahead for mining software repositories. In 2008 Frontiers of Software Maintenance. IEEE, 48–57.
Satoshi Nakamoto. 2009. Bitcoin: A peer-to-peer electronic cash system. http://www.bitcoin.org/bitcoin.pdf
Gustavo A Oliva, Ahmed E Hassan, and Zhen Ming Jack Jiang. 2020. An exploratory study of smart contracts in the Ethereum blockchain platform. Empirical Software Engineering (2020), 1–41.
Andrea Pinna, Simona Ibba, Gavina Baralla, Roberto Tonelli, and Michele Marchesi. 2019. A massive analysis of ethereum smart contracts empirical study and code metrics. IEEE Access 7 (2019), 78194–78213.
Massimo Ragnedda and Giuseppe Destefanis. 2019. Blockchain and web 3.0: social, economic, and technological challenges. Routledge.
Siraj Raval. 2016. Decentralized applications: harnessing Bitcoin’s blockchain technology. "O’Reilly Media, Inc.".
Pierre Reibel, Haaroon Yousaf, and Sarah Meiklejohn. 2018. Why is a Ravencoin Like a TokenDesk? An Exploration of Code Diversity in the Cryptocurrency Landscape. arXiv preprint arXiv:1810.08420 (2018).
Marten Risius and Kai Spohrer. 2017. A blockchain research framework. Business & Information Systems Engineering 59, 6 (2017), 385–409.
Alan Rodrigues, Allysson Allex Araújo, Matheus Paixao, and Pamella Sousa. 2021. Pacote de Replicação. https://zenodo.org/record/5216861
Nick Szabo. 1996. Smart contracts: building blocks for digital markets. EXTROPY: The Journal of Transhumanist Thought,(16) 18 (1996).
Sergei Tikhomirov, Ekaterina Voskresenskaya, Ivan Ivanitskiy, Ramil Takhaviev, Evgeny Marchenko, and Yaroslav Alexandrov. 2018. Smartcheck: Static analysis of ethereum smart contracts. In Proceedings of the 1st International Workshop on Emerging Trends in Software Engineering for Blockchain. 9–16.
ClaesWohlin, Per Runeson, Martin Hst, Magnus C. Ohlsson, Bjrn Regnell, and Anders Wessln. 2012. Experimentation in Software Engineering. Springer Publishing Company, Incorporated.
Li Yujian and Liu Bo. 2007. A normalized Levenshtein distance metric. IEEE transactions on pattern analysis and machine intelligence 29, 6 (2007), 1091–1095.
Weiqin Zou, David Lo, Pavneet Singh Kochhar, Xuan-Bach D Le, Xin Xia, Yang Feng, Zhenyu Chen, and Baowen Xu. 2019. Smart contract development: Challenges and opportunities. IEEE Transactions on Software Engineering (2019).
