The Ultimate Guide for Web Developers — Part 2 Read the first part here “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 The Cryto Space — Credit: BTC Inc In the I outlined how the revolutionary features of the Blockchain have the potential to change the world. previous blog post We also saw that — with related jobs being the fastest growing in today’s labor market: Blockchain developers are in high demand “At the moment there are now 14 job openings for every one blockchain developer.” and more than through ICOs in the first half of this year alone, blockchain startups, large tech firms, banks, payments and professional services With money pouring into the space $6 billion being raised firms are all aggressively hiring. All of this means that as a Blockchain Developer you have whilst also taking advantage of more flexible options such as increased chances of . the potential to earn more 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 : Credit: Josh Nussbaum / TechCrunch There are many parallel threads occurring with several races being run simultaneously to become for example: The number one C (e.g. BTC, BCH, LTC, DASH), ryptocurrency The number one (eg. OMG, MTL, PAY, MCO), “Crypto-Wallet” The number one (e.g. BTS, BNB, ZRX), Decentralized Exchange The number one (e.g. ETH, NEO, LSK, QTUM), dApps platform As web developers and software engineers we will be focusing our attention in on the last of these — the or Developer Tools Segment. DApps Platform 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. was first introduced by Bitcoin as a way to keep track of digital cash ownership in a tamper proof way through a shared ledger. Blockchain technology 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 who had written a the previous year. Vitalik Buterin whitepaper 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 via its own currency vehicle or token. a platform which facilitates peer-to-peer smart contracts and applications and is used to facilitate and monetize the working of Ethereum to enable developers to build and run distributed applications (ĐApps). Ether is the native currency of the Ethereum ecosystem Comparison of Bitcoin and Ethereum 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. and you may well end up working with one of these blockchains in the future depending on the use case. They all solve for specific flavours of problems in their own unique way Credit: PrimeTrade.ai However, Ethereum is the de-facto entry point into the blockchain development world Credit: Etherscan.io The Ethereum network is growing rapidly reports about 17,000 nodes running the Ethereum blockchain across six continents, making it the most decentralized blockchain platform in existence. Ethernodes At its height on January 4, the network processed 1.3 million transactions in 24 hours. Source: ethernodes.org The Ethereum developer community is estimated to be the largest blockchain dev community in the world at over 250,000. arguably the strongest developer team and the most mature tooling. It has more than 30x the developers of the next most popular platform, The majority of ICOs and projects are built on top of it. It also has the most , 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. industry support 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 and of the top 800, . Of the top 100 tokens by market cap, 94% are built on top of Ethereum 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. Teething Problems While Ethereum has had some around scalability and there is a tradeoff that is central and necessary in any potential solution. well publicized issues these issues are not unique but inherent in all blockchains This is famously described by Vitalik as which claims that blockchain systems can only at most have two of the following three properties: the Scaleability Trilemma (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) Decentralization (defined as being able to process O(n) > O(c) transactions) Scalability (defined as being secure against attackers with up to O(n) resources) Security I believe that the Ethereum Core team and community will find effective solutions to all of theses existing problems in time, however. for the Ethereum main chain network are numerous with the projected testing of this year through the rollout of the protocol possibly in 2019, while other active projects such as aim to provide Layer 2 solutions, or “inter-blockchain protocols.” Scaling solutions Proof of Stake Casper Plasma 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 that any developer can use to run Distributed Applications (ĐApps). a peer-to-peer network of virtual machines Each computer on this network downloads a small virtual machine c to sync with the Ethereum blockchain to maintain and alter it’s state. alled the Ethereum Virtual Machine (EVM) , providing the ability to replace centralized servers with thousands of individual computers (or “nodes”) across the world. In short Ethereum can be thought of as a ‘World Computer’ 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 for automatically carrying out contracts written in code. conveniently provides the security, reliability, and computing power necessary 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. and is used by developers looking to develop and run applications inside Ethereum. Ether is like a vehicle for moving around on the Ethereum platform 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. Consensus 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 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. “ Byzantine Generals Problem ”. It can ensure that their army can actually attack as a unit despite these setbacks. A consensus mechanism can solve the Byzantine Generals problem. 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. (number only used once) to the original text. The nonce can be any random hexadecimal value. First, they append a “nonce” After that, to get a result. Suppose the armies have decided to only share messages which, on hashing, gives a result which starts with 6 zeroes. they hash the text appended with a nonce If the hash conditions are satisfied, they will . 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. send the messenger with the hash of the message 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 to “mine” a block in order to add to the blockchain. solve these cryptographic puzzles The puzzles have been designed in a way which makes it hard and taxing on the system So this process and computational usage. requires immense amount of energy 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 because of the sheer amount of power and energy that it eats up. an extremely inefficient process 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 will soon be the currently employed Proof-of-Work mechanism in Ethereum moving to Proof of Stake. Next Steps 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. https://www.udemy.com/blockchain-developer/ If you want to get work as a Blockchain Engineer, there are some bonus topics in particular such as and which I will be exploring in detail in future posts. Public-Key Cryptography, Merkle Trees CryptoEconomics 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 and check out the platform we are building to help you harness the power of accelerated learning to upskill for the new economy. www.optimizme.com The OptmizMe Platform