Mining of Smart Contract Patterns

List, Michael · reposiTUm (TU Wien) · 2025

Ethereum ist seit Jahren die größte Smart-Contract-Blockchain und nach Bitcoin die zweitgrößte Blockchain-Plattform. Smart-Contracts, die als dezentrale Anwendungen beschrieben werden können, laufen auf einer gemeinsamen Rechenplattform, auf der alle Teilnehmer auf einer geteilten Codebasis arbeiten. Zur Absicherung ist es nötig, dass ein Konsens über die Ein- und Ausgaben aller Smart-Contracts geschaffen wird. Die Ausführung von Smart-Contract-Code verbraucht sogenannte Gas-Einheiten, die als eine Art Treibstoff betrachtet werden können. Gas-Einheiten zeigen den erforderlichen Rechenaufwand an und haben direkte Auswirkungen auf den realen Energieverbrauch. Daher sollten idealerweise alle Smart-Contracts so implementiert sein, dass sie möglichst wenig Gas-Einheiten verbrauchen. Derartige Codeoptimierungsansätze sind nicht trivial. Zum Zeitpunkt des Verfassens dieser Diplomarbeit gibt es bereits solche Mechanismen, welche teilweise direkt in den gängigen Compilern integriert sind. Solche Mechanismen basieren in der Regel auf festen Mustern, welche manuell beschrieben werden müssen und dann auf Smart-Contracts angewendet werden können. In dieser Arbeit haben wir untersucht, ob klassische Verfahren zur Erkennung von Codeähnlichkeiten verwendet werden können, um Optimierungsmuster automatisch aus Quellcode-Repositories ableiten zu können. Zunächst haben wir einen Symbolic-Execution-Ansatz untersucht, welcher sich aufgrund von technischen Einschränkungen und der Abhängigkeit von veralteten Compiler-Versionen als ungeeignet erwies. Daraufhin haben wir einen Fingerprinting-Ansatz basierend auf Kontrollflussgraph-Blöcken gewählt. Mithilfe von Slither konnten wir Metriken wie Cyclomatic-Complexity, Fan-Out und Informationsfluss-Metriken extrahieren und anschließend Distanzen zwischen Codestücken berechnen, um mit den Ergebnissen potenzielle semantische Code-Klone zu erkennen. Wir haben die Evaluierung unseres Ansatzes auf 1.200 manuell markierten Smart-Contracts aus einem Datensatz mit 160.000 Einträgen durchgeführt, was zu 574 Vergleichen führte und konnten eine korrigierte Genauigkeit von 88% für die Erkennung von semantischen Code-Äquivalenzen auf Blockebene erzielen. Für 1.300 Code-Paare haben wir zusätzlich eine Gasverbrauchsmessung durchgeführt, indem wir die Blöcke in generierte Smart-Contracts verpackt und auf einer lokalen Blockchain ausgeführt haben. Dabei konnten wir tatsächliche gasreduzierende Codeänderungen identifizieren. Trotz einiger wesentlichen Einschränkungen zeigt das, dass das Mining gasoptimiertem Codes aus versionierten Source-Code-Repositories mittels Code-Metriken möglich ist.

Read the paper · More papers on PaperTik