Advertisement

Verification-Led Smart Contracts

  • Richard BanachEmail author
Conference paper
  • 40 Downloads
Part of the Lecture Notes in Computer Science book series (LNCS, volume 11599)

Abstract

Turing complete smart contract formalisms (e.g. Solidity) are conceptually appealing, but leave the door open to the problems of verifying completely arbitrary code, a task which can be of arbitrarily high complexity or can be undecidable. We argue that a more structured approach, in which smart contract families are designed ab initio with efficient verifiability in mind, provide a much more practical way forward. We emphasis that the boundary between on-chain and off-chain information, which must always be determined in an application specific manner, is crucial in determining the practicability of smart contract verification. We discuss the role of refinement technologies in breaking down the complexity of smart contract verification, and illustrate the argument using the Event-B formal modelling framework and Solidity as implementation vehicle.

Keywords

Blockchain Smart contract Solidity Verification Event-B Refinement Rodin 

References

  1. 1.
    Conference on Financial Cryptography and Data Security (FC). Springer, LNCS (1997 onwards)Google Scholar
  2. 2.
    Workshop on Trustworthy Smart Contracts (WTSC). Springer, LNCS (2016 onwards)Google Scholar
  3. 3.
    Abrial, J.R.: The B-Book: Assigning Programs to Meanings. CUP (1996)Google Scholar
  4. 4.
    Abrial, J.R.: Modeling in Event-B: System and Software Engineering. CUP (2010)Google Scholar
  5. 5.
    Abrial, J.R., Butler, M., Hallerstede, S., Hoang, T., Mehta, F., Voisin, L.: Rodin: an open toolset for modelling and reasoning in event-B. Int. J. Soft. Tools Tech. Trans. 12, 447–466 (2010)CrossRefGoogle Scholar
  6. 6.
    Al Khalil, F., Butler, T., O’Brien, L., Ceci, M.: Trust in smart contracts is a process as well. In: Brenner, M., et al. (eds.) Proceedings of WTSC 2017, vol. 10323, pp. 510–519. Springer, Cham (2017).  https://doi.org/10.1007/978-3-319-70278-0_32CrossRefGoogle Scholar
  7. 7.
    Back, R., Kurki-Suonio, R.: Decentralisation of process nets with centralised control. In: Proceedings of PODC 1983, pp. 131–142. ACM (1983)Google Scholar
  8. 8.
    Back, R.J.R., Sere, K.: Stepwise refinement of action systems. In: van de Snepscheut, J.L.A. (ed.) MPC 1989. LNCS, vol. 375, pp. 115–138. Springer, Heidelberg (1989).  https://doi.org/10.1007/3-540-51305-1_7CrossRefGoogle Scholar
  9. 9.
    Back, R.J.R., von Wright, J.: Trace refinement of action systems. In: Jonsson, B., Parrow, J. (eds.) CONCUR 1994. LNCS, vol. 836, pp. 367–384. Springer, Heidelberg (1994).  https://doi.org/10.1007/978-3-540-48654-1_28CrossRefGoogle Scholar
  10. 10.
    Back, R., von Wright, J.: Refinement Calculus. Springer, New York (1998).  https://doi.org/10.1007/978-1-4612-1674-2CrossRefzbMATHGoogle Scholar
  11. 11.
    Back, R., Sere, K.: Superposition refinement of reactive systems. Form. Asp. Comp. 8(3), 324–346 (1996)CrossRefGoogle Scholar
  12. 12.
    Banach, R., Schellhorn, G.: Atomic actions and their refinements to isolated protocols. Form. Asp. Comp. 22, 33–61 (2010)CrossRefGoogle Scholar
  13. 13.
    Bartoletti, M., Pompianu, L.: An empirical analysis of smart contracts: platforms, applications, and design patterns. In: Brenner, M., et al. (eds.) FC 2017. LNCS, vol. 10323, pp. 494–509. Springer, Cham (2017).  https://doi.org/10.1007/978-3-319-70278-0_31CrossRefGoogle Scholar
  14. 14.
    Bhargavan, K., et al.: Formal verification of smart contracts. In: Proceedings of PLAS 2016, pp. 91–96. ACM (2016)Google Scholar
  15. 15.
    Burdy, L., Deharbe, D.: Teaching an old dog new tricks. In: Butler, M., Raschke, A., Hoang, T.S., Reichl, K. (eds.) ABZ 2018. LNCS, vol. 10817, pp. 415–419. Springer, Cham (2018).  https://doi.org/10.1007/978-3-319-91271-4_33CrossRefGoogle Scholar
  16. 16.
    Chen, L., Xu, L., Shah, N., Gao, Z., Lu, Y., Shi, W.: Decentralized execution of smart contracts: agent model perspective and its implications. In: Brenner, M., et al. (eds.) FC 2017. LNCS, vol. 10323, pp. 468–477. Springer, Cham (2017).  https://doi.org/10.1007/978-3-319-70278-0_29CrossRefGoogle Scholar
  17. 17.
  18. 18.
    Davis, M., Weyuker, E.: Computability, Complexity and Languages. Academic Press, New York (1983)zbMATHGoogle Scholar
  19. 19.
    Ellul, J., Pace, G.: Runtime verification of ethereum smart contracts. In: Proceedings of EDCC 2018, Workshop on Blockchain Dependability, pp. 158–163. IEEE (2018)Google Scholar
  20. 20.
  21. 21.
    Hildenbrandt, E., et al.: KEVM: a complete formal semantics of the ethereum virtual machine. In: Proceedings of CSFS 2018, pp. 204–217. IEEE (2018)Google Scholar
  22. 22.
    Hirai, Y.: Defining the ethereum virtual machine for interactive theorem provers. In: Brenner, M., et al. (eds.) FC 2017. LNCS, vol. 10323, pp. 520–535. Springer, Cham (2017).  https://doi.org/10.1007/978-3-319-70278-0_33CrossRefGoogle Scholar
  23. 23.
    Hopcroft, J., Ullman, J.: Introduction to Automata Theory, Languages and Computation. Addison Wesley, Boston (1983)zbMATHGoogle Scholar
  24. 24.
    Lecomte, T.: Atelier B has Turned 20. In: Proceedings of ABZ 2016, vol. 9675, p. XVI. Springer, Cham (2016) Google Scholar
  25. 25.
    Lecomte, T., Deharbe, D., Prun, E., Mottin, E.: Applying a formal method in industry: a 25-year trajectory. In: Cavalheiro, S., Fiadeiro, J. (eds.) SBMF 2017. LNCS, vol. 10623, pp. 70–87. Springer, Cham (2017).  https://doi.org/10.1007/978-3-319-70848-5_6CrossRefGoogle Scholar
  26. 26.
    Mavridou, A., Laszka, A.: Designing secure ethereum smart contracts: a finite state machine based approach. In: Meiklejohn, S., Sako, K. (eds.) FC 2018. LNCS, vol. 10957, pp. 523–540. Springer, Heidelberg (2018).  https://doi.org/10.1007/978-3-662-58387-6_28CrossRefGoogle Scholar
  27. 27.
    Mulligan, D., Owens, S., Gray, K., Ridge, T., Sewell, P.: Lem: reusable engineering of real-world semantics. SIGPLAN Not. 49, 175–188 (2014)CrossRefGoogle Scholar
  28. 28.
  29. 29.
    Park, Y., Zhang, Y., Saxena, M., Daian, P., Rosu, G.: A formal verification tool for ethereum VM bytecode. In: Proceedings of ESEC/FSE-18, pp. 912–915. ACM (2018)Google Scholar
  30. 30.
  31. 31.
    Sekerinski, E., Sere, K.: Program Development by Refinement: Case Studies Using the B-Method. Springer, London (1998).  https://doi.org/10.1007/978-1-4471-0585-5CrossRefzbMATHGoogle Scholar
  32. 32.
    Sergey, I., Hobor, A.: A concurrent perspective on smart contracts. In: Brenner, M., et al. (eds.) FC 2017. LNCS, vol. 10323, pp. 478–493. Springer, Cham (2017).  https://doi.org/10.1007/978-3-319-70278-0_30CrossRefGoogle Scholar
  33. 33.
    Sipser, M.: Introduction to the Theory of Computation. Thomson (2006)Google Scholar
  34. 34.
  35. 35.
    Solidity Documentation. https://solidity.readthedocs.io
  36. 36.
  37. 37.
    Voisin, L., Abrial, J.R.: The rodin platform has turned ten. In: Ait Ameur, Y., Schewe, K.D. (eds.) Proceedings of ABZ 2014. LNCS, vol. 8477. Springer, Heidelberg (2014).  https://doi.org/10.1007/978-3-662-43652-3_1CrossRefGoogle Scholar

Copyright information

© International Financial Cryptography Association 2020

Authors and Affiliations

  1. 1.School of Computer ScienceUniversity of ManchesterManchesterUK

Personalised recommendations