English

SMT-Friendly Formalization of the Solidity Memory Model

Programming Languages 2020-04-20 v2 Logic in Computer Science Software Engineering

Abstract

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.

Keywords

Cite

@article{arxiv.2001.03256,
  title  = {SMT-Friendly Formalization of the Solidity Memory Model},
  author = {Ákos Hajdu and Dejan Jovanović},
  journal= {arXiv preprint arXiv:2001.03256},
  year   = {2020}
}

Comments

Authors' manuscript. Published in P. M\"uller (Ed.): ESOP 2020, LNCS 12075, 2020. The final publication is available at Springer via https://doi.org/10.1007/978-3-030-44914-8_9

R2 v1 2026-06-23T13:07:34.556Z