On the Verification of Smart Contracts: A Systematic Review

Ensuring the correctness of smart contracts is of paramount importance to achieve trust and continuity in the Blockchain-based business process execution. Due to the immutable nature of distributed ledger technology on the blockchain, a smart contract should work as intended before using it. Any bugs or errors will become permanent once published and could lead to huge economic losses. To avoid such problems, verification is required to check the correctness and the security of the smart contract. In this paper, we consider the smart contracts and we investigate the verification of the correctness of the Blockchain-based smart contracts using formal verification methods. We provide an overview of the formal verification of smart contracts and we present the used methods, tools and approaches. We show a description of each method as well as its advantages and limitations.

[1]  Nikhil Swamy,et al.  Formal Verification of Smart Contracts: Short Paper , 2016, PLAS@CCS.

[2]  Christine Paulin-Mohring,et al.  Introduction to the Coq Proof-Assistant for Practical Software Verification , 2011, LASER Summer School.

[3]  Yi Zhang,et al.  KEVM: A Complete Formal Semantics of the Ethereum Virtual Machine , 2018, 2018 IEEE 31st Computer Security Foundations Symposium (CSF).

[4]  Zibin Zheng,et al.  Blockchain challenges and opportunities: a survey , 2018, Int. J. Web Grid Serv..

[5]  Gordon J. Pace,et al.  Runtime Verification of Ethereum Smart Contracts , 2018, 2018 14th European Dependable Computing Conference (EDCC).

[6]  Edmund M. Clarke,et al.  Characterizing Finite Kripke Structures in Propositional Temporal Logic , 1988, Theor. Comput. Sci..

[7]  Joseph Sarkis,et al.  Blockchain technology and its relationships to sustainable supply chain management , 2018, Int. J. Prod. Res..

[8]  Christel Baier,et al.  Principles of model checking , 2008 .

[9]  Gordon J. Pace,et al.  LARVA --- Safer Monitoring of Real-Time Java Programs (Tool Paper) , 2009, 2009 Seventh IEEE International Conference on Software Engineering and Formal Methods.

[10]  Nikolaj Bjørner,et al.  Program Verification as Satisfiability Modulo Theories , 2013, SMT@IJCAR.

[11]  Sidney Amani,et al.  Towards verifying ethereum smart contract bytecode in Isabelle/HOL , 2018, CPP.

[12]  Marco Roveri,et al.  The nuXmv Symbolic Model Checker , 2014, CAV.

[13]  John M. Rushby,et al.  Theorem Proving for Verification , 2000, MOVEP.

[14]  Benjamin Grégoire,et al.  Probabilistic relational verification for cryptographic implementations , 2014, POPL.

[15]  Fabrizio Lamberti,et al.  To Blockchain or Not to Blockchain: That Is the Question , 2018, IT Professional.

[16]  John Harrison,et al.  Theorem Proving for Verification (Invited Tutorial) , 2008, CAV.

[17]  Jorge A. Navas,et al.  The SeaHorn Verification Framework , 2015, CAV.

[18]  David A. Anisi,et al.  Survey of Formal Verification Methods for Smart Contracts on Blockchain , 2019, 2019 10th IFIP International Conference on New Technologies, Mobility and Security (NTMS).

[19]  Vikram S. Adve,et al.  LLVM: a compilation framework for lifelong program analysis & transformation , 2004, International Symposium on Code Generation and Optimization, 2004. CGO 2004..

[20]  Joseph Sifakis,et al.  Modeling Heterogeneous Real-time Components in BIP , 2006, Fourth IEEE International Conference on Software Engineering and Formal Methods (SEFM'06).

[21]  Walid Gaaloul,et al.  Trustless Blockchain-based Access Control in Dynamic Collaboration , 2018, BDCSIntell.

[22]  Sukrit Kalra,et al.  ZEUS: Analyzing Safety of Smart Contracts , 2018, NDSS.

[23]  Pierre-Yves Strub,et al.  Dependent types and multi-monadic effects in F* , 2016, POPL.

[24]  Kei-Léo Brousmiche,et al.  Formal Verification of Smart Contracts Based on Users and Blockchain Behaviors Models , 2018, 2018 9th IFIP International Conference on New Technologies, Mobility and Security (NTMS).

[25]  Erik Wilde,et al.  eXtensible Access Control Markup Language (XACML) XML Media Type , 2013, RFC.

[26]  Pierre-Yves Piriou,et al.  Model-Checking of Smart Contracts , 2018, 2018 IEEE International Conference on Internet of Things (iThings) and IEEE Green Computing and Communications (GreenCom) and IEEE Cyber, Physical and Social Computing (CPSCom) and IEEE Smart Data (SmartData).

[27]  Alex Pentland,et al.  Verifiable Anonymous Identities and Access Control in Permissioned Blockchains , 2019, ArXiv.

[28]  Hang Lei,et al.  Formal Process Virtual Machine for Smart Contracts Verification , 2018, ArXiv.

[29]  Isil Dillig,et al.  Formal Specification and Verification of Smart Contracts for Azure Blockchain , 2018, ArXiv.

[30]  Rolf Drechsler,et al.  Formal System Verification , 2018 .