Skip to main content

On the Verification of Smart Contracts: A Systematic Review

Part of the Lecture Notes in Computer Science book series (LNSC,volume 12404)

Abstract

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.

Keywords

  • Smart contracts
  • BlockChain
  • Model checking
  • Theorem proving
  • Correctness
  • Formal verification

This is a preview of subscription content, access via your institution.

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

References

  1. Nakamoto, S.: Bitcoin: a peer-to-peer electronic cash system, December 2008. Accessed 01 July 2015

    Google Scholar 

  2. Zheng, Z., Xie, S., Dai, H., Chen, X., Wang, H.: Blockchain challenges and opportunities: a survey. IJWGS 14(4), 352–375 (2018)

    CrossRef  Google Scholar 

  3. Saberi, S., Kouhizadeh, M., Sarkis, J., Shen, L.: Blockchain technology and its relationships to sustainable supply chain management. Int. J. Prod. Res. 57, 2117–2135 (2019)

    CrossRef  Google Scholar 

  4. Hardjono, T., Pentland, A.: Verifiable anonymous identities and access control in permissioned blockchains. CoRR abs/1903.04584 (2019)

    Google Scholar 

  5. Drechsler, R.: Formal System Verification. Springer, Cham (2018). https://doi.org/10.1007/978-3-319-57685-5

    CrossRef  MATH  Google Scholar 

  6. Peled, D.A.: Formal methods. In: Handbook of Software Engineering, pp. 193–222 (2019)

    Google Scholar 

  7. Bashir, I.: Mastering blockchain: distributed ledger technology, decentralization, and smart contracts explained. Packt Publishing Ltd. (2018)

    Google Scholar 

  8. Gatteschi, V., Lamberti, F., Demartini, C., Pranteda, C., Santamaria, V.: To blockchain or not to blockchain: that is the question. IT Prof. 20(2), 62–74 (2018)

    CrossRef  Google Scholar 

  9. Almakhour, M., Sliman, L., Samhat, A.E., Gaaloul, W.: Trustless blockchain-based access control in dynamic collaboration. In: Proceedings of the 1st International Conference on Big Data and Cyber-Security Intelligence (BDCSIntell 2018), Hadath, Lebanon, 13–15 December 2018, pp. 27–33 (2018)

    Google Scholar 

  10. Gelvez, M.: Explaining the DAO exploit for beginners in solidity (2016)

    Google Scholar 

  11. Lahiri, S.K., Chen, S., Wang, Y., Dillig, I.: Formal specification and verification of smart contracts for azure blockchain. CoRR abs/1812.08829 (2018)

    Google Scholar 

  12. Kalra, S., Goel, S., Dhawan, M., Sharma, S.: ZEUS: analyzing safety of smart contracts. In: 25th Annual Network and Distributed System Security Symposium (NDSS 2018), San Diego, California, USA, 18–21 February 2018 (2018)

    Google Scholar 

  13. Rushby, J.: Theorem proving for verification. In: Cassez, F., Jard, C., Rozoy, B., Ryan, M.D. (eds.) MOVEP 2000. LNCS, vol. 2067, pp. 39–57. Springer, Heidelberg (2001). https://doi.org/10.1007/3-540-45510-8_2

    CrossRef  MATH  Google Scholar 

  14. Bhargavan, K., et al.: Formal verification of smart contracts: short paper. In: Proceedings of the 2016 ACM Workshop on Programming Languages and Analysis for Security, pp. 91–96 (2016)

    Google Scholar 

  15. Hildenbrandt, E., et al.: KEVM: a complete formal semantics of the ethereum virtual machine. In: 2018 IEEE 31st Computer Security Foundations Symposium (CSF), pp. 204–217. IEEE (2018)

    Google Scholar 

  16. Harrison, J.: Theorem proving for verification (invited tutorial). In: Gupta, A., Malik, S. (eds.) CAV 2008. LNCS, vol. 5123, pp. 11–18. Springer, Heidelberg (2008). https://doi.org/10.1007/978-3-540-70545-1_4

    CrossRef  Google Scholar 

  17. Murray, Y., Anisi, D.A.: Survey of formal verification methods for smart contracts on blockchain. In: 10th IFIP International Conference on New Technologies, Mobility and Security (NTMS 2019), Canary Islands, Spain, 24–26 June 2019, pp. 1–6 (2019)

    Google Scholar 

  18. Nesi, M.: A brief introduction to higher order logic and the HOL proof assistant (2011)

    Google Scholar 

  19. Baier, C., Katoen, J.: Principles of Model Checking. MIT Press (2008)

    Google Scholar 

  20. Swamy, N., et al.: Dependent types and multi-monadic effects in F. In: Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL 2016), St. Petersburg, FL, USA, 20–22 January 2016, pp. 256–270 (2016)

    Google Scholar 

  21. http://solidity.readthedocs.io

  22. Barthe, G., Fournet, C., Grégoire, B., Strub, P., Swamy, N., Béguelin, S.Z.: Probabilistic relational verification for cryptographic implementations. In: The 41st Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL 2014), San Diego, CA, USA, 20–21 January 2014, pp. 193–206 (2014)

    Google Scholar 

  23. Nehai, Z., Piriou, P., Daumas, F.F.: Model-checking of smart contracts. In: 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), iThings/GreenCom/CPSCom/SmartData 2018, Halifax, NS, Canada, 30 July–3 August 2018, pp. 980–987 (2018)

    Google Scholar 

  24. Cavada, R., et al.: The nuXmv symbolic model checker. In: Biere, A., Bloem, R. (eds.) CAV 2014. LNCS, vol. 8559, pp. 334–342. Springer, Cham (2014). https://doi.org/10.1007/978-3-319-08867-9_22

    CrossRef  Google Scholar 

  25. Browne, M.C., Clarke, E.M., Grumberg, O.: Characterizing finite Kripke structures in propositional temporal logic. Theor. Comput. Sci. 59, 115–131 (1988)

    CrossRef  MathSciNet  Google Scholar 

  26. Abdellatif, T., Brousmiche, K.: Formal verification of smart contracts based on users and blockchain behaviors models. In: 9th IFIP International Conference on New Technologies, Mobility and Security (NTMS 2018), Paris, France, 26–28 February 2018, pp. 1–5 (2018)

    Google Scholar 

  27. Basu, A., Bozga, M., Sifakis, J.: Modeling heterogeneous real-time components in BIP. In: Fourth IEEE International Conference on Software Engineering and Formal Methods (SEFM 2006). IEEE, pp. 3–12 (2006)

    Google Scholar 

  28. Sinnema, R., Wilde, E.: eXtensible access control markup language (XACML) XML media type. Internet Engineering Task Force (IETF), pp. 1–8 (2013)

    Google Scholar 

  29. Lattner, C., Adve, V.: LLVM: a compilation framework for lifelong program analysis & transformation. In: 2004 International Symposium on Code Generation and Optimization (CGO 2004), pp. 75–86. IEEE (2004)

    Google Scholar 

  30. Bjørner, N., McMillan, K.L., Rybalchenko, A.: Program verification as satisfiability modulo theories. SMT@ IJCAR 20, 3–11 (2012)

    Google Scholar 

  31. Gurfinkel, A., Kahsai, T., Komuravelli, A., Navas, J.A.: The SeaHorn verification framework. In: Kroening, D., Păsăreanu, C.S. (eds.) CAV 2015. LNCS, vol. 9206, pp. 343–361. Springer, Cham (2015). https://doi.org/10.1007/978-3-319-21690-4_20

    CrossRef  Google Scholar 

  32. Ellul, J., Pace, G.J.: Runtime verification of ethereum smart contracts. In: 2018 14th European Dependable Computing Conference (EDCC), pp. 158–163. IEEE (2018)

    Google Scholar 

  33. Colombo, C., Pace, G.J., Schneider, G.: LARVA–safer monitoring of real-time java programs (tool paper). In: 2009 Seventh IEEE International Conference on Software Engineering and Formal Methods, pp. 33–37. IEEE (2009)

    Google Scholar 

  34. Colombo, C., Pace, G.J.: Runtime verification using LARVA (2017)

    Google Scholar 

  35. Sotnichek, M.: Formal verification of smart contracts with the k framework (2018)

    Google Scholar 

  36. Amani, S., Bégel, M., Bortin, M., Staples, M.: Towards verifying ethereum smart contract bytecode in Isabelle/HOL. In: Proceedings of the 7th ACM SIGPLAN International Conference on Certified Programs and Proofs, pp. 66–77 (2018)

    Google Scholar 

  37. Paulin-Mohring, C.: Introduction to the Coq proof-assistant for practical software verification. In: Meyer, B., Nordio, M. (eds.) LASER 2011. LNCS, vol. 7682, pp. 45–95. Springer, Heidelberg (2012). https://doi.org/10.1007/978-3-642-35746-6_3

    CrossRef  Google Scholar 

  38. Yang, Z., Lei, H.: Formal process virtual machine for smart contracts verification. arXiv preprint arXiv:1805.00808 (2018)

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Layth Sliman .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and Permissions

Copyright information

© 2020 Springer Nature Switzerland AG

About this paper

Check for updates. Verify currency and authenticity via CrossMark

Cite this paper

Almakhour, M., Sliman, L., Samhat, A.E., Mellouk, A. (2020). On the Verification of Smart Contracts: A Systematic Review. In: Chen, Z., Cui, L., Palanisamy, B., Zhang, LJ. (eds) Blockchain – ICBC 2020. ICBC 2020. Lecture Notes in Computer Science(), vol 12404. Springer, Cham. https://doi.org/10.1007/978-3-030-59638-5_7

Download citation

  • DOI: https://doi.org/10.1007/978-3-030-59638-5_7

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-030-59637-8

  • Online ISBN: 978-3-030-59638-5

  • eBook Packages: Computer ScienceComputer Science (R0)