- What does the EVM do?
The Ethereum Virtual Machine is an application that runs on the nodes of the Ethereum Blockchain network mainly to create standardization in the way individual nodes read and execute the terms of smart contracts.
The EVM also provides a security layer between the node CPU and the Ethereum network by ensuring that the smart contracts are not run directly on the node/miner’s hardware. The EVM reads the smart contract which has been converted to steps in Byte code which then directs the host computer what to do. In this manner, all nodes running the EVM could then achieve the same result while processing each smart contract and this is how consensus is reached.
- What is the format of the instructions that the EVM can read?
There are around 7 programming languages that can be used to detail the functionalities of a smart contracts and chief among these are Solidity and Viper. However, whichever language is used, a compiler then converts the code to Byte code which is the universal format that is read by the EVM.
- What is the relationship between the programming language Solidity and Bytecode?
Solidity is one of the programming languages used to write Smart Contracts. A compiler software then translates the code of the smart contract into a set of machine language instructions called Byte code which can then be read by the EVM and instructed to the node computer’s CPU. The standardization of the Byte code ensures that all nodes on the Ethereum network execute the smart contract in exactly the same way.
- Why can’t Bitcoin run the same type of complex programs like Ethereum can?
The Bitcoin network uses the programming language ‘Script’ which is not Turing-complete and therefore has limitations with regard to the complexity of the programs it can run. The decision to limit the features and operations possible on the Bitcoin network is a deliberate move by its original creators for the purpose of protecting the security of the network.
Ethereum uses Solidity which is a Turing complete language which can in theory, be used to write programs of extreme and infinite complexity.
- What is a Turing Complete programming language?
A programming language is Turing complete when it is sufficiently powerful to compute any algorithm/program/problem