English

solc-verify: A Modular Verifier for Solidity Smart Contracts

Programming Languages 2020-03-17 v2 Logic in Computer Science Software Engineering

Abstract

We present solc-verify, a source-level verification tool for Ethereum smart contracts. Solc-verify takes smart contracts written in Solidity and discharges verification conditions using modular program analysis and SMT solvers. Built on top of the Solidity compiler, solc-verify reasons at the level of the contract source code, as opposed to the more common approaches that operate at the level of Ethereum bytecode. This enables solc-verify to effectively reason about high-level contract properties while modeling low-level language semantics precisely. The contract properties, such as contract invariants, loop invariants, and function pre- and post-conditions, can be provided as annotations in the code by the developer. This enables automated, yet user-friendly formal verification for smart contracts. We demonstrate solc-verify by examining real-world examples where our tool can effectively find bugs and prove correctness of non-trivial properties with minimal user effort.

Keywords

Cite

@article{arxiv.1907.04262,
  title  = {solc-verify: A Modular Verifier for Solidity Smart Contracts},
  author = {Ákos Hajdu and Dejan Jovanović},
  journal= {arXiv preprint arXiv:1907.04262},
  year   = {2020}
}

Comments

Authors' manuscript. Published in S. Chakraborty and J. A. Navas (Eds.): VSTTE 2019, LNCS 12031, 2020. The final publication is available at Springer via https://doi.org/10.1007/978-3-030-41600-3_11

R2 v1 2026-06-23T10:16:27.189Z