Abstract:
Mit der vorliegenden Arbeit wird ein Simulationstool entwickelt, um verschiedene Tools zur Gaskostenoptimierung von Smart Contracts miteinander zu vergleichen. Hierzu werden ausgewählte Optimierungstools aus der Literatur mit Fokus auf einer automatischen Optimierung von Smart Contracts vorgestellt. Außerdem werden die Smart Contracts mit Hilfe von künstlicher Intelligenz optimiert. Die Optimierungstools werden auf bestehende Smart Contracts angewendet und diese werden anschließend mit den ursprünglichen Transaktionen auf einer lokalen Blockchain simuliert. Die Ergebnisse der Simulation werden mit statistischen Verfahren analysiert und ausgewertet. Durch diese Auswertung können die Optimierungstools miteinander verglichen werden. Die Entwicklung des erforderlichen Simulationstools und dessen Programmablauf werden erläutert und visuell dargestellt. Darüber hinaus werden die grundlegenden Konzepte der Blockchain Technologie, die Funktionsweise von Smart Contracts sowie deren Transaktionskosten anhand der Ethereum Blockchain erklärt. Die Ergebnisse zeigen, dass insbesondere der Compiler Optimierer die durchschnittlichen Transaktionskosten um 1.357 Gas senken konnte. Auch die Deploymentkosten konnten durchschnittlich um 1.205.269 Gas reduziert werden. Für die Simulation wurden 100 zufällig ausgewählte Smart Contracts verwendet und insgesamt wurden 630.533 Transaktionen analysiert.
Das Simulationstool wurde mit der Programmiersprache JavaScript in Node.js umgesetzt. Das Tool ist eine reine Konsolenanwendung und bietet keine grafische Benutzeroberfläche an. Als Entwicklungsumgebung wurde WebStorm von JetBrains verwendet. Die Anwendung kann anhand einer Smart Contract Adresse den Quellcode von Etherscan herunterladen und mit verschiedenen Compiler Einstellungen kompilieren. Außerdem können alle Transaktionen eines Smart Contracts runtergeladen werden und diese werden anschließend in Gruppen aufgeteilt. Die Transaktionen werden ebenfalls von der Etherscan API abgerufen. Die Transaktionen werden in einer lokalen SQLite Datenbank gespeichert.
Note (1,3)