Advertisement

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

  • Theodoros KasampalisEmail author
  • Dwight Guth
  • Brandon Moore
  • Traian Florin Șerbănuță
  • Yi Zhang
  • Daniele Filaretti
  • Virgil Șerbănuță
  • Ralph Johnson
  • Grigore Roşu
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 11800)

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.

Notes

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.

References

  1. 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. 2.
    Blockstream: Simplicity blog post and resources (2019). https://blockstream.com/2018/11/28/en-simplicity-github/
  3. 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. 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. 5.
    Buterin, V., Ethereum Foundation: Ethereum White Paper (2013). https://github.com/ethereum/wiki/wiki/White-Paper
  6. 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. 7.
  8. 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_24CrossRefGoogle Scholar
  9. 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. 10.
    Ethereum: Ethereum C++ Client (2019). https://github.com/ethereum/cpp-ethereum
  11. 11.
    Ethereum: Solidity documentation (2019). http://solidity.readthedocs.io
  12. 12.
    Ethereum: Vyper documentation (2019). https://vyper.readthedocs.io
  13. 13.
    Etherscan: Ethereum Transaction Growth (2019). https://etherscan.io/chart/tx
  14. 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. 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. 16.
    IOHK: IELE Testnet (2019). https://testnet.iohkdev.io/iele/
  17. 17.
    IOHK: KEVM Testnet (2019). https://testnet.iohkdev.io/kevm/
  18. 18.
    IOHK: Mantis Ethereum Classic Client (2019). https://iohk.io/blog/mantis-ethereum-classic-beta-release
  19. 19.
    IOHK: Plutus testnet (2019). https://testnet.iohkdev.io/plutus/
  20. 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. 21.
    KEVM: Jello paper (2019). https://jellopaper.org/
  22. 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. 23.
    Milner, R., Tofte, M., Harper, R., MacQueen, D.: The Definition of Standard ML: Revised. MIT Press, Cambridge (1997)CrossRefGoogle Scholar
  24. 24.
    Nakamoto, S.: Bitcoin: a peer-to-peer electronic cash system (2008). https://bitcoin.org/bitcoin.pdf
  25. 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. 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. 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. 28.
    RChain Cooperative: Rchain and rholang documentation (2019). https://architecture-docs.readthedocs.io/
  29. 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. 30.
    RuntimeVerification: ERC20-K: Formal Executable Specification of ERC20 (2017). https://github.com/runtimeverification/erc20-semantics
  31. 31.
  32. 32.
    RuntimeVerification: Formal Smart Contract Verification (2019). https://runtimeverification.com/smartcontract/
  33. 33.
    RuntimeVerification: The formal semantics for IELE – source code (2019). https://github.com/runtimeverification/iele-semantics
  34. 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. 35.
    Steiner, J.: Security is a process: a postmortem on the parity multi-sig library self-destruct (2017). http://goo.gl/LBh1vR
  36. 36.
    Tezos: Michelson documentation (2019). https://tezos.gitlab.io/master/index.html
  37. 37.
    The Ethereum Foundation: ERC20 token standard (2019). https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md
  38. 38.
    Wood, G.: Ethereum: a secure decentralised generalised transaction ledger. Ethereum Proj. Yellow Pap. 151, 1–32 (2014)Google Scholar
  39. 39.
    Zilliqa: Scilla language webpage (2019). https://scilla-lang.org/

Copyright information

© Springer Nature Switzerland AG 2019

Authors and Affiliations

  • Theodoros Kasampalis
    • 1
    Email author
  • Dwight Guth
    • 2
  • Brandon Moore
    • 2
  • Traian Florin Șerbănuță
    • 2
    • 3
  • Yi Zhang
    • 1
  • Daniele Filaretti
    • 2
  • Virgil Șerbănuță
    • 2
  • Ralph Johnson
    • 2
  • Grigore Roşu
    • 1
    • 2
  1. 1.University of Illinois at Urbana-ChampaignUrbanaUSA
  2. 2.Runtime VerificationUrbanaUSA
  3. 3.University of BucharestBucharestRomania

Personalised recommendations