Identifying and Characterizing Semantic Clones of Solidity Functions
Dieser Beitrag stellt eine skalierbare Methodik zur Identifizierung semantischer Klone in Solidity-Smart Contracts vor, die durch die Analyse von Code und Kommentaten hohe Präzision und Recall erzielt, strukturelle Designalternativen untersucht und Large Language Models nutzt, um Dokumentationslücken in kommentlosem Code zu überbrücken.
Originalarbeit lizenziert unter CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dies ist eine KI-generierte Erklärung des untenstehenden Papers. Sie wurde nicht von den Autoren verfasst oder gebilligt. Für technische Genauigkeit konsultieren Sie das Originalpaper. Vollständigen Haftungsausschluss lesen
Stellen Sie sich die Welt der Smart Contracts (die digitalen Vereinbarungen, die auf Blockchains wie Ethereum laufen) als eine riesige, öffentliche Bibliothek vor. Sobald ein Buch (ein Vertrag) geschrieben und ins Regal gestellt wurde, kann es niemals gelöscht oder verändert werden. Da die Bücher öffentlich sind, kopieren Autoren oft Abschnitte aus anderen Büchern, um Zeit zu sparen. Dies wird als „Klonen" bezeichnet.
Meistens ist das Kopieren leicht zu erkennen. Wenn Sie einen Absatz wortwörtlich kopieren, ist es offensichtlich. Aber was, wenn jemand einen Absatz mit völlig anderen Worten umschreibt, die Satzstruktur ändert und ein paar Synonyme austauscht, aber die Bedeutung genau gleich bleibt? In der Welt der Programmierung nennt man dies einen semantischen Klon (oder einen Typ-4-Klon).
Diese Arbeit handelt davon, einen besseren „Bibliothekar" zu entwickeln, um diese versteckten, umformulierten Kopien in Solidity (der Sprache, mit der diese Verträge geschrieben werden) zu finden, denn das Kopieren schlechter Logik kann Sicherheitslücken genauso leicht verbreiten wie das Kopieren guter Logik.
Hier ist eine Aufschlüsselung ihrer Arbeit mit einfachen Analogien:
1. Das Problem: Die Falle des „umschriebenen Rezepts"
Stellen Sie sich zwei Köche vor, die Rezepte für „Schokoladenkuchen" schreiben.
- Koch A schreibt: „Mehl, Zucker und Eier mischen. Bei 175 °C backen."
- Koch B schreibt: „Trockene Zutaten mit feuchten Zutaten vermengen. Im Ofen bei 175 °C backen."
Für einen Computer, der nach exakten Übereinstimmungen sucht, sehen diese völlig unterschiedlich aus. Für einen Menschen sind es jedoch dasselbe Rezept. In der Blockchain-Welt, wenn das Rezept von Koch A einen versteckten Fehler hat (wie das Vergessen zu prüfen, ob der Ofen heiß ist) und Koch B die Idee kopiert, ohne den Fehler zu bemerken, ist die ganze Küche in Gefahr.
Die Autoren stellten fest, dass bestehende Tools wie Roboter sind, die nur nach exakten Wortübereinstimmungen suchen. Sie verpassen diese „umschriebenen Rezepte".
2. Die Lösung: Die „Notizen des Kochs" lesen
Die Forscher erkannten, dass, während der Code (die Zutaten und Schritte) anders aussehen mag, die Kommentare (die Notizen, die der Koch über das Rezept geschrieben hat) die Absicht oft auf sehr ähnliche Weise erklären.
- Die Analogie: Denken Sie an den Code als die Handlungen und die Kommentare als den Voice-over, der erklärt, was die Handlungen tun.
- Die Methode: Sie entwickelten ein System, das zwei Dinge vergleicht:
- Der Code: Sie prüfen, ob der Code anders ist (geringe Ähnlichkeit).
- Die Kommentare: Sie prüfen, ob die geschriebenen Beschreibungen sehr ähnlich sind (hohe Ähnlichkeit).
Wenn der Code anders aussieht, aber der Voice-over gleich klingt, markieren sie ihn als „semantischen Klon".
3. Die Ergebnisse: Ein hochpräziser Detektiv
Sie testeten diese Methode an einem riesigen Datensatz von fast 300.000 modernen Smart Contracts.
- Die Erfolgsquote: Als sie eine Stichprobe von 1.155 Paaren manuell überprüften, lag ihre Methode insgesamt in 59 % der Fälle richtig.
- Der Bonus „gleicher Name": Wenn die Funktionen denselben Namen hatten (beide beispielsweise
transfergenannt), stieg die Genauigkeit auf 84 %. - Das Sicherheitsnetz: Sie überprüften auch, ob sie welche übersehen hatten. Sie stellten fest, dass sie nur etwa 3 % der echten Klone übersehen hatten (eine „Recall"-Rate von 97 %).
Sie entdeckten, dass diese „umschriebenen Rezepte" nicht nur Zufälle sind; sie sind oft Designentscheidungen. Entwickler schreiben sie um, um den Code sicherer zu machen, „Gas" zu sparen (die Gebühr, die für die Ausführung des Vertrags gezahlt wird), oder um den Code besser zu organisieren.
4. Die Herausforderung: Die „stille" Bibliothek
Ein großes Problem, das sie fanden, ist, dass 75 % dieser Funktionen überhaupt keine Kommentare haben. Es ist wie eine Bibliothek, in der drei Viertel der Bücher keine Titel oder Zusammenfassungen haben. Ohne Kommentare kann ihre „Voice-over"-Methode nicht funktionieren.
5. Die Lösung: Der „KI-Schreiber" (LLMs)
Um das Problem der „stille Bibliothek" zu lösen, setzten sie Large Language Models (KI) ein, um als Schreiber zu fungieren.
- Die Analogie: Wenn ein Buch keine Zusammenfassung hat, baten sie die KI, den Code zu lesen und eine Zusammenfassung dafür zu schreiben.
- Das Experiment: Sie gaben der KI den Code, baten sie, eine Beschreibung zu schreiben, und nutzten dann ihr System, um die von der KI geschriebenen Beschreibungen zu vergleichen.
- Das Ergebnis: Selbst ohne von Menschen geschriebene Notizen ermöglichten die von der KI generierten Zusammenfassungen ihnen, 75 % der versteckten Klone korrekt zu finden.
Sie testeten auch verschiedene „Prompts" (Anweisungen an die KI). Sie stellten fest, dass die Aufforderung an die KI nach einer einfachen, direkten Zusammenfassung besser funktionierte als die Aufforderung nach einem komplexen, strukturierten Bericht. Die komplexen Berichte fügten zu viel „Füllmaterial" hinzu, das das System verwirrte, während einfache Zusammenfassungen den Fokus auf die Kernbedeutung behielten.
6. Warum dies wichtig ist
Die Autoren kommen zu dem Schluss, dass es hier nicht nur darum geht, Duplikate zu finden, sondern Alternativen zu finden.
- Wenn Sie ein Entwickler sind, der einen sicheren Vertrag erstellt, wollen Sie nicht nur eine Möglichkeit, etwas zu tun. Sie wollen alle verschiedenen Wege sehen, wie andere Menschen dasselbe Problem gelöst haben.
- Durch das Finden dieser semantischen Klone können Entwickler verschiedene „umschriebene Rezepte" vergleichen, um zu sehen, welches sicherer, günstiger oder effizienter ist, bevor sie ihren eigenen erstellen.
Kurz gesagt: Die Arbeit präsentiert einen neuen Weg, „versteckte Zwillinge" im Code zu finden, indem sie die Absicht (Kommentare) vergleichen und nicht nur die Syntax (Code). Wenn Kommentare fehlen, verwenden sie KI, um sie zu schreiben, und decken erfolgreich versteckte Designalternativen auf, die dazu beitragen könnten, Blockchain-Verträge sicherer und effizienter zu machen.
Ertrinken Sie in Arbeiten in Ihrem Fachgebiet?
Erhalten Sie tägliche Digests der neuesten Arbeiten passend zu Ihren Forschungsbegriffen — mit technischen Zusammenfassungen, in Ihrer Sprache.