<div class="csl-bib-body">
<div class="csl-entry">Knoll, R. (2025). <i>Finding Inconsistency Bugs in Solidity Smart Contracts</i> [Diploma Thesis, Technische Universität Wien]. reposiTUm. https://doi.org/10.34726/hss.2025.119948</div>
</div>
-
dc.identifier.uri
https://doi.org/10.34726/hss.2025.119948
-
dc.identifier.uri
http://hdl.handle.net/20.500.12708/215485
-
dc.description
Arbeit an der Bibliothek noch nicht eingelangt - Daten nicht geprüft
-
dc.description
Abweichender Titel nach Übersetzung der Verfasserin/des Verfassers
-
dc.description.abstract
In Solidity entwickelte Smart Contracts werden dazu verwendet, große Mengen an Geldwert auf der Ethereum Blockchain zu verwalten. Das macht diese Programme zu einem häufigen Ziel für Angriffe. Statische Codeanalyse kann dabei helfen, Bugs in Smart Contracts zu finden und Schwachstellen zu verhindern. Im Besonderen sind Inkonsistenzen im Code eine Art von Fehler, der mit statischer Codeanalyse gefunden werden kann.Diese Diplomarbeit untersucht die Verwendung von Inkonsistenzmustern, um Fehler in Solidity Smart Contracts zu finden. Acht solche Muster, die speziell für Solidity relevant sind, werden ausgewählt und zwei statischen Codeanalyseprogrammen implementiert. Das erste dieser Programme ist Semgrep, ein Framework zur Mustererkennung in Code. Wir zeigen, dass Semgrep stark darin ist, schnell neue Inkonsistenzmuster zu implementieren, und dass es für mehrere solche Muster effektive Codeanalyse bietet. Wir demonstrieren jedoch auch, dass Semgrep gewisse Einschränkungen in seiner Unterstützung für Solidity aufweist. Um diese Einschränkungen zu überwinden, stellen wir SIA vor, den Solidity Inconsistency Analyzer. SIA übersetzt Solidity Quellcode in Datalog Fakten und verwendet eine leistungsstarke Datalog Engine, um den Code auf Inkonsistenzmuster zu überprüfen. Dies ermöglicht es dem Programm, Vorfälle aller ausgewählten Inkonsistenzmuster zu finden und den funktionsübergreifenden Kontrollfluss auf einem höheren Niveau als Semgrep zu verstehen. Wir zeigen, dass beide statischen Analysewerkzeuge in der Lage sind, Inkonsistenzen in realen Smart Contracts zu finden, und heben die unterschiedlichen Eigenschaften der beiden Werkzeuge hervor.
de
dc.description.abstract
Solidity smart contracts are used to manage large amounts of monetary value on the Ethereum block chain, making them a frequent target for attacks. Static code analysis tools can help to discover bugs in these programs and prevent vulnerabilities. In particular, inconsistencies in code are a class of bugs that can be detected by static code analysis.This paper explores the use of inconsistency patterns to find bugs in Solidity smart contracts. We select eight patterns that are specifically relevant for Solidity and implement the patterns in two static analysis tools. The first tool is Semgrep, a framework for pattern matching in code. We show that Semgrep is useful for swiftly developing new inconsistency patterns and, for a number of patterns, can provide effective code analysis. However, we also demonstrate that Semgrep has limitations in its support for the Solidity language. To address these limitations, we present SIA, the Solidity Inconsistency Analyzer. SIA translates Solidity code to Datalog facts and uses a high-performance Datalog engine to analyze the code for inconsistency patterns. This enables the tool to find instances of all the selected inconsistency patterns and comprehend interprocedural control flow to a higher level than Semgrep. We show that both static analyzers are able to find inconsistencies in real world Solidity programs and highlight the different characteristics of the two tools.
en
dc.language
English
-
dc.language.iso
en
-
dc.rights.uri
http://rightsstatements.org/vocab/InC/1.0/
-
dc.subject
Solidity
en
dc.subject
Smart Contracts
en
dc.subject
Static Code Analysis
en
dc.subject
Inconsistency Patterns
en
dc.subject
Blockchain
en
dc.subject
Software Engineering
en
dc.subject
Code Quality
en
dc.title
Finding Inconsistency Bugs in Solidity Smart Contracts
en
dc.type
Thesis
en
dc.type
Hochschulschrift
de
dc.rights.license
In Copyright
en
dc.rights.license
Urheberrechtsschutz
de
dc.identifier.doi
10.34726/hss.2025.119948
-
dc.contributor.affiliation
TU Wien, Österreich
-
dc.rights.holder
Robin Knoll
-
dc.publisher.place
Wien
-
tuw.version
vor
-
tuw.thesisinformation
Technische Universität Wien
-
dc.contributor.assistant
Hochrainer, Christoph
-
tuw.publication.orgunit
E194 - Institut für Information Systems Engineering
-
dc.type.qualificationlevel
Diploma
-
dc.identifier.libraryid
AC17522785
-
dc.description.numberOfPages
69
-
dc.thesistype
Diplomarbeit
de
dc.thesistype
Diploma Thesis
en
dc.rights.identifier
In Copyright
en
dc.rights.identifier
Urheberrechtsschutz
de
tuw.advisor.staffStatus
staff
-
tuw.assistant.staffStatus
staff
-
tuw.advisor.orcid
0000-0002-2649-1958
-
item.openairetype
master thesis
-
item.fulltext
with Fulltext
-
item.grantfulltext
open
-
item.cerifentitytype
Publications
-
item.languageiso639-1
en
-
item.openaccessfulltext
Open Access
-
item.openairecristype
http://purl.org/coar/resource_type/c_bdcc
-
crisitem.author.dept
E194 - Institut für Information Systems Engineering