← Derniers articles
💻 computer science

Identifying and Characterizing Semantic Clones of Solidity Functions

Cet article présente une méthode évolutive pour identifier les clones sémantiques dans les contrats intelligents Solidity en analysant le code et les commentaires, atteignant une haute précision et un fort rappel tout en explorant des alternatives de conception structurelle et en exploitant les grands modèles de langage pour combler les lacunes de documentation dans le code sans commentaires.

Auteurs originaux : Ermanno Francesco Sannini, Francesco Salzano, Simone Scalabrino, Rocco Oliveto, Remo Pareschi, Corrado Aaron Visaggio, Andrea Di Sorbo

Publié 2026-04-30
📖 6 min de lecture🧠 Analyse approfondie

Auteurs originaux : Ermanno Francesco Sannini, Francesco Salzano, Simone Scalabrino, Rocco Oliveto, Remo Pareschi, Corrado Aaron Visaggio, Andrea Di Sorbo

Article original sous licence CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Ceci est une explication générée par l'IA de l'article ci-dessous. Elle n'a pas été rédigée ni approuvée par les auteurs. Pour une précision technique, consultez l'article original. Lire la clause de non-responsabilité complète

Imaginez le monde des Contrats Intelligents (les accords numériques qui s'exécutent sur des blockchains comme Ethereum) comme une immense bibliothèque publique. Une fois qu'un livre (un contrat) est écrit et rangé sur une étagère, il ne peut jamais être effacé ni modifié. Comme les livres sont publics, les auteurs copient souvent-collent des sections d'autres livres pour gagner du temps. Cela s'appelle le « clonage ».

La plupart du temps, le copier-coller est facile à repérer. Si vous copiez un paragraphe mot pour mot, c'est évident. Mais que se passe-t-il si quelqu'un réécrit un paragraphe en utilisant des mots complètement différents, modifie la structure de la phrase et remplace quelques synonymes, tout en conservant exactement le même sens ? Dans le monde du codage, cela s'appelle un Clone Sémantique (ou un clone de type 4).

Cet article traite de la création d'un meilleur « bibliothécaire » pour détecter ces copies cachées et reformulées dans Solidity (le langage utilisé pour écrire ces contrats), car copier une mauvaise logique peut propager des failles de sécurité tout aussi facilement que copier une bonne logique.

Voici une décomposition de leur travail utilisant des analogies simples :

1. Le Problème : Le Piège de la « Recette Reformulée »

Imaginez deux chefs écrivant des recettes pour un « Gâteau au Chocolat ».

  • Le Chef A écrit : « Mélangez la farine, le sucre et les œufs. Cuisez à 175 °C. »
  • Le Chef B écrit : « Combine les ingrédients secs avec les ingrédients humides. Placez au four à 175 °C. »

Pour un ordinateur cherchant des correspondances exactes, ces deux textes semblent totalement différents. Mais pour un humain, c'est la même recette. Dans le monde de la blockchain, si la recette du Chef A comporte un défaut caché (comme oublier de vérifier si le four est chaud), et que le Chef B copie l'idée sans remarquer le défaut, toute la cuisine est en danger.

Les auteurs ont constaté que les outils existants sont comme des robots qui ne cherchent que des correspondances exactes de mots. Ils manquent ces « recettes reformulées ».

2. La Solution : Lire les « Notes du Chef »

Les chercheurs ont réalisé que, bien que le code (les ingrédients et les étapes) puisse sembler différent, les commentaires (les notes que le chef a écrites au-dessus de la recette) expliquent souvent l'intention de manière très similaire.

  • L'Analogie : Considérez le code comme les actions et les commentaires comme le voice-over expliquant ce que font les actions.
  • La Méthode : Ils ont construit un système qui compare deux éléments :
    1. Le Code : Ils vérifient si le code est différent (faible similarité).
    2. Les Commentaires : Ils vérifient si les descriptions écrites sont très similaires (forte similarité).

Si le code semble différent mais que le voice-over sonne de la même manière, ils le signalent comme un « Clone Sémantique ».

3. Les Résultats : Un Détective Très Précis

Ils ont testé cette méthode sur un vaste ensemble de données comprenant près de 300 000 contrats intelligents modernes.

  • Le Taux de Succès : Lorsqu'ils ont vérifié manuellement un échantillon de 1 155 paires, leur méthode était correcte 59 % du temps dans l'ensemble.
  • Le Bonus « Même Nom » : Si les fonctions portaient le même nom (comme étant toutes deux appelées transfer), la précision a grimpé à 84 %.
  • Le Filet de Sécurité : Ils ont également vérifié s'ils en avaient manqué. Ils ont découvert qu'ils en avaient manqué seulement environ 3 % des vrais clones (un taux de « rappel » de 97 %).

Ils ont découvert que ces « recettes reformulées » ne sont pas de simples accidents ; ce sont souvent des choix de conception. Les développeurs les réécrivent pour rendre le code plus sécurisé, pour économiser du « gaz » (les frais payés pour exécuter le contrat) ou pour mieux organiser le code.

4. Le Défi : La Bibliothèque « Silencieuse »

Un problème majeur qu'ils ont constaté est que 75 % de ces fonctions ne comportent aucun commentaire. C'est comme avoir une bibliothèque où trois quarts des livres n'ont ni titre ni résumé. Sans commentaires, leur méthode de « voice-over » ne peut pas fonctionner.

5. La Correction : Le « Scribe IA » (LLM)

Pour résoudre le problème de la « bibliothèque silencieuse », ils ont utilisé des Modèles de Langage de Grande Taille (IA) pour agir en tant que scribes.

  • L'Analogie : Si un livre n'a pas de résumé, ils ont demandé à l'IA de lire le code et d'écrire un résumé pour lui.
  • L'Expérience : Ils ont fourni le code à l'IA, lui ont demandé d'écrire une description, puis ont utilisé leur système pour comparer les descriptions générées par l'IA.
  • Le Résultat : Même sans notes écrites par des humains, les résumés générés par l'IA leur ont permis de trouver correctement 75 % des clones cachés.

Ils ont également testé différents « prompts » (instructions données à l'IA). Ils ont constaté que demander à l'IA un résumé simple et direct fonctionnait mieux que de demander un rapport complexe et structuré. Les rapports complexes ajoutaient trop de « remplissage » qui perturbait le système, tandis que les résumés simples maintenaient l'accent sur le sens fondamental.

6. Pourquoi Cela Compte

Les auteurs concluent que cela ne concerne pas seulement la recherche de doublons, mais la recherche d'alternatives.

  • Si vous êtes un développeur construisant un contrat sécurisé, vous ne voulez pas seulement une façon de faire quelque chose. Vous voulez voir toutes les différentes façons dont d'autres personnes ont résolu le même problème.
  • En trouvant ces clones sémantiques, les développeurs peuvent comparer différentes « recettes reformulées » pour voir laquelle est plus sûre, moins chère ou plus efficace avant de construire la leur.

En bref : L'article présente une nouvelle façon de trouver des « jumeaux cachés » dans le code en comparant l'intention (commentaires) plutôt que simplement la syntaxe (code). Lorsque les commentaires manquent, ils utilisent l'IA pour les écrire, découvrant avec succès des alternatives de conception cachées qui pourraient aider à rendre les contrats blockchain plus sûrs et plus efficaces.

Noyé(e) sous les articles dans votre domaine ?

Recevez des digests quotidiens des articles les plus récents correspondant à vos mots-clés de recherche — avec des résumés techniques, dans votre langue.

Essayer Digest →