← Ultimi articoli
💻 computer science

Identifying and Characterizing Semantic Clones of Solidity Functions

Questo articolo presenta una metodologia scalabile per l'identificazione di cloni semantici negli smart contract Solidity attraverso l'analisi di codice e commenti, ottenendo elevata precisione e richiamo mentre esplora alternative di progettazione strutturale e sfrutta i Large Language Models per colmare le lacune documentali nel codice privo di commenti.

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

Pubblicato 2026-04-30
📖 5 min di lettura🧠 Approfondimento

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

Articolo originale sotto licenza CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Questa è una spiegazione generata dall'IA dell'articolo qui sotto. Non è stata scritta né approvata dagli autori. Per precisione tecnica, consulta l'articolo originale. Leggi il disclaimer completo

Immagina il mondo degli Smart Contract (gli accordi digitali che vengono eseguiti su blockchain come Ethereum) come una vasta biblioteca pubblica. Una volta che un libro (un contratto) è stato scritto e messo sullo scaffale, non può mai essere cancellato o modificato. Poiché i libri sono pubblici, gli scrittori spesso copiano e incollano sezioni da altri libri per risparmiare tempo. Questo è chiamato "clonazione".

Nella maggior parte dei casi, la copia è facile da individuare. Se copi un paragrafo parola per parola, è ovvio. Ma cosa succede se qualcuno riscrive un paragrafo usando parole completamente diverse, cambia la struttura della frase e sostituisce alcuni sinonimi, ma il significato rimane esattamente lo stesso? Nel mondo della programmazione, questo è chiamato Clonazione Semantica (o clonazione di Tipo-4).

Questo articolo riguarda la creazione di un "bibliotecario" migliore per trovare queste copie nascoste e riformulate in Solidity (il linguaggio utilizzato per scrivere questi contratti), perché copiare una logica errata può diffondere vulnerabilità di sicurezza tanto facilmente quanto copiare una logica corretta.

Ecco una panoramica del loro lavoro utilizzando semplici analogie:

1. Il Problema: La Trappola della "Ricetta Riscritta"

Immagina due chef che scrivono ricette per una "Torta al Cioccolato".

  • Chef A scrive: "Mescola farina, zucchero e uova. Inforna a 175°C."
  • Chef B scrive: "Unisci gli ingredienti secchi con quelli umidi. Metti in forno a 175°C."

Per un computer che cerca corrispondenze esatte, queste sembrano totalmente diverse. Ma per un umano, sono la stessa ricetta. Nel mondo della blockchain, se la ricetta dello Chef A ha un difetto nascosto (come dimenticare di verificare se il forno è caldo), e lo Chef B copia l'idea senza notare il difetto, l'intera cucina è in pericolo.

Gli autori hanno scoperto che gli strumenti esistenti sono come robot che cercano solo corrispondenze esatte di parole. Perdono queste "ricette riscritte".

2. La Soluzione: Leggere le "Note dello Chef"

I ricercatori hanno realizzato che mentre il codice (gli ingredienti e i passaggi) potrebbe sembrare diverso, i commenti (le note che lo chef ha scritto sopra la ricetta) spesso spiegano l'intento in modi molto simili.

  • L'Analogia: Pensa al codice come alle azioni e ai commenti come alla voce fuori campo che spiega cosa stanno facendo le azioni.
  • Il Metodo: Hanno costruito un sistema che confronta due cose:
    1. Il Codice: Verificano se il codice è diverso (bassa similarità).
    2. I Commenti: Verificano se le descrizioni scritte sono molto simili (alta similarità).

Se il codice sembra diverso ma la voce fuori campo suona uguale, lo segnalano come una "Clonazione Semantica".

3. I Risultati: Un Investigatore Altamente Preciso

Hanno testato questo metodo su un vasto dataset di quasi 300.000 smart contract moderni.

  • Il Tasso di Successo: Quando hanno controllato manualmente un campione di 1.155 coppie, il loro metodo è stato corretto nel 59% dei casi complessivamente.
  • Il Bonus "Stesso Nome": Se le funzioni avevano lo stesso nome (come essere entrambe chiamate transfer), l'accuratezza è salita all'84%.
  • La Rete di Sicurezza: Hanno anche verificato se ne avevano persi alcuni. Hanno scoperto di aver perso solo circa il 3% delle clonazioni reali (un tasso di "recall" del 97%).

Hanno scoperto che queste "ricette riscritte" non sono solo incidenti; sono spesso scelte di progettazione. Gli sviluppatori le riscrivono per rendere il codice più sicuro, per risparmiare "gas" (la tassa pagata per eseguire il contratto) o per organizzare meglio il codice.

4. La Sfida: La Biblioteca "Silenziosa"

Un problema maggiore che hanno riscontrato è che il 75% di queste funzioni non ha commenti. È come avere una biblioteca in cui tre quarti dei libri non hanno titoli o riassunti. Senza commenti, il loro metodo della "voce fuori campo" non può funzionare.

5. La Soluzione: Lo "Scrivano AI" (LLM)

Per risolvere il problema della "biblioteca silenziosa", hanno utilizzato i Modelli Linguistici di Grandi Dimensioni (AI) per agire come scrivani.

  • L'Analogia: Se un libro non ha un riassunto, hanno chiesto all'AI di leggere il codice e scrivere un riassunto per esso.
  • L'Esperimento: Hanno fornito all'AI il codice, gli hanno chiesto di scrivere una descrizione e poi hanno utilizzato il loro sistema per confrontare le descrizioni generate dall'AI.
  • Il Risultato: Anche senza note scritte da umani, i riassunti generati dall'AI hanno permesso loro di trovare correttamente il 75% delle clonazioni nascoste.

Hanno anche testato diversi "prompt" (istruzioni per l'AI). Hanno scoperto che chiedere all'AI un riassunto semplice e diretto funzionava meglio rispetto alla richiesta di un rapporto complesso e strutturato. I rapporti complessi aggiungevano troppi "fronzoli" che confondevano il sistema, mentre i riassunti semplici mantenevano il focus sul significato fondamentale.

6. Perché Questo È Importante

Gli autori concludono che non si tratta solo di trovare duplicati; si tratta di trovare alternative.

  • Se sei uno sviluppatore che costruisce un contratto sicuro, non vuoi solo un modo per fare qualcosa. Vuoi vedere tutti i modi diversi in cui altre persone hanno risolto lo stesso problema.
  • Trovando queste clonazioni semantiche, gli sviluppatori possono confrontare diverse "ricette riscritte" per vedere quale è più sicura, economica o efficiente prima di costruire la propria.

In sintesi: L'articolo presenta un nuovo modo per trovare "gemelli nascosti" nel codice confrontando l'intento (i commenti) piuttosto che solo la sintassi (il codice). Quando i commenti mancano, usano l'AI per scriverli, scoprendo con successo alternative di progettazione nascoste che potrebbero aiutare a rendere i contratti blockchain più sicuri ed efficienti.

Sommerso dagli articoli nel tuo campo?

Ricevi digest giornalieri degli articoli più recenti corrispondenti alle tue parole chiave di ricerca — con riassunti tecnici, nella tua lingua.

Prova Digest →