PLLOSEJan 9, 2020

SMT-Friendly Formalization of the Solidity Memory Model

arXiv:2001.03256v226 citations
AI Analysis

This work addresses the need for reliable verification tools for smart contract developers, though it is incremental as it builds on existing formalization efforts.

The paper tackles the problem of formalizing Solidity's memory model for Ethereum smart contracts, resulting in a high-level formalization that enables precise and efficient reasoning using SMT theories, implemented in the solc-verify verifier with extensive testing and evaluation.

Solidity is the dominant programming language for Ethereum smart contracts. This paper presents a high-level formalization of the Solidity language with a focus on the memory model. The presented formalization covers all features of the language related to managing state and memory. In addition, the formalization we provide is effective: all but few features can be encoded in the quantifier-free fragment of standard SMT theories. This enables precise and efficient reasoning about the state of smart contracts written in Solidity. The formalization is implemented in the solc-verify verifier and we provide an extensive set of tests that covers the breadth of the required semantics. We also provide an evaluation on the test set that validates the semantics and shows the novelty of the approach compared to other Solidity-level contract analysis tools.

Code Implementations1 repo
Foundations

The foundational work for this paper's niche, ranked by how specifically the neighbourhood builds on it — not by global fame.

Your Notes