Ethereum, the popular smart contract platform invented by Vitalik Buterin, is often confused as only having to do with a currency store. Miners are often viewed as selfish, money-hungry people. But, there’s another side to this coin. What is it that happens under the hood? What is it that makes it different from other cryptocurrency platforms like Bitcoin? Stay tuned to find out.
A Full, Turing Complete Programming Language
The first difference is that unlike Bitcoin, where you’re provided with only a few scripting operations, Ethereum has several built-in programming languages. These are: Solidity, Serpent, lll and Mutan (deprecated).
Quoting directly from Wikipedia, “A Turing machine is a mathematical model of computation that defines an abstract machine which manipulates symbols on a strip of tape according to a table of rules.”
A Turing complete language is the one that can be used to simulate a Turing machine. In layman’s terms, what this means is that, a Turing complete language is expected to guarantee a solution to any solvable algorithm.
The conditions for Turing completeness of languages (that are not based on lambda-calculus or are exclusively functional) are as follows:
- Ability to run loops in which the number of iterations cannot be pre-determined. For this reason, theoretically we need infinite amount of space but, as we’ll see later, such cases don’t occur as we “run out of gas”.
- Ability to take input, store it, and also iterate over it.
Note: Turing completeness can also be proved by using the “cascading property” of Turing complete languages. What this means is that, if a language is Turing complete and can be translated to/from another language, then the other language is also Turing complete. This is generally accomplished by making an interpreter for an already known Turing complete language.
But Why Have a Built-In Turing Complete Language?
The answer is simple. It enables us to actually program the blockchain. This leads to many other potential applications, aside from just money and transactions. Examples include: governance, internet of things (IoT) etc. In fact, Ethereum has often been quoted as “the enabler of IoT”.
While there are several advantages of having a Turing complete language built-in, there are a few downsides too.
One of the major issues is that running such applications is a costly process. The miners have to compete for getting their blocks included in the blockchain and the blocks need to be verified by other miners too. However this is also beneficial in the sense it leads to a general consensus — which ensures security and fault tolerance.
The Ethereum Virtual Machine
The Ethereum Virtual Machine or EVM is a virtual machine having a word length of 256 bit.
It is a part of the Ethereum protocol. The Unique Selling Point of EVM is that it makes for an excellent sandboxed environment which shields the network from DDoS attacks and running infinite loops.
The way this is achieved is by imposing a cost for storage and every instruction that is processed. The cost is measured in terms of “gas”. Gas is paid for, using ether. The more “gas” you use, the more “ether” you pay. Running out of gas reverts all the changes and the miner still gets paid. This prevents attackers from stopping the execution midway. The Go-ethereum protocol has two implementations of EVM:
- Simple one that loops over the bytecode.
- JIT-like that compiles bytecode into manageable data types and structures
The bytecode is compiled to machine code before the program is run.
Ethash Hashing Algorithm
Ethash is the hashing algorithm used in Ethereum. It is designed to be ASIC-hard and GPU-friendly. In layman’s terms, ASIC is a specialized device that has a lot of computation power, and easily outperforms desktops for mining purposes.
Being ASIC-hard means that ethash makes it difficult for ASICs to outperform GPUs to some extent. It does so by being “memory hard”. This means that the bottleneck for mining is not the computation power that is required, but memory access. The reason for choosing memory is that it is already very efficient and further room for increasing efficiency is lesser as compared to computational power.
In other words, it’s easier to manufacture a specialized device just for mining that has higher computational power than a GPU, but doing that with memory is much more difficult.
With high performance cryptocurrency specific devices like ASICs, which are not readily available, Bitcoin favors large farms/pools which might lead to centralization. Whereas in Ethereum’s case, they chose to favor decentralization by enabling much more users to mine, not just the ones with access to ASICs.
In its quest to promote decentralization further, Ethereum’s creators came up with the concept of “Uncles”. Uncles, or rival blocks that couldn’t attach themselves to the main chain due to slight delay/connectivity issues, are also incorporated into the blockchain and get paid some amount. This way, even the ones that are not a part of big mining pools are not left far behind.
So Much More Than Just Crypto Money
This is not an exhaustive list of unique features that Ethereum has to offer. But I suppose it’s quite clear that Ethereum is “no ordinary crypto” and deserves much more market share and adoption than it currently has.
This does not mean that other cryptocurrencies must be abandoned. They have their unique features too and most importantly, these can coexist and interconverted into each other.
Are you interested in using or developing for Ethereum? Tell us what you’d like to hear next.
Images via Wikimedia Commons, eBay, BBC