83 Resources | 204+ Hours
The development of Blockchains and decentralized applications (Dapps) is exploding in popularity, some are even calling it the next disruptive paradigm, alongside the internet and mobile phones. The Blockchain is a new technology that functions as a decentralized, peer-to-peer-managed digital ledger. Even more impressively, it solves the (supposedly) unsolvable issue of “double spending” using a decentralized approach (vs. the conventional, centralized approach which involves a trusted third-party to monitor all transfers) which requires a cryptographic problem to be solved mathematically within an allotted time frame, this is called the Proof of Work (PoW) and this ensures that transactions are irreversible and final. Hundreds of cryptographic currencies (also known as cryptocurrencies) are currently in circulation, the most widespread being Bitcoin and Ethereum. Aside from being just digital forms of currency, some are also Blockchain development platforms and frameworks. This combination has to led to powerful growth and investment into this domain.
Some of the most prominent Blockchain development platforms are Ethereum, Hyperledger (Fabric, Iroha, Sawtooth Lake), Multichain, Stellar, Dispatch, and NEO. For the purposes of this learning path, the focus will be the Ethereum platform, as the vast majority of the 1,500 digital currencies in circulation today are built on top of the Ethereum technology foundation.
Why this course?
If you are a developer or manager who has been curious about what this whole Blockchain movement has been about, then this course is a great fit for you! This learning path will provide you not just a broad-brush overview of the Ethereum technology landscape, but it can be used as a reference guide going forward as you develop distributed ledger technology (i.e. Blockchain) and decentralized applications. Many of these learnings will be transferable to other Blockchain platforms and can serve as the basis to help achieve your development goals.
Who is this for?
This course is for software engineers, computer scientists, or product developers looking to learn how to build decentralized (or centralized) applications using Blockchain technology. The end result can be a new Blockchain protocol, an alternative cryptocurrency, or an application that runs in the Ethereum technology stack. Ideally, this course is geared for someone with hands-on experience in Java, C#, Golang, or Python, has proficiency in Node.js, GIT repositories or similar source code management systems.
1.0 Introduction to the Blockchain Application Stack
1.1 Blockchain Application Stack [45m]
In order to be successful as Blockchain Developers, you will need to familiarize yourself first with the Blockchain application stack. The layers are:
- Base layer is the infrastructure layer, which is where the computer/storage/network/virtualization takes place, this can be in-house or use an established Blockchain as a Service (BaaS) solution.
- Next layer is focusing on the network and protocol, deciding which type of Blockchain you want to create (permissionless like Bitcoin or Ethereum or permissioned like R3), development platform, network participating nodes consensus algorithm (e.g. Proof of Work (PoW), Proof of Stake (PoS), hybrid, etc..)
- Next layer up is the services layer which enables the operation of the application (one layer up) and establishes the connections to different functions such as Oracles (API to real-world data), smart contracts, Multisignature (multi party contract), Wallets, Distributed File Stores, and much more.
- Final layer is consumer or client-facing, which is the application Layer where the business logic and user interaction takes place, and this requires using different programming languages such as C++, Python, Solidity, and Java.
Each technology serves a specific purpose, and it is always a good idea get familiarized with not just your contribution to the application stack but to understand different interoperable technologies.
1.3 Distributed Hash Tables [10m]
There is a tremendous amount of capital and funding approved and dedicated now to crypto technology infrastructure and architecture, and rightfully so, the digital piping and wiring needs to be established before anything meaningful can be produced. It is also important to learn about the autonomy, decentralization, fault tolerance, and scalability of distributed hash tables (DHT).
1.4 Technology Landscape [30m]
This map highlights some of the prominent applications that run on top of multiple Blockchains such as cryptocurrency exchanges where digital currencies are being traded, payment processing solutions such as Bitpay and Circle, and issuance platforms (e.g. product that allows you to tokenize virtual assets to allow for easy transferability).
Blockchain developers are typically responsible for designing and building industry-specific solutions using Blockchain technology as well as leading and contributing to Blockchain infrastructure setup and solution development using a prominent framework. Also, they should understand functional requirements as applicable to the target industry and convert them into system and user specifications for development. Finally, they should define development approaches, best practices to implement the solutions, and document all development frameworks and design artifacts.
1.5 Typical Blockchain Application Team Structure
It is good to understand which position you would like to first focus on, and while you evaluate which component in the Blockchain application stack you are going to contribute on, you can get a glimpse into how these constructs work. Generally speaking, you would have:
- Back End: this would involve setting up the cloud server, writing APIs in Python, Node.js, Rails, building the database in Mongo, Postgres, Cassandra for ACID properties, that being said, in a perfectly decentralized world, the Blockchain you are using would ultimately be your database, therefore, the database design will be dictated by the need of a centralized vs. decentralized vs. distributed vs. hybrid environment. These APIs are ultimately critical for user management (such as Signups, logins, logouts, browser sessions), the issuing and utility behind the tokens, a block explorer API if needed, a dashboard API to pull data from the database, wallet management API (to send and receive tokens, if applicable), security and permission management, and creating logs and analytics for all possible events. logs/analytics for all events.
- Blockchain-Platform: this would involve converting the data input into variables, create solidity code, using the variables and deploying it in the Ethereum network (either the MainNet / Testnet) using Solidity. This might be the most complicated module of the solution.
2.0 An introduction to Development Platforms and Frameworks
There exists dozens of decentralized applications frameworks built on top of Blockchain technology, and each of these uses either its own programming language or has created a proprietary programming language specific to that platform. Some of the notable examples include: Ethereum, Lisk, Omni, NEO, Ardor, Qtum, Counterparty, Stellar, Waves, Bitshares, Ubiq, NXT, and Waltonchain. This article highlights some of the more known platforms and frameworks being used extensively today.
3.0 An introduction to Ethereum
Original White Paper [5-10h]
This is always the first step into Ethereum, strongly recommend taking as much time as possible to read this in detail. This is a living and breathing document that is constantly updated.
How does Ethereum Work? [45-90m]
I would recommend spending time reading and fully understanding the contents of this article. It is well organized and kicks off from the beginning, by what a Blockchain is, it explains the Ethereum blockchain paradigm, and goes into exhaustive detail about transaction confirmations and execution plans.
The Centre for International Governance Innovation (CIGI) is an independent, non-partisan think tank on international governance, CIGI’s interdisciplinary work includes collaboration with policy, business and academic communities around the world, and this is an interview conducted by CIGI’s Senior Fellow Julie Maupin, where she asks Vitalik Buterin, founder of Ethereum, to raise the curtain on this complex platform and its governance implications. Their discussion covers a wide range of subjects: Buterin’s introduction to cryptocurrencies; the creation of Ethereum; how hardware — big and small — plays a role in future development and adoption; and Ethereum’s imminent transition from the “proof of work” model to “proof of stake.”
Vitalik is now spending much less time submitting programming code updates, and more time on the architecture of Ethereum, focusing on properties, efficiency, simplicity, privacy, and scalability.
3.1 Introduction to Cryptocurrencies, Smart Contracts and Decentralized Applications
Using Blockchain technology, you can create cryptocurrencies (from scratch or by forking an existing public code repository), smart contracts (automatically enforcing rules), and decentralized applications (programs without a central owner or a single point of failure) If your goal is to create a new cryptocurrency and raise capital using an initial coin offering (ICO), then your development process will depend on which cryptocurrency you would like to create, the type of functionality and features you are looking to have, the characteristics of the token or coin (i.e. will it mineable or stackable, what consensus algorithm will the operating nodes have to agree to, what will the hashing rules be, what type of token distribution mechanism will be in place, what properties of cryptoeconomics such as inflationary measures will be enforced at the protocol level. There is a long list of tools and technologies in the Ethereum Ecosystem, and I did my best to pick out a few notable ones to help you embark on this exciting journey.
Although theoretically, you can use any programming language to either create a cryptocurrency or a blockchain, the most common languages are Go (Golang), C, C++, Java, Python, Perl and it would be helpful to use a programming language that is widely supported and has a thriving and active development community. The official language the Ethereum Virtual Machine (EVM) is written in is Go. Although there are quite a few different implementations, the Geth client is the most prevalent and Go is also the preferred language for a few other major projects, namely Cosmos. The beauty of cryptocurrencies is that you can literally have access to the entire Ethereum open-source programming scripts, and create your own alternate coin (altcoin) by forking the original code (if you would like full control over every aspect), or simply issue a token on the Ethereum network. It is important to mention that currently, over 90% of cryptocurrencies are tokens or assets issued on the Ethereum platform.
This is the canonical definition of what a cryptocurrency is and provides a succinct explanation of how the Bitcoin Blockchain works, incentive model in use, how privacy is established, and how Merkle trees are used for simplified payment verification (very important concept for several cryptocurrencies).
3.2.1 Ethereum Token Standard
It is important that you first get familiarized with Ethereum Request for Comments (ERC), which is the official protocol to propose improvements to the Ethereum network, the most common being ERC20 and ERC23 (officially known as ERC223) for creating cryptocurrencies.
ERC20 Token Definition [2h-3h]
These define the set of rules for tokens operating within that environment. This is an important article to read through in-depth, as it explains the interface rules, what a token contract does, how to establish balance transfers and coin/token supply circulation
3.3 Smart Contracts
This is a great overview Mahesh Murthy, and he provides a fantastic summary of each of the key components of the Ethereum network. For the purposes of this course, I am only focusing on a few of these sections, however, it is worth reading through and familiarizing yourself with some of the recent innovations, such as InterPlanetary File System (IPFS), Swarm, Whisper, and ENS.
Solidity Tutorial [2h-15h]
This provides a great introduction to Solidity, which it defines as statically typed, as it supports inheritance, libraries and complex user-defined types among other features. It walks through examples to create contracts for voting, crowdfunding, blind auctions, multi-signature wallets and more. The power of this resource is that it is mostly translated in Chinese, Spanish, Russian, and Korean.
Solidity Integrations [3h-20h]
This is a powerful list of integrations available for the Solidity language including Remix (Browser-based IDE with integrated compiler and Solidity runtime environment), Visual Studio ( plugin for Microsoft Visual Studio that includes the Solidity compiler), and Solhint (Solidity linter for security and best practice rules code validation).
Solidity Tools [2h-15h]
This lists some of the common tools to help as you learn, including Dapp (Build tool, package manager, and deployment assistant) and Solidity REPL (which allows you to try coding in Solidity instantly with a command-line console).
This is an excellent step by step tutorial that walks through at a steady pace how to develop a powerful, yet simple voting app on the Ethereum platform. It contains three parts and it was just refreshed recently to take advantage of recent Ethereum upgrades. If you are looking to write the code from scratch and not reuse any of the core content, it would be a great way to learn how to write smart contracts, it would just take considerably longer to complete than just a few hours. The goal of this exercise is to:
- Setting up the development environment for the voting app
- Learn the methodology and syntax of writing a smart contract, then compiling it and deploying it in the environment
- Interact with the smart contract on the Ethereum blockchain through a Node.js console.
- Interact with the smart contract through a simple web page to display the vote counts and vote for candidates through the page.
This tutorial is a continuation of the above voting app development, and once you are done, you would have:
- Learned how to Install geth, which is the client software (one of many) used to download the entire Ethereum blockchain locally to run a node.
- Learned how to install the Ethereum dapp framework called Truffle which can be used for compiling and deploying the contract; this topic can potentially wait until the next section as that covers decentralized applications in far greater detail.
- Compiled and deployed the smart contract to the Ropsten Ethereum testnet.
- Had an opportunity to interact with the smart contract using the Truffle console and a normal web page.
The final tutorial will walk you through how to add a few key features to the voting dapp which was previously deployed to the Ethereum blockchain, and this will be an excellent activity to learn more advanced concepts. Key goals of the lesson are to:
- Learn how to use new data types like struct to organize and store data on the blockchain.
- Learn the principles of tokens and its usage.
- Learn how to make payments using Ether, the currency of the Ethereum blockchain platform.
Here is the decentralized voting app for the entire world to experience first-hand! A friendly reminder, is that for this app to work properly, you need to install the MetaMask browser extension and then switch over to the Ropsten TestNet.
Ethereum has promised from the beginning that it can deploy, powerful arbitrary code (also known as smart contracts), and this video tutorial co-produced by Will Warren and Jordan Leigh walks through, step by step on how to setup an Ethereum Development environment, the fundamentals of writing and deploying smart contracts on the Ethereum blockchain. Strongly recommended as both are brilliant.
This is a continuation of the above video tutorial, also recommended, especially for developers who like to follow allow visually.
3.3.1 Ethereum Smart Contract Security Principles and Audit
What is the risk of a smart contract being hacked? Do automated smart contract verification methods exist today? How effective are self-stabilizing, self-auditing, and self-corrective algorithms? These questions will be answered in the following sections.
It is essential that you review the material below before and during the creation of a smart contract. This ensures that your programming code follows standards and that security vulnerabilities are addressed as much as possible. No smart contract will ever be perfect, but near-perfection is the goal and an effective risk management and mitigation plan is imperative.
Smart Contract Best Practices [4h-15h]
This document provides a great baseline knowledge of security considerations, implications, and rules to follow for Solidity programmers. It is maintained by ConsenSys Diligence, and the broader Ethereum community.
Smart Contract Security Considerations [2h-5h]
This guide goes into great detail about the different pitfalls you can face as a solidity programmer, recommendations to follow, and highlights some formal verification methods available.
Smart Contract Audit Example [30m-1h]
This a great example of a smart contract audit completed by one of the most respected institutions in the business today, Zeppelin Solutions. Although each audit is unique and will vary considerably in detail, audits will be typically be organized in the following sections: severe issues that need to be addressed immediately before token launch, potential problems that could potentially evolve into becoming problems if not addressed promptly (such as timestamp usage, use of send and receive codes, escrow service, avoiding duplicate code, magic constants in amounts), warnings, and finally a conclusion.
This is an important read, it provides some key lessons learned from a solidity contest, some are preventable and some not as much, because that is the nature of smart contracts as a whole, you an only protect your code from known attacks, the important risk comes from unknown-attacks (circumstances or scenarios you had not considered during the initial design phase).
This article discusses the audit results of the contest and provides a great summary of each of the winning submissions, plenty of great knowledge here.
This is a smart contract that was actually deployed to the Ethereum MainNet used to facilitate wagers for that big boxing match that took place last year. The lead developer believed that going with a solution like Oraclize was the best bet, therefore, after the fight anyone can call the checkResult() function, assuming a tiny bit of Ethers is sent to cover the query fee, the function then pings Floyd Mayweather’s BoxRec page and scrapes the result of the McGregor bout, and finally, declares the winner in the contract accordingly. This is just a simple example of what is possible when you plug-in a real-life event into an automatically enforceable and transparent smart contract code.
3.4 Decentralized Applications
Before jumping right into building a decentralized application, it is inspiring to see what has already been built, and what has worked successfully versus what has not been adopted widely.
State of Decentralized Applications [30m-3h]
State of the ÐApps is a not-for-profit curated directory of Decentralized Applications globally. These are all built on top of the Ethereum Blockchain. State of ÐApps was created to categorize and showcase developed projects built on this amazing technology, and it includes multiple projects from different fields such as virtual reality, artificial intelligence, documentation and registries, career market, games, learning and training courses, and much, much more.
Ethereum DApps List [30m]
This is one of the greatest resources available in this space, it is showing nearly 300 decentralized applications running on top of the Ethereum platform, and it highlights the sum of ETH balance that is in all the DApp contracts, daily active users, the number of transactions processed daily, and much more. This list has grown considerably and the notable projects to closely track that are already live and being used actively are: Ethlance, CrytptoKitties, Etherbots, Ethercraft, Etheremon, Etheroll, ETHLend, Crypto Sportz, Edgeless, 0xBitcoin, and Forkdelta.
This is a great technology workflow that provides an overview of Dapps, from the perspective of the front-end. It shows that you can build a DApp that provides a UI for users to deploy a contract and then use it (Steps 1 or 4). Alternatively, the Dapp could assume the contract’s already been deployed (more common these days) and start the UI flow from there (Step 6).
This is the best introduction to decentralized application development out there, it was completely produced by Jordan Leigh at Decypher Media. We are fortunate, because this course used to be a premium offering and it used to cost money to access, however, it is now freely available.
The playlist is quite comprehensive and you certainly do not need to watch and execute every step of the program, but it would be helpful to cover the main sections. Some of the earlier material is slightly outdated, that being said, it is still entirely relevant. The entire list is described below, I have bolded the most pressing tutorials:
- Provisioning the development environment
- Creating Ethereum Key Pairs
- The Halting Problem and Why We Need Gas
- Introduction to Transactions
- Sending Transactions with User Interfaces
- Sending Transactions with Code
- Smart Contracts – Hello World
- Smart Contracts – Escrow
- Smart Contract – Coin Flipper – Part 1
- Smart Contract – Coin Flipper – Part 2
- Contract Inheritance
- Oracles and Oraclize
- How to use the Ethereum Name Service (ENS)
- Command Line Interface
- The Block Gas Limit
- Avoiding Loops with Mappings
- Contract Events
- Signing Arbitrary Messages
- Implementing an Authentication Scheme
- The ERC20 Token Standard
- Installing Geth
- The Genesis Block
- Syncing the Blockchain
- Geth Keystores
Decentralized Application – Series [2h-10h]
This index reviews some of the known Nexus / DappHub applications. This includes Dapps, libraries, packages with a Dapp file, in the hope to increase usage of their toolchain and functions as great case studies for developers. They are creating a comprehensive suite of blockchain-oriented developer tools in the spirit of the Unix Philosophy and it is definitely worth your time, as they contributed to the MakerDAO project as well as producing some widely used developer tools.
This is optional material, but it would still be worth watching if you are looking to setup an AWS EC2 instance from the beginning and are interested in setting up a Rails development environment. Afterwards, if interested, you can actually setup an AWS S3 instance for cloud file storage.
[Optional] Creating your own Ethereum apps using Ethereum Go [45m-2h]
This is still a useful guide and tutorial to follow as the Go language can also be used to build apps, since Ethereum was built initially on Go.
[Optional] Dapps for Beginners [5h-20h]
This team has produced some useful content for developers who are looking to jump into programming using cryptotechnology, they are also working on an educational platform called EthAcademy (more info in the tools section below), to compete with Codeacademy.
This is a list of tools and resources which you should find most helpful in your development:
Ethereum Stack Exchange is a question and answer site for users of Ethereum
Ethereum wiki; Free
Helpful in-depth descriptions of countless Ethereum components
Truffle boxes; Free
Useful boilerplates, these boxes can actually contain Solidity contracts & libraries, front-end views, and complete example dapps.
Solidity IDE, very useful and worth the time
This is not yet released, but I would suggest signing up for the newsletter as they send you a ton of great information on the latest Ethereum development tools and integrations.
It has a directory of Solidity smart contracts that could help you come up with more innovations.
Ethereum Github; Free
It has a great list of useful resources to help with Dapps development
With CryptoZombies, you’ll learn how to write Ethereum Smart Contracts using Solidity in a fun, interactive manner where you code your own zombie game, specifically building your own crypto-collectables game.
OpenZeppelin’s Ethernaut; Free
This is a great way to learn much more about Ethereum security, specifically how to protect your solidity code from being hacked (as much as possible). A great tutorial to learn the basics.
This is an incredible free web based tool which allows you to see, visually in a link map, which products from Amazon are correlated in some way or another. This example showcases Blockchain books. Try typing in Ethereum.
This was created to estimate the size of the Bitcoin network by reaching all contributing nodes.
Bitnodes Network Map; Free
This is another beautiful visualization of all nodes on the Bitcoin network, great to track over the course of multiple months.
Bitcoin Interaqt; Free
This awesome visualization is life and operates in real-time, showing blocks as they are being processed and mined. You can actually click any of the floating blocks and it will immediately show you the contents of that block in the explorer view.
Wonderful to see unconfirmed transactions in this type of view, you can see thousands of transactions waiting to be processed; there is a concerted effort by everyone in the Bitcoin community to expedite the adoption of some of the optimization routines they have in place.
This is one of the only solutions available today which allows you to track the flow of transactions as they are traversing the Blockchain. Very recommended to sign up.
Blocks WizB; Free
This is interesting to track, it allows you to zoom in and monitor where transactions are being processed by the nodes in the network.
5.0 Additional material
What you need to know about Blockchain technology; Free [20m-40m]
This is a great piece written by Karim Lakhani, Harvard Business School professor and co-founder of the HBS Digital Initiative, where he discusses blockchain in great depth. Lakhani breaks down how the technology behind bitcoin works and talks about the industries and companies that could see new growth opportunities or lose business.
The Truth about Blockchain technology; Free [15m-20m]
This is another excellent article by Marco Iansiti, David Sarnoff Professor of Business Administration at Harvard Business School and also by Karim R. Lakhani, Charles Edward Wilson Professor of Business Administration and the Dorothy and Michael Hintze Fellow at Harvard Business School. They discuss the patterns of technology adoption, the new architecture, a framework for Blockchain adoption
Written by one of the original cryptocurrency and Blockchain technology gurus, freely available here.
Another masterpiece written by Andreas Antonopoulos, it was published in December 2018, but there is a free edition available in GitHub.
This is one of my personal favorites, Melanie seemed ahead of her time when she released this book, this was prior to Ethereum even having mainstream attention, she is a true visionary and forecasted in 2015 quite a bit of what actually took place in 2017.
This article from Consensys provides a useful introductory tutorial on programming Dapp based smart contracts.
Despite this article being dated, it still contains a ton of useful information for aspiring Blockchain developers and Blockchain architects.
Ethereum in Practice – Parts 1, 2, and 3 by one of the lead Ethereum developers; Free [3h-5h]
- How to Build your own Cryptocurrency
- How to Build a Better Democracy in under a 100 Lines of Code
- How to Build Your Own Transparent Bank on the Blockchain
Ethereum for Web Developers; Free [15m]
A great resource that highlights the key differences between traditional IT infrastructure for a web app and Ethereum IT infrastructure for a web app
This is a great introductory article on how to find the best and most secure cryptocurrency wallet, it walks through different options for the major cryptocurrencies.
DApps Weekly; Free
This is a free, curated publication that is distributed via e-mail in a newsletter format that covers emerging technology in the Blockchain space. It is certainly worth a few minutes of your time on a weekly basis.
6.0 Capstone Projects
In this course, you have learned that Ethereum allows for DApps to be built for currencies, voting engines, financial derivatives, initial coin offerings, and the programmability of assets, analogous to how applications were built on an overlay protocol which laid on top of Bitcoin’s Blockchain. These platforms form the backbones of an entirely uncharted, thrilling space. The entire Blockchain landscape is growing at an exponential rate and the prospects are positive. These questions should be taken-away and thought deeply about:
- What businesses or functions will disappear due to Blockchain technology? What will emerge?
- What will the industry look like in 5-10 years?
- What will traditional supply chain or operations personnel need to remain competitive in the future? Do qualifications and skillsets need to adapt?
- What is the timeline for critical-mass adoption of commercial-ready decentralized applications? What can help trigger this for specific sectors?
- When can businesses count on a crypto technology smart contract foundation stable enough to invest in?
- What are competing platforms to Blockchain technology? Should Hashgraph and IOTA Tangle be considered threats or complementors?
Also, a big congratulations on finishing this entire course! It is a pleasure to call you a fellow Blockchain developer and I hope you have enjoyed the adventure. You now have learned enough to build an actual Blockchain application. Therefore, please select one of the following capstone projects to pursue:
- Intermediate- Building a decentralized voting application that allows users to submit votes for new features anonymously, with a twist, which is, the new feature that is voted upon will only go into effect if a certain # of users have successfully voted.
- Intermediate- Building a decentralized application on the Ethereum platform which will execute wills. The will would include the terms and conditions, constraints, contextual considerations, and everything that needs to be built into a smart contract that will enforce those rules into a logical workflow that can be audited by a neutral 3rd party and is fully transparent.
- Advanced- Building a decentralized application on the Ethereum platform which incentivizes to be healthy. Specifically, the application should have incentive-based structures in the smart contract, which tracks your workout schedule and eating habits. If you are effective in following the plan, you will be rewarded immediately at pre-set times that are programmed as conditions in the smart contract. This application can have countless use case such as: fundraisers, medical research (use it to monitor the usage of prescription medication of patients), physiotherapy advancements (use it to ensure that patients who are recovering from reconstructive surgery are following the strict at-home exercises), to help stop smoking or any form of addiction, and much more.