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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
Notes
- 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
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
Blockstream: Simplicity blog post and resources (2019). https://blockstream.com/2018/11/28/en-simplicity-github/
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
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/
Buterin, V., Ethereum Foundation: Ethereum White Paper (2013). https://github.com/ethereum/wiki/wiki/White-Paper
Ş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
Daian, P.: DAO attack (2016). http://hackingdistributed.com/2016/06/18/analysis-of-the-dao-exploit/
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
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
Ethereum: Ethereum C++ Client (2019). https://github.com/ethereum/cpp-ethereum
Ethereum: Solidity documentation (2019). http://solidity.readthedocs.io
Ethereum: Vyper documentation (2019). https://vyper.readthedocs.io
Etherscan: Ethereum Transaction Growth (2019). https://etherscan.io/chart/tx
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
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
IOHK: IELE Testnet (2019). https://testnet.iohkdev.io/iele/
IOHK: KEVM Testnet (2019). https://testnet.iohkdev.io/kevm/
IOHK: Mantis Ethereum Classic Client (2019). https://iohk.io/blog/mantis-ethereum-classic-beta-release
IOHK: Plutus testnet (2019). https://testnet.iohkdev.io/plutus/
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
KEVM: Jello paper (2019). https://jellopaper.org/
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
Milner, R., Tofte, M., Harper, R., MacQueen, D.: The Definition of Standard ML: Revised. MIT Press, Cambridge (1997)
Nakamoto, S.: Bitcoin: a peer-to-peer electronic cash system (2008). https://bitcoin.org/bitcoin.pdf
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
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
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
RChain Cooperative: Rchain and rholang documentation (2019). https://architecture-docs.readthedocs.io/
Rosu, G., Serbanuta, T.F.: An overview of the K semantic framework. J. Logic Algebraic Program. 79(6), 397–434 (2010). http://kframework.org
RuntimeVerification: ERC20-K: Formal Executable Specification of ERC20 (2017). https://github.com/runtimeverification/erc20-semantics
RuntimeVerification: ERC20 Token in IELE (2019). https://github.com/runtimeverification/iele-semantics/blob/master/iele-examples/erc20.iele
RuntimeVerification: Formal Smart Contract Verification (2019). https://runtimeverification.com/smartcontract/
RuntimeVerification: The formal semantics for IELE – source code (2019). https://github.com/runtimeverification/iele-semantics
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/
Steiner, J.: Security is a process: a postmortem on the parity multi-sig library self-destruct (2017). http://goo.gl/LBh1vR
Tezos: Michelson documentation (2019). https://tezos.gitlab.io/master/index.html
The Ethereum Foundation: ERC20 token standard (2019). https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md
Wood, G.: Ethereum: a secure decentralised generalised transaction ledger. Ethereum Proj. Yellow Pap. 151, 1–32 (2014)
Zilliqa: Scilla language webpage (2019). https://scilla-lang.org/
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
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2019 Springer Nature Switzerland AG
About this paper
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)