“When I came up with Ethereum, my first first thought was, ‘Okay, this thing is too good to be true.’ As it turned out, the core Ethereum idea was good — fundamentally, completely sound.”
— Vitalik Buterin
In the previous blog post I outlined how the revolutionary features of the Blockchain have the potential to change the world.
We also saw that Blockchain developers are in high demand — with related jobs being the fastest growing in today’s labor market:
“At the moment there are now 14 job openings for every one blockchain developer.”
With money pouring into the space and more than $6 billion being raised through ICOs in the first half of this year alone, blockchain startups, large tech firms, banks, payments and professional services firms are all aggressively hiring.
All of this means that as a Blockchain Developer you have the potential to earn more whilst also taking advantage of more flexible options such as increased chances of working remotely.
This post is intended to provide an introduction for Web Developers and Software Engineers who are (and should be) interested in learning how to get into this exciting new paradigm of Web 3.0.
But while this nascent technology is still in it’s infancy the blockchain space is already sprawling — so how do you even get started?
The Blockchain Ecosystem
First let’s take a look at the Ecosystem from 30,000 feet before we do a deeper dive down. There are already thousands of projects and hundreds of companies operating in various verticals in the space :
There are many parallel threads occurring with several races being run simultaneously to become for example:
- The number one Cryptocurrency (e.g. BTC, BCH, LTC, DASH),
- The number one “Crypto-Wallet” (eg. OMG, MTL, PAY, MCO),
- The number one Decentralized Exchange (e.g. BTS, BNB, ZRX),
- The number one dApps platform (e.g. ETH, NEO, LSK, QTUM),
As web developers and software engineers we will be focusing our attention in on the last of these — the DApps Platform or Developer Tools Segment.
Projects within this category are primarily used by developers as the building blocks for “DApps” or decentralized applications.
Blockchain 2.0: Introducing Ethereum
Blockchain applications which go beyond just supporting a digital currency are often referred to as Blockchain 2.0.
Blockchain technology was first introduced by Bitcoin as a way to keep track of digital cash ownership in a tamper proof way through a shared ledger.
Many soon realized however that the technology was not limited to a peer to peer digital cash system, it could be used to store any information of value.
This opened blockchain technology to a plethora of use cases beyond digital currencies.
Ethereum was announced at the North American Bitcoin Conference in early 2014 by Vitalik Buterin who had written a whitepaper the previous year.
The development of the platform was funded through a wildly successful crowdsale in the summer of 2014 and Ethereum went live on July 30th, 2015.
While Bitcoin is created as an alternative to regular money and is thus a medium of payment transaction and store of value, Ethereum was developed as a platform which facilitates peer-to-peer smart contracts and applications via its own currency vehicle or token.
Ether is the native currency of the Ethereum ecosystem and is used to facilitate and monetize the working of Ethereum to enable developers to build and run distributed applications (ĐApps).
But Why Ethereum?
There are a plethora of platforms already within the developer stack each with their own particular advantages (and disadvantages), their own implementation language, smart contract language, consensus algorithms and target market.
They all solve for specific flavours of problems in their own unique way and you may well end up working with one of these blockchains in the future depending on the use case.
However, Ethereum is the de-facto entry point into the blockchain development world
The Ethereum network is growing rapidly
Ethernodes reports about 17,000 nodes running the Ethereum blockchain across six continents, making it the most decentralized blockchain platform in existence.
At its height on January 4, the network processed 1.3 million transactions in 24 hours.
The Ethereum developer community is estimated to be the largest blockchain dev community in the world at over 250,000.
It has more than 30x the developers of the next most popular platform, arguably the strongest developer team and the most mature tooling.
The majority of ICOs and projects are built on top of it.
It also has the most industry support, with the Ethereum Enterprise Alliance boosting hundreds of corporate members. It’s most likely that if you’re doing blockchain development, you’ll start off writing code for Ethereum smart contracts.
The Ethereum blockchain is, without a doubt, the most active smart contract platform in existence.
Github, which draws open-source developers from around the world, lists 14,000 repositories and 220,000 commits involving Ethereum
Of the top 100 tokens by market cap, 94% are built on top of Ethereum and of the top 800, 87% are built on Ethereum.
Because so many tokens are built using the Ethereum Token Standard, the Ethereum blockchain now processes close to half of all USD value across all blockchain platforms, significantly more than Bitcoin.
While Ethereum has had some well publicized issues around scalability these issues are not unique but inherent in all blockchains and there is a tradeoff that is central and necessary in any potential solution.
This is famously described by Vitalik as the Scaleability Trilemma which claims that blockchain systems can only at most have two of the following three properties:
- Decentralization (defined as the system being able to run in a scenario where each participant only has access to O(c) resources, ie. a regular laptop or small VPS)
- Scalability (defined as being able to process O(n) > O(c) transactions)
- Security (defined as being secure against attackers with up to O(n) resources)
I believe that the Ethereum Core team and community will find effective solutions to all of theses existing problems in time, however.
Scaling solutions for the Ethereum main chain network are numerous with the projected testing of Proof of Stake this year through the rollout of the Casper protocol possibly in 2019, while other active projects such as Plasma aim to provide Layer 2 solutions, or “inter-blockchain protocols.”
Venture Further Into The Rabbit Hole…
Definitions: What is Ethereum?
- Ethereum is a decentralized platform that runs Smart Contracts on a custom built blockchain.
- It uses this blockchain to cryptographically store, execute, and protect these contracts.
- It forms a peer-to-peer network of virtual machines that any developer can use to run Distributed Applications (ĐApps).
- Each computer on this network downloads a small virtual machine called the Ethereum Virtual Machine (EVM) to sync with the Ethereum blockchain to maintain and alter it’s state.
- In short Ethereum can be thought of as a ‘World Computer’, providing the ability to replace centralized servers with thousands of individual computers (or “nodes”) across the world.
The EVM allows code to be verified and executed on the blockchain, providing guarantees it will be run the same way on everyone’s machine.
Ethereum maintains the state of the EVM on the blockchain. All nodes process smart contracts to verify the integrity of the contracts and their outputs.
This distributed network of computers conveniently provides the security, reliability, and computing power necessary for automatically carrying out contracts written in code.
Ether — The Fuel that Powers the Network
Within the Ethereum platform is a native currency called ether that is used to fuel the applications built on the platform.
Just as a car requires gasoline to power its engine, applications built on the Ethereum platform require ether to obtain computational power.
Ether is like a vehicle for moving around on the Ethereum platform and is used by developers looking to develop and run applications inside Ethereum.
According to Ethereum, it can be used to “codify, decentralize, secure and trade just about anything.”
Ethereum miners running the network nodes on their computers provide processing power to DApps and, in return, are compensated with ether.
The Ethereum Virtual Machine
This is one of the primary innovations of the Ethereum project and is a virtual machine designed to be run by all participants in a peer to peer network.
It can read and write to a blockchain both executable code and data, verify digital signatures, and is able to run code in a Turing complete manner.
It will only execute code when it receives a message verified by a digital signature, and the information stored on the blockchain tells it is appropriate to do so.
Think of a normal centralized organization.
All the decisions are taken by the leader or a board of decision makers.
This isn’t possible in a blockchain because a blockchain has no “leader”.
For the blockchain to make decisions, they need to come to a consensus in another way.
In simple terms, consensus is a dynamic way of reaching agreement in a group.
One of the central problems when it came to reaching a consensus is called the “Byzantine Generals Problem”. Without going into too much depth this can be summarized by describing generals in a “Byzantine Army” who want to attack a city and must agree on a concerted strategy to avoid catastrophic failure — when some of the Generals are unreliable.
A consensus mechanism can solve the Byzantine Generals problem. It can ensure that their army can actually attack as a unit despite these setbacks.
For example suppose the army on the left want to send a message called “attack at dawn” to the army on the right, they could use the following steps.
- First, they append a “nonce” (number only used once) to the original text. The nonce can be any random hexadecimal value.
- After that, they hash the text appended with a nonce to get a result. Suppose the armies have decided to only share messages which, on hashing, gives a result which starts with 6 zeroes.
- If the hash conditions are satisfied, they will send the messenger with the hash of the message. If not, then they will keep on changing the value of the nonce randomly until they get the desired result. This action is extremely tedious and time consuming and takes a lot of computation power.
- If the messenger does get caught by the city and the message is tampered with, according to hash function properties, the hash itself will be drastically changed.
- If the generals on the right side, see that the hashed message is not starting with the required number of zeroes then they can simply call off the attack.
Satoshi Nakamoto, Bitcoin’s creator, was able to bypass the problem by inventing the proof of work protocol.
Summary of how Proof-Of-Work Protocol works
- The miners solve these cryptographic puzzles to “mine” a block in order to add to the blockchain.
- The puzzles have been designed in a way which makes it hard and taxing on the system
- So this process requires immense amount of energy and computational usage.
- When a miner solves the puzzle, they present their block to the network for verification.
Even though this solves the Byzantine General’s problem however, there are still some issues with Proof-of-Work mechanisms.
- First and foremost, proof of work is an extremely inefficient process because of the sheer amount of power and energy that it eats up.
- Organizations that can afford faster and more powerful ASICs have a better chance of mining than the others which leads to more centralization.
As a result of the above issues Ethash, which is the the currently employed Proof-of-Work mechanism in Ethereum will soon be moving to Proof of Stake.
In the next post we will be getting down and dirty by setting up the tooling and environments necessary and begin our journey of coding in Ethereum using Solidity.
Next up, I would recommend the following Udemy Course as one of the best introductions out there to get you started.
If you want to get work as a Blockchain Engineer, there are some bonus topics in particular such as Public-Key Cryptography, Merkle Trees and CryptoEconomics which I will be exploring in detail in future posts.
But in the very next post we will get stuck in and start coding Ethereum in Solidity using the best up-to-date tools to continue you on your optimal path from being a Web Developer to becoming a Web 3.0 Blockchain Engineer.
In the meantime you can head over to www.optimizme.com and check out the platform we are building to help you harness the power of accelerated learning to upskill for the new economy.