,
Daniele Gorla
,
Stian Lybech
Creative Commons Attribution 4.0 International license
In this paper we focus on TinySol, a minimal calculus for Solidity smart contracts, introduced by Bartoletti et al. We start by rephrasing its syntax (to emphasise its object-oriented flavour) and give a new big-step operational semantics. We then use it to define two security properties, namely call integrity and noninterference. These two properties have some similarities in their definition, in that they both require that some part of a program is not influenced by the other part. However, we show that the two properties are actually incomparable. Nevertheless, we provide a type system for noninterference and show that well-typed programs satisfy call integrity as well; hence, programs that are accepted by our type system satisfy both properties. We finally discuss the practical usability of the type system and its limitations by means of some simple examples.
@InProceedings{aceto_et_al:LIPIcs.ECOOP.2024.1,
author = {Aceto, Luca and Gorla, Daniele and Lybech, Stian},
title = {{A Sound Type System for Secure Currency Flow}},
booktitle = {38th European Conference on Object-Oriented Programming (ECOOP 2024)},
pages = {1:1--1:27},
series = {Leibniz International Proceedings in Informatics (LIPIcs)},
ISBN = {978-3-95977-341-6},
ISSN = {1868-8969},
year = {2024},
volume = {313},
editor = {Aldrich, Jonathan and Salvaneschi, Guido},
publisher = {Schloss Dagstuhl -- Leibniz-Zentrum f{\"u}r Informatik},
address = {Dagstuhl, Germany},
URL = {https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2024.1},
URN = {urn:nbn:de:0030-drops-208508},
doi = {10.4230/LIPIcs.ECOOP.2024.1},
annote = {Keywords: smart contracts, call integrity, noninterference, type system}
}