Verification of Solidity: Data Types, Memory Models, and Inheritance

dc.contributor.authorEkgrim , Christoffer
dc.contributor.departmentChalmers tekniska högskola / Institutionen för data och informationstekniksv
dc.contributor.departmentChalmers University of Technology / Department of Computer Science and Engineeringen
dc.contributor.examinerAngelov, Krasimir
dc.contributor.supervisorAhrendt, Wolfgang
dc.date.accessioned2022-11-23T10:22:28Z
dc.date.available2022-11-23T10:22:28Z
dc.date.issued2022
dc.date.submitted2020
dc.description.abstractSmart contracts are programs on the Ethereum blockchain that can not only hold, send, and receive ether – the native cryptocurrency of Ethereum – but can also record and reinforce transactions made with it. A contract consists of data and functions, and user accounts may interact with the contract by invoking one of these functions, resulting in a protocol enforced by the contract’s internal logic. Often, smart contracts are written in Solidity – a programming language inspired by C++ and Python. The functional correctness of these contracts is crucial; potential bugs could be exploited, which could result in the contract’s users incurring major financial losses. Thus, tools exist for formally verifying contracts written in Solidity. SolidiKeY is one such prototype tool, being based on the tool KeY. It uses deductive verification and works by interpreting the statements of a function one-by-one and using calculus rules to draw conclusions about its behavior. However, SolidiKeY does not yet cover or model all aspects of the Solidity language. In this thesis project, we aimed to extend SolidiKeY’s coverage of Solidity. We were able to improve SolidiKeY’s support for contract inheritance, function modifiers, and libraries, among other things, by making SolidiKeY transform input contracts so that they are more compatible with the KeY aspect of SolidiKeY. Moreover, we implemented a model of storage, which now allows SolidiKeY to reason correctly about the copy semantics for assignments made within storage. However, this modeling remains incomplete, e.g., SolidiKeY does not yet model local storage variables. Furthermore, SolidiKeY’s support for mappings is still poor. Once these difficulties have been sorted out, SolidiKeY is set to become an excellent tool for smart contract verification.
dc.identifier.coursecodeDATX05
dc.identifier.urihttps://odr.chalmers.se/handle/20.500.12380/305822
dc.language.isoeng
dc.setspec.uppsokTechnology
dc.subjectdeductive verification
dc.subjectEthereum
dc.subjectformal verification
dc.subjectKeY
dc.subjectsmart contracts
dc.subjectSolidiKeY
dc.subjectSolidity
dc.titleVerification of Solidity: Data Types, Memory Models, and Inheritance
dc.type.degreeExamensarbete för masterexamensv
dc.type.degreeMaster's Thesisen
dc.type.uppsokH
local.programmeComputer science – algorithms, languages and logic (MPALG), MSc
Ladda ner
Original bundle
Visar 1 - 1 av 1
Hämtar...
Bild (thumbnail)
Namn:
CSE 22-106 Ekgrim.pdf
Storlek:
774.45 KB
Format:
Adobe Portable Document Format
Beskrivning:
License bundle
Visar 1 - 1 av 1
Hämtar...
Bild (thumbnail)
Namn:
license.txt
Storlek:
1.64 KB
Format:
Item-specific license agreed upon to submission
Beskrivning: