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
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsReferences
Nakamoto, S.: Bitcoin: a peer-to-peer electronic cash system, December 2008. Accessed 01 July 2015
Zheng, Z., Xie, S., Dai, H., Chen, X., Wang, H.: Blockchain challenges and opportunities: a survey. IJWGS 14(4), 352–375 (2018)
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)
Hardjono, T., Pentland, A.: Verifiable anonymous identities and access control in permissioned blockchains. CoRR abs/1903.04584 (2019)
Drechsler, R.: Formal System Verification. Springer, Cham (2018). https://doi.org/10.1007/978-3-319-57685-5
Peled, D.A.: Formal methods. In: Handbook of Software Engineering, pp. 193–222 (2019)
Bashir, I.: Mastering blockchain: distributed ledger technology, decentralization, and smart contracts explained. Packt Publishing Ltd. (2018)
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)
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)
Gelvez, M.: Explaining the DAO exploit for beginners in solidity (2016)
Lahiri, S.K., Chen, S., Wang, Y., Dillig, I.: Formal specification and verification of smart contracts for azure blockchain. CoRR abs/1812.08829 (2018)
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)
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
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)
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)
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
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)
Nesi, M.: A brief introduction to higher order logic and the HOL proof assistant (2011)
Baier, C., Katoen, J.: Principles of Model Checking. MIT Press (2008)
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)
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)
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)
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
Browne, M.C., Clarke, E.M., Grumberg, O.: Characterizing finite Kripke structures in propositional temporal logic. Theor. Comput. Sci. 59, 115–131 (1988)
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)
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)
Sinnema, R., Wilde, E.: eXtensible access control markup language (XACML) XML media type. Internet Engineering Task Force (IETF), pp. 1–8 (2013)
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)
Bjørner, N., McMillan, K.L., Rybalchenko, A.: Program verification as satisfiability modulo theories. SMT@ IJCAR 20, 3–11 (2012)
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
Ellul, J., Pace, G.J.: Runtime verification of ethereum smart contracts. In: 2018 14th European Dependable Computing Conference (EDCC), pp. 158–163. IEEE (2018)
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)
Colombo, C., Pace, G.J.: Runtime verification using LARVA (2017)
Sotnichek, M.: Formal verification of smart contracts with the k framework (2018)
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)
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
Yang, Z., Lei, H.: Formal process virtual machine for smart contracts verification. arXiv preprint arXiv:1805.00808 (2018)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2020 Springer Nature Switzerland AG
About this paper
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)