Skip to main content

IELE: A Rigorously Designed Language and Tool Ecosystem for the Blockchain

  • Conference paper
  • First Online:
Formal Methods – The Next 30 Years (FM 2019)

Abstract

This paper proposes IELE, an LLVM-style language, together with a tool ecosystem for implementing and formally reasoning about smart contracts on the blockchain. IELE was designed by specifying its semantics formally in the K framework. Its implementation, a IELE virtual machine (VM), as well as a formal verification tool for IELE smart contracts, were automatically generated from the formal specification. The automatically generated formal verification tool allows us to formally verify smart contracts without any gap between the verifier and the actual VM. A compiler from Solidity, the predominant high-level language for smart contracts, to IELE has also been (manually) implemented, so Ethereum contracts can now also be executed on IELE.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

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

Institutional subscriptions

Similar content being viewed by others

Notes

  1. 1.

    IELE can be used in any Ethereum-style blockchain, where the cryptocurrency may be called differently. We use Ether throughout the paper for the sake of concreteness.

References

  1. Atzei, N., Bartoletti, M., Cimoli, T.: A survey of attacks on Ethereum smart contracts. IACR Cryptology ePrint Archive 2016, 1007 (2016). https://eprint.iacr.org/2016/1007.pdf

  2. Blockstream: Simplicity blog post and resources (2019). https://blockstream.com/2018/11/28/en-simplicity-github/

  3. Bogdanas, D., Rosu, G.: K-Java: a complete semantics of Java. In: Proceedings of the 42nd Symposium on Principles of Programming Languages (POPL2015), pp. 445–456. ACM, January 2015. https://doi.org/10.1145/2676726.2676982

  4. Breidenbach, L., Daian, P., Juels, A., Sirer, E.G.: An in-depth look at the parity multisig bug (2017). http://hackingdistributed.com/2017/07/22/deep-dive-parity-bug/

  5. Buterin, V., Ethereum Foundation: Ethereum White Paper (2013). https://github.com/ethereum/wiki/wiki/White-Paper

  6. Ştefănescu, A., Park, D., Yuwen, S., Li, Y., Roşu, G.: Semantics-based program verifiers for all languages. In: Proceedings of the 31th Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA 2016), pp. 74–91. ACM, November 2016. https://doi.org/10.1145/2983990.2984027

  7. Daian, P.: DAO attack (2016). http://hackingdistributed.com/2016/06/18/analysis-of-the-dao-exploit/

  8. de Moura, L., Bjørner, N.: Z3: an efficient SMT solver. In: Ramakrishnan, C.R., Rehof, J. (eds.) TACAS 2008. LNCS, vol. 4963, pp. 337–340. Springer, Heidelberg (2008). https://doi.org/10.1007/978-3-540-78800-3_24

    Chapter  Google Scholar 

  9. Ellison, C., Rosu, G.: An executable formal semantics of C with applications. In: Proceedings of the 39th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL 2012), pp. 533–544. ACM, January 2012. https://doi.org/10.1145/2103656.2103719

  10. Ethereum: Ethereum C++ Client (2019). https://github.com/ethereum/cpp-ethereum

  11. Ethereum: Solidity documentation (2019). http://solidity.readthedocs.io

  12. Ethereum: Vyper documentation (2019). https://vyper.readthedocs.io

  13. Etherscan: Ethereum Transaction Growth (2019). https://etherscan.io/chart/tx

  14. Hathhorn, C., Ellison, C., Rosu, G.: Defining the undefinedness of C. In: Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2015), pp. 336–345. ACM, June 2015. https://doi.org/10.1145/2813885.2737979

  15. Hildenbrandt, E., et al.: KEVM: a complete semantics of the Ethereum virtual machine. In: 2018 IEEE 31st Computer Security Foundations Symposium, pp. 204–217. IEEE (2018). https://doi.org/10.1109/CSF.2018.00022

  16. IOHK: IELE Testnet (2019). https://testnet.iohkdev.io/iele/

  17. IOHK: KEVM Testnet (2019). https://testnet.iohkdev.io/kevm/

  18. IOHK: Mantis Ethereum Classic Client (2019). https://iohk.io/blog/mantis-ethereum-classic-beta-release

  19. IOHK: Plutus testnet (2019). https://testnet.iohkdev.io/plutus/

  20. Kasampalis, T., et al.: IELE: a rigorously designed language and tool ecosystem for the blockchain. Technical report, University of Illinois, July 2019. http://hdl.handle.net/2142/104601

  21. KEVM: Jello paper (2019). https://jellopaper.org/

  22. Lattner, C., Adve, V.: LLVM: a compilation framework for lifelong program analysis & transformation. In: Proceedings of the International Symposium on Code Generation and Optimization: Feedback-directed and Runtime Optimization, CGO 2004, p. 75. IEEE Computer Society, Washington, DC, USA (2004). http://llvm.org

  23. Milner, R., Tofte, M., Harper, R., MacQueen, D.: The Definition of Standard ML: Revised. MIT Press, Cambridge (1997)

    Book  Google Scholar 

  24. Nakamoto, S.: Bitcoin: a peer-to-peer electronic cash system (2008). https://bitcoin.org/bitcoin.pdf

  25. Park, D., Stefanescu, A., Rosu, G.: KJS: a complete formal semantics of JavaScript. In: Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2015), pp. 346–356. ACM, June 2015. https://doi.org/10.1145/2737924.2737991

  26. Park, D., Zhang, Y., Saxena, M., Daian, P., Roşu, G.: A Formal verification tool for Ethereum VM bytecode. In: Proceedings of the 26th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE 2018). ACM, November 2018. https://doi.org/10.1145/3236024.3264591

  27. PeckShield: New batchOverflow Bug in Multiple ERC20 Smart Contracts (CVE-2018-10299) (2018). https://medium.com/coinmonks/alert-new-batchoverflow-bug-in-multiple-erc20-smart-contracts-cve-2018-10299-511067db6536

  28. RChain Cooperative: Rchain and rholang documentation (2019). https://architecture-docs.readthedocs.io/

  29. Rosu, G., Serbanuta, T.F.: An overview of the K semantic framework. J. Logic Algebraic Program. 79(6), 397–434 (2010). http://kframework.org

  30. RuntimeVerification: ERC20-K: Formal Executable Specification of ERC20 (2017). https://github.com/runtimeverification/erc20-semantics

  31. RuntimeVerification: ERC20 Token in IELE (2019). https://github.com/runtimeverification/iele-semantics/blob/master/iele-examples/erc20.iele

  32. RuntimeVerification: Formal Smart Contract Verification (2019). https://runtimeverification.com/smartcontract/

  33. RuntimeVerification: The formal semantics for IELE – source code (2019). https://github.com/runtimeverification/iele-semantics

  34. Solana, J.: \$500K hack challenge backfires on blockchain lottery SmartBillions (2017). https://calvinayre.com/2017/10/13/bitcoin/500k-hack-challenge-backfires-blockchain-lottery-smartbillions/

  35. Steiner, J.: Security is a process: a postmortem on the parity multi-sig library self-destruct (2017). http://goo.gl/LBh1vR

  36. Tezos: Michelson documentation (2019). https://tezos.gitlab.io/master/index.html

  37. The Ethereum Foundation: ERC20 token standard (2019). https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md

  38. Wood, G.: Ethereum: a secure decentralised generalised transaction ledger. Ethereum Proj. Yellow Pap. 151, 1–32 (2014)

    Google Scholar 

  39. Zilliqa: Scilla language webpage (2019). https://scilla-lang.org/

Download references

Acknowledgements

We are grateful to IOHK (http://iohk.io) for funding the IELE project, as well as for insightful discussions, encouragements and constructive criticisms along the way. The work on the K framework and its tooling was supported in part by NSF grant CNS 16-19275 and by the United States Air Force and DARPA under Contract No. FA8750-18-C-0092.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Theodoros Kasampalis .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2019 Springer Nature Switzerland AG

About this paper

Check for updates. Verify currency and authenticity via CrossMark

Cite this paper

Kasampalis, T. et al. (2019). IELE: A Rigorously Designed Language and Tool Ecosystem for the Blockchain. In: ter Beek, M., McIver, A., Oliveira, J. (eds) Formal Methods – The Next 30 Years. FM 2019. Lecture Notes in Computer Science(), vol 11800. Springer, Cham. https://doi.org/10.1007/978-3-030-30942-8_35

Download citation

  • DOI: https://doi.org/10.1007/978-3-030-30942-8_35

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-030-30941-1

  • Online ISBN: 978-3-030-30942-8

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics