Ethereum virtual machine
An Ethereum's smart contract can be developed in one of four languages: Solidity (inspired by JavaScript), Serpent (inspired by Python, and no longer used), LLL (inspired by Lisp), and Mutan (inspired by Go, and no longer used). Since all of them are high-level programming languages, smart contracts need to be compiled into a low-level, machine-runnable language. Ethereum uses a VM approach, similar to the concept of Java Virtual Machine (JVM), to meet this need. The Ethereum erosion of VM is called EVM. Smart contract codes are converted to EVM-runnable bytecodes called opcode. The opcode is then deployed to the Ethereum blockchain for execution. Furthermore, currently, a research-oriented language is under development, called Viper—a strongly-typed Python-based language.