Caracterizando a evolução de software de contratos inteligentes: Um estudo exploratório-descritivo utilizando GitHub e Etherscan - Rodrigues, Alan; Araújo, Allysson Allex; Paixao, Matheus; Soares, Pamella (Anais do Workshop de Visualização, Evolução e Manutenção de Software (VEM); 2021: Anais do IX Workshop de Visualização, Evolução e Manutenção de SoftwareDO - 10.5753/vem.2021.17210, 2021)
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.