SMT-Friendly Formalization of the Solidity Memory Model

01/09/2020
by   Ákos Hajdu, et al.
0

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.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
07/09/2019

solc-verify: A Modular Verifier for Solidity Smart Contracts

We present solc-verify, a source-level verification tool for Ethereum sm...
research
05/29/2020

WhylSon: Proving your Michelson Smart Contracts in Why3

This paper introduces WhylSon, a deductive verification tool for smart c...
research
01/02/2018

Scilla: a Smart Contract Intermediate-Level LAnguage

This paper outlines key design principles of Scilla---an intermediate-le...
research
09/11/2018

Vandal: A Scalable Security Analysis Framework for Smart Contracts

The rise of modern blockchains has facilitated the emergence of smart co...
research
02/23/2018

Automatic Generation of Precise and Useful Commutativity Conditions (Extended Version)

Reasoning about commutativity between data-structure operations is an im...
research
05/17/2021

Summing Up Smart Transitions

Some of the most significant high-level properties of currencies are the...

Please sign up or login with your details

Forgot password? Click here to reset