Ethereum was first conceived of by Vitalik Buterin in November 2013. The critical idea proposed was the development of a Turing-complete language that allows the development of arbitrary programs (smart contracts) for Blockchain and decentralized applications. This concept is in contrast to Bitcoin, where the scripting language is limited in nature and allows necessary operations only.
This is an excerpt from the second edition of Mastering Blockchain by Imram Bashir.
The following table shows all the releases of Ethereum starting from the first release to the planned final release:
Version | Release date |
Olympic | May, 2015 |
Frontier | July 30, 2015 |
Homestead | March 14, 2016 |
Byzantium (first phase of Metropolis) | October 16, 2017 |
Metropolis | To be released |
Serenity (final version of Ethereum) | To be released |
The first version of Ethereum, called Olympic, was released in May, 2015. Two months later, a second version was released, called Frontier. After about a year, another version named Homestead with various improvements was released in March, 2016.
The latest Ethereum release is called Byzantium. This is the first part of the development phase called Metropolis. This release implemented a planned hard fork at block number 4,370,000 on October 16, 2017. The second part of this release called Constantinople is expected in 2018 but there is no exact time frame available yet. The final planned release of Ethereum is called Serenity. It's planned for Serenity to introduce the final version of PoS based blockchain instead of PoW.
The Yellow Paper, written by Dr. Gavin Wood, serves as a formal definition of the Ethereum protocol. Anyone can implement an Ethereum client by following the protocol specifications defined in the paper.
While this paper is a challenging read, especially for those who do not have a background in algebra or mathematics, it contains a complete formal specification of Ethereum. This specification can be used to implement a fully compliant Ethereum client.
The list of all symbols with their meanings used in the paper is provided here with the anticipation that it will make reading the yellow paper more accessible. Once symbol meanings are known, it will be much easier to understand how Ethereum works in practice.
Symbol | Meaning | Symbol | Meaning |
≡ | Is defined as | ≤ | Less than or equal to |
= | Is equal to | Sigma, World state | |
≠ | Is not equal to | Mu, Machine state | |
║...║ | Length of | Upsilon, Ethereum state transition function | |
Is an element of | Block level state transition function | ||
Is not an element of | . | Sequence concatenation | |
For all | There exists | ||
Union | ᴧ | Contract creation function | |
Logical AND | Increment | ||
: | Such that | Floor, lowest element | |
{} | Set | Ceiling, highest element | |
() | Function of tuple | No of bytes | |
[] | Array indexing | Exclusive OR | |
Logical OR | (a ,b) | Real numbers >= a and < b | |
> | Is greater than | Empty set, null | |
+ | Addition | ||
- | Subtraction | ||
∑ | Summation | ||
{ | Describing various cases of if, otherwise |
Ethereum, like any other blockchain, can be visualized as a transaction-based state machine. This definition is referred to in the Yellow Paper.
The core idea is that in Ethereum blockchain, a genesis state is transformed into a final state by executing transactions incrementally. The final transformation is then accepted as the absolute undisputed version of the state. In the following diagram, the Ethereum state transition function is shown, where a transaction execution has resulted in a state transition:
In the example above, a transfer of two Ether from address 4718bf7a to address 741f7a2 is initiated. The initial state represents the state before the transaction execution, and the final state is what the morphed state looks like. Mining plays a central role in state transition, and we will elaborate the mining process in detail in the later sections. The state is stored on the Ethereum network as the world state. This is the global state of the Ethereum blockchain.
For all the conversation around cryptocurrencies, it's very rare for anyone to actually explain how it works from the perspective of a user. Let's take a look at how it works in practice. In this example, I'll use the example of one man (Bashir) transferring money to another (Irshad). You may also want to read our post on if Ethereum will eclipse bitcoin.
For the purposes of this example, we're using Jaxx wallet. However, you can use any cryptocurrency wallet for this.
On the blockchain, this transaction is identified by the following transaction hash:
0xc63dce6747e1640abd63ee63027c3352aed8cdb92b6a02ae25225666e171009e
Details regarding this transaction can be visualized from the block explorer, as shown in the following screenshot:
Thiswalkthroughh should give you some idea of how it works.
The Ethereum network is a peer-to-peer network where nodes participate in order to maintain the blockchain and contribute to the consensus mechanism. Networks can be divided into three types, based on requirements and usage. These types are described in the following subsections.
Mainnet
Testnet is the widely used test network for the Ethereum blockchain. This test blockchain is used to test smart contracts and DApps before being deployed to the production live blockchain. Because it is a test network, it allows experimentation and research.
The main testnet is called Ropsten which contains all features of other smaller and special purpose testnets that were created for specific releases. For example, other testnets include Kovan and Rinkeby which were developed for testing Byzantium releases. The changes that were implemented on these smaller testnets has also been implemented on Ropsten. Now the Ropsten test network contains all properties of Kovan and Rinkeby.
As the name suggests, this is the private network that can be created by generating a new genesis block. This is usually the case in private blockchain distributed ledger networks, where a private group of entities start their blockchain and use it as a permissioned blockchain.
The following table shows the list of Ethereum network with their network IDs. These network IDs are used to identify the network by Ethereum clients.
Network name | Network ID / Chain ID |
Ethereum mainnet | 1 |
Morden | 2 |
Ropsten | 3 |
Rinkeby | 4 |
Kovan | 42 |
Ethereum Classic mainnet | 61 |
You should now have a good foundation of knowledge to get started with Ethereum. To learn more about Ethereum and other cryptocurrencies, check out the new edition of Mastering Blockchain.
Other posts from this book