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
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 blockchain
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.
How Ethereum works from a user’s perspective
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.
- First, either a user requests money by sending the request to the sender, or the sender decides to send money to the receiver. The request can be sent by sending the receivers Ethereum address to the sender. For example, there are two users, Bashir and Irshad. If Irshad requests money from Bashir, then she can send a request to Bashir by using QR code. Once Bashir receives this request he will either scan the QR code or manually type in Irshad’s Ethereum address and send Ether to Irshad’s address. This request is encoded as a QR code shown in the following screenshot which can be shared via email, text or any other communication methods.2. Once Bashir receives this request he will either scan this QR code or copy the Ethereum address in the Ethereum wallet software and initiate a transaction. This process is shown in the following screenshot where the Jaxx Ethereum wallet software on iOS is used to send money to Irshad. The following screenshot shows that the sender has entered both the amount and destination address for sending Ether. Just before sending the Ether the final step is to confirm the transaction which is also shown here:
- Once the request (transaction) of sending money is constructed in the wallet software, it is then broadcasted to the Ethereum network. The transaction is digitally signed by the sender as proof that he is the owner of the Ether.
- This transaction is then picked up by nodes called miners on the Ethereum network for verification and inclusion in the block. At this stage, the transaction is still unconfirmed.
- Once it is verified and included in the block, the PoW process begins.
- Once a miner finds the answer to the PoW problem, by repeatedly hashing the block with a new nonce, this block is immediately broadcasted to the rest of the nodes which then verifies the block and PoW.
- If all the checks pass then this block is added to the blockchain, and miners are paid rewards accordingly.
- Finally, Irshad gets the Ether, and it is shown in her wallet software. This is shown here:
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.
Different Ethereum networks
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
Mainnet is the current live network of Ethereum. The current version of mainnet is Byzantium (Metropolis) and its chain ID is 1. Chain ID is used to identify the network. A block explorer which shows detailed information about blocks and other relevant metrics is available here. This can be used to explore the Ethereum blockchain.
Testnet
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.
Private net
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