Caracterizando a evolução de software de contratos inteligentes: Um estudo exploratório-descritivo utilizando GitHub e Etherscan

  • Alan Rodrigues UFC
  • Allysson Allex Araújo UFC
  • Matheus Paixao UECE
  • Pamella Soares UECE

Resumo


Blockchain tem sido enquadrada como uma nova infra-estrutura disruptiva baseada na internet. Parcela desse potencial advém do fortalecimento de plataformas públicas de blockchain, como a Ethereum, as quais viabilizam Aplicações Descentralizadas (dApps). Tais soluções são baseadas em contratos inteligentes (CIs) e lidam com restrições específicas que desafiam a evolução de software, como a imutabilidade de dados e o acesso transparente ao código-fonte. Em particular, a transparência de código pode ser observada através de ferramentas como o Etherscan, a qual provê acesso público a uma vasta quantidade de informações sobre os CIs implantados na Ethereum. Além disso, pode-se observar organizações oriundas desse ecossistema aderindo à prática de desenvolvimento open source dos CIs, incluindo o amplo uso do GitHub. Esse rico cenário motivou a necessidade de conduzir um estudo exploratório-descritivo baseado em mineração de repositórios de software para compreender a evolução de software de CIs através da avaliação de similaridade entre a versão disponível no GitHub e versão utilizada na Ethereum (e auditável via Etherscan). À luz de uma análise quali-quantititativa de 27 CIs, este artigo contribui ao 1) caracterizar quatro padrões que denotam diferentes comportamentos evolutivos dos CIs e 2) abordar um método experimental baseado em string para comparar a similaridade entre diferentes versões de CIs.

Palavras-chave: Contratos Inteligentes, Mineração de Repositórios, Ethereum, Etherscan, GitHub

Referências

Nemitari Ajienka, Peter Vangorp, and Andrea Capiluppi. 2020. An empirical analysis of source code metrics and smart contract resource consumption. Journal of Software: Evolution and Process 32, 10 (2020), e2267.

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).
Publicado
27/09/2021
RODRIGUES, Alan; ARAÚJO, Allysson Allex; PAIXAO, Matheus; SOARES, Pamella. Caracterizando a evolução de software de contratos inteligentes: Um estudo exploratório-descritivo utilizando GitHub e Etherscan. In: WORKSHOP DE VISUALIZAÇÃO, EVOLUÇÃO E MANUTENÇÃO DE SOFTWARE (VEM), 9. , 2021, Joinville. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2021 . p. 11-15. DOI: https://doi.org/10.5753/vem.2021.17210.