Identifying and Characterizing Semantic Clones of Solidity Functions
Este artigo apresenta uma metodologia escalável para identificar clones semânticos em contratos inteligentes Solidity, analisando código e comentários, alcançando alta precisão e recall enquanto explora alternativas de design estrutural e aproveita Modelos de Linguagem de Grande Porte para preencher lacunas de documentação em código sem comentários.
Artigo original sob licença CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta é uma explicação gerada por IA do artigo abaixo. Não foi escrita nem endossada pelos autores. Para precisão técnica, consulte o artigo original. Ler aviso legal completo
Imagine o mundo dos Contratos Inteligentes (os acordos digitais que rodam em blockchains como o Ethereum) como uma enorme biblioteca pública. Uma vez que um livro (um contrato) é escrito e colocado na estante, ele nunca pode ser apagado ou alterado. Como os livros são públicos, os escritores frequentemente copiam e colam trechos de outros livros para economizar tempo. Isso é chamado de "clonagem".
Na maioria das vezes, copiar é fácil de detectar. Se você copiar um parágrafo palavra por palavra, é óbvio. Mas e se alguém reescrever um parágrafo usando palavras completamente diferentes, mudar a estrutura da frase e trocar alguns sinônimos, mas o significado permanecer exatamente o mesmo? No mundo da programação, isso é chamado de Clonagem Semântica (ou clonagem Tipo-4).
Este artigo trata de construir um "bibliotecário" melhor para encontrar essas cópias ocultas e reescritas em Solidity (a linguagem usada para escrever esses contratos), porque copiar lógica ruim pode espalhar falhas de segurança tão facilmente quanto copiar lógica boa.
Aqui está uma explicação do trabalho deles usando analogias simples:
1. O Problema: A Armadilha da "Receita Reescrita"
Imagine dois chefs escrevendo receitas para "Bolo de Chocolate".
- Chef A escreve: "Misture farinha, açúcar e ovos. Asse a 175°C."
- Chef B escreve: "Combine os ingredientes secos com os úmidos. Coloque no forno a 175°C."
Para um computador procurando correspondências exatas, essas receitas parecem totalmente diferentes. Mas para um humano, são a mesma receita. No mundo da blockchain, se a receita do Chef A tiver um defeito oculto (como esquecer de verificar se o forno está quente), e o Chef B copiar a ideia sem perceber o defeito, toda a cozinha está em perigo.
Os autores descobriram que as ferramentas existentes são como robôs que só procuram correspondências exatas de palavras. Elas perdem essas "receitas reescritas".
2. A Solução: Lendo as "Anotações do Chef"
Os pesquisadores perceberam que, embora o código (os ingredientes e passos) possa parecer diferente, os comentários (as anotações que o chef escreveu acima da receita) frequentemente explicam a intenção de maneiras muito semelhantes.
- A Analogia: Pense no código como as ações e nos comentários como a narração explicando o que as ações estão fazendo.
- O Método: Eles construíram um sistema que compara duas coisas:
- O Código: Eles verificam se o código é diferente (baixa similaridade).
- Os Comentários: Eles verificam se as descrições escritas são muito semelhantes (alta similaridade).
Se o código parecer diferente, mas a narração soar a mesma, eles o marcam como uma "Clonagem Semântica".
3. Os Resultados: Um Detetive Altamente Preciso
Eles testaram esse método em um conjunto de dados massivo de quase 300.000 contratos inteligentes modernos.
- A Taxa de Sucesso: Quando verificaram manualmente uma amostra de 1.155 pares, seu método foi correto 59% do tempo no geral.
- O Bônus do "Mesmo Nome": Se as funções tivessem o mesmo nome (como ambas serem chamadas
transfer), a precisão saltou para 84%. - A Rede de Segurança: Eles também verificaram se haviam perdido algum. Descobriram que perderam apenas cerca de 3% dos clones reais (uma taxa de "recall" de 97%).
Eles descobriram que essas "receitas reescritas" não são apenas acidentes; muitas vezes são escolhas de design. Desenvolvedores as reescrevem para tornar o código mais seguro, para economizar "gas" (a taxa paga para executar o contrato) ou para organizar o código melhor.
4. O Desafio: A Biblioteca "Silenciosa"
Um grande problema que eles encontraram é que 75% dessas funções não têm comentários de forma alguma. É como ter uma biblioteca onde três quartos dos livros não têm títulos ou resumos. Sem comentários, o método de "narração" deles não funciona.
5. A Correção: O "Escrivão de IA" (LLMs)
Para resolver o problema da "biblioteca silenciosa", eles usaram Modelos de Linguagem Grandes (IA) para atuar como um escrivão.
- A Analogia: Se um livro não tem resumo, eles pediram à IA para ler o código e escrever um resumo para ele.
- O Experimento: Eles alimentaram a IA com o código, pediram que ela escrevesse uma descrição e, em seguida, usaram seu sistema para comparar as descrições escritas pela IA.
- O Resultado: Mesmo sem notas escritas por humanos, os resumos gerados pela IA permitiram que eles encontrassem 75% dos clones ocultos corretamente.
Eles também testaram diferentes "prompts" (instruções para a IA). Descobriram que pedir à IA um resumo simples e direto funcionava melhor do que pedir um relatório complexo e estruturado. Os relatórios complexos adicionavam muita "encheção de linguiça" que confundia o sistema, enquanto os resumos simples mantinham o foco no significado central.
6. Por Que Isso Importa
Os autores concluem que isso não se trata apenas de encontrar duplicatas; trata-se de encontrar alternativas.
- Se você é um desenvolvedor construindo um contrato seguro, você não quer apenas uma maneira de fazer algo. Você quer ver todas as diferentes maneiras pelas quais outras pessoas resolveram o mesmo problema.
- Ao encontrar essas clonagens semânticas, os desenvolvedores podem comparar diferentes "receitas reescritas" para ver qual é mais segura, mais barata ou mais eficiente antes de construir a própria.
Em resumo: O artigo apresenta uma nova maneira de encontrar "gêmeos ocultos" no código comparando a intenção (comentários) em vez de apenas a sintaxe (código). Quando os comentários estão ausentes, eles usam a IA para escrevê-los, descobrindo com sucesso alternativas de design ocultas que poderiam ajudar a tornar os contratos de blockchain mais seguros e eficientes.
Afogado em artigos na sua área?
Receba digests diários dos artigos mais recentes que correspondam às suas palavras-chave de pesquisa — com resumos técnicos, no seu idioma.