Ethereum : Decentralized Application Design & Development
4.6 (394 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
2,048 students enrolled
Wishlisted Wishlist

Please confirm that you want to add Ethereum : Decentralized Application Design & Development to your Wishlist.

Add to Wishlist

Ethereum : Decentralized Application Design & Development

Develop a full blown DAPP in next 2 weeks. You will learn Geth, Web3, Truffle, TestRPC, MetaMask, Wallets, Solidity +++
Best Seller
4.6 (394 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
2,048 students enrolled
Created by Rajeev Sakhuja
Last updated 8/2017
English
Curiosity Sale
Current price: $10 Original price: $65 Discount: 85% off
30-Day Money-Back Guarantee
Includes:
  • 9.5 hours on-demand video
  • 19 Articles
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
What Will I Learn?
  • Ethereum: Wallet, Geth node, API for Geth
  • Solidity language for writing smart contracts
  • Writing a front end for Decentralized Application in HTML/CSS/Javascript
  • Smart contract development using TestRPC/Truffle/Mocha framework
  • Smart contract design patterns
  • Student should be able to develop an end to end DAPP at the end of the course
  • General concepts of Blockchain
  • Ethereum: Under the hood : How it works : Smart contracts : Consensus : +
View Curriculum
Requirements
  • Student must have basic idea of Blockchain technology; heard of Bitcoin
  • Student should have hands on experience with Javascript *or* Java *or* NodeJS
  • Student must be comfortable in learning new language, design patterns & an architectural paradigm
  • Good to have knowledge of some Javascript frameworks but not needed
  • Basic understanding of Javascript DOM model
  • Foundational understanding of patterns
Description

PS

  1. Please do NOT join the course if you are not comfortable with coding
  2. This course starts from the Basics so if you are an expert you may already know first few sections. Do take a preview before joining.
  3. This course will NOT teach you Javascript or any Javascript framework. 
  4. Please read the Pre-Requisites before signing up
  5. Focus of the course is Ethereum hence it was decided to use HTML DOM JS API instead of Angular/JQuery & other JS libraries.

Background

Demand for Blockchain technologists is going up as multiple enterprises (& startups) are looking to achieve efficiencies or/and create new business models enabled by the Blockchain technologies. Ethereum is the leading Blockchain platform and is accepted as the most mature platform for Blockchain applications. Ethereum technology is quite complex but the approach taken in this course "Learn by doing" will accelerate the learning process and make it easy for the students to understand the concepts. Please refer to "Introduction to Ethereum" below for a high level overview of Ethereum.

Why learn Blockchain/Ethereum?

If we are to believe the pundits, Blockchain will change the way software is built for business transactions. Almost all industries are looking to leverage this new technology to gain efficiencies and/or to create new business models & opportunities. Organizations are looking for talent in this new technology and facing difficulty in finding developers/architects who can design and develop Blockchain applications.

Taking this course will prepare you to innovate using this cutting edge technology that promises to change the world around us. It will prepare you for the future.

What students should know?

To build Ethereum Decentralized applications you will need to learn a couple of skills. This course can help you learn those skills but there are some prerequisites for the course:

  1. Experience with either Javascript or Java. Course will NOT teach Javascript

  2. Basic understanding of the Javascript/HTML DOM model

  3. Access to a PC or MAC with access to the Internet (Minimum 4GB needed 6 GB preferred)

  4. Comfortable with new software installation & hands on coding

Course Approach?

This course takes the approach of “Learn by doing”. Students are encouraged to try out all aspects of the technologies on their own after each lecture. Almost all of the concepts discussed in the lectures are shown in action by way code samples etc. The demo code used in the lectures is available for download from GitHub so that students can change the code to try out new things.

Front end of the Decentralized applications are typically created as single page or desktop applications using Javascript/HTML/CSS. Since there are multiple Javascript frameworks, it was decided to keep the lectures independent of any specific JS framework. Students are free to use any one or more JS frameworks of their choice.

Multiple quizzes in each section will validate student’s knowledge. Coding exercises will help them understand the concepts better & gain confidence.

Course is divided into 8 sections:

Section#1

Introduces the Blockchain & Ethereum technology

Section#2

Drills deeper into the Ethereum Blockchain technology

Concepts, Wallet

Hands-on:  Install Wallet, Mining for Ethers, Transactions

Section#3

Ethereum Client

Hands-on: Install Geth, Try out the geth commands & options

Section#4 Geth Javascript Management API

Hands-on: Try out the various API i console and by writing scripts

Section#5

Web3 API

Hands-on: Develop Javascript/HTML front end for executing contracts on TestNet

Section#6

Getting ready for Smart Contract development

Learn about the various tools & frameworks used for developing smart contract

Hands-on: Installation : Visual Studio, Truffle, TestRPC, Meta-Mask

Section#7

Solidity for smart contracts development

Learn the concepts of Solidity language

Hands-on: Code simple contracts in Solidity + write test cases for testing

Section#8

Solidity &Infrastructure patterns

Hands-on: Code smart contracts

End to end application walkthrough

Hands-on: DIY Project & Solution

Introduction to Ethereum

The digital cryptocurrency Bitcoin was the first Blockchain application. Success of Bitcoin led to the creation of the Ethereum platform. Whereas Bitcoin is a “Blockchain Application”, Ethereum is a “Blockchain Platform”. Ethereum not only supports a distributed ledger but it also supports Smart Contracts.

Smart Contracts are computer programs that has the code that implements contractual agreements (rules) between two or more parties. The rules coded in the smart contract are triggered by events in the physical world and automatically carry out some predefined action(s). All of this happens without any intermediary, web servers or back end databases.

Let me give you an example - Ebay is the intermediary between the buyer and seller. EBay makes $ every time a buyer buys an item from the seller. In a decentralized bidding application a smart contract can replace EBay the intermediary. The rule coded in the contract will be that when buyer will pay, the seller will ship the item to the buyer. The funds will be held in the smart contract till buyer confirms the receiving of the goods. Once the buyer confirms the receipt of goods the funds will be released to the seller. Smart Contracts are executed on the Ethereum network nodes as opposed to a centralized server infrastructure owned by an intermediary (e.g., Ebay). Nodes are Ethereum client processes running on the network participant’s computer. 

Anyone can write Ethereum decentralized application, so in other words you can create your own Bitcoin like Cryptocurrency or Ebay like application on a public Ethereum network. Please note that all applications are not a good candidate for Blockchain technology for example building a static website on Blockchain technology is not the right use of the technology.


Who is the target audience?
  • Technologists interested in learning Ethereum Blockchain
  • Architects wanting to expand their skills to Blockchain technology
  • Developers willing to learn Blockchain by doing that is coding
  • Experimenters curious to learn how Blockchain technology can change the way we do business
  • Entrepreneurs with technology background interested in realizing their business idea on the Blockchain
Students Who Viewed This Course Also Viewed
Curriculum For This Course
84 Lectures
09:39:22
+
Blockchain foundational concepts
5 Lectures 32:37
  • Author's Introduction
  • Outline of the course
Preview 02:54


In this lecture students will get a overview of how the Blockchain revolution started.

  • Decentralized Versus Peer-To-Peer 
  • Introduction Bitcoin network
Evolution of Blockchain
07:21

This lecture introduces the general concepts of Blockchain that applie to most Blockchain platforms/applications.

  • Characteristics of Blockchain
  • Terms used in the context of Blockchain
Blockchain 101
13:01

There are two objectives for this lecture:

  • High level overview of Ethereum
  • Introduction to Smart Contracts

At the end of this lecture student should be able describe the key aspects that differentiate Ethereum from other Blockchain platforms/appiications

Preview 08:19
+
Ethereum Blockchain & Using the wallet for interacting with Network
14 Lectures 01:36:09

Lecture provides an overview of the Ethereum Decentralized applications. At the end of this lecture student should be able to:

  1. Describe the working of DAPP
  2. Explain the architecture & technical components of DAPP
Ethereum Decentralized Applications
06:38

Students will learn about the:

  • Ethers which is the value token on Ethereum; how do they get created?
  • What an EVM is
  • Gas
  • How the transaction fee is processed
Preview 09:23

There are multiple types of Ethereum networks. In this lecture student will learn about the different types of Ethereum networks. When working on DAPPs the developer will need access to the block and transaction information. This lecture will cover the webapps for exploring the Blockchain networks.

Ethereum Networks & Blockchain explorers
10:34

Consensus refers to a process that secures the Blockchain network and validates the transaction. There are multiple consensus models but the two common ones are 

  • Hashing functions
  • Proof of Work
  • Proof of Stake

Students will learn about these two common consensus model in this lecture.

Hashing functions, Proof of Work, Proof of Stake
13:43

Checks students knowledge of Ethereum DAPPs

Decentralized Applications
9 questions

Students will learn:

  1. How to setup the Ethereum Wallet
  2. Internal working of the wallet


Wallet installation, working, mining & send transactions
07:47

In this lecture students will learn:

  1. How to mine for ethers using a wallet
  2. How to send ethers to other accounts
Ethereum Wallet: Mining and Sending Ethers
04:03

In this lecture students will learn about faucets.

Ether Faucets : Getting Free Test Ethers
03:38

Provides a walkthrough for the installation of the Ethereum Wallet on Mac

Ethereum Wallet Installation on Mac OS
01:00

There are different types of accounts. This lectures describes these account types along with demo of how these accounts are used from the wallet.

Externally Owned accounts and contract accounts
14:59

Students will learn how an ethereum wallet can be used for:

  • Deploying custom contracts
  • Watch contracts deployed outside the wallet
Preview 08:07

Checks student's understanding of Wallets

Ethereum Wallets & Transactions
6 questions

This is an exercise that student must try out on their own.

Exercise: Deploy & Interact with contracts
00:21

Meta Mask is a chrome plugin that turns a browser into a Decentralized App container. Students will learn about its capabilities and see it in action.

Preview 07:43

This lecture demonstrates the use of an online tool that can be used for developing smart contract code.

Browser Solidity for developing contracts
07:47

Exercise to reinforce the concepts covered

Exercise: Execute Contracts using Meta Mask
00:26
+
Ethereum Clients, Network & Geth
8 Lectures 54:31

Important information about the recent issues with TestNET

PLEASE READ before proceeding (ROPSTEN Revival)
00:45

Ethereum client software is used for participating in the Ethereum network. In this leacture students will learn about how the client works.

Preview 07:16

Lecture demonstrates the installation of the Ethereum client: Geth

Geth is the "Go Ethereum" client.

Geth - the Ethereum Go Client
07:35

Students will learn:

  • Commands for getting information from the client (help, license, version)
  • How to setup Geth client for connecting to the testnet
Geth CLI - Setting up the client for Testnet (1 of 5 )
08:53

In this lecture students will learn how to create a Private Dev Network

> geth --dev

Geth CLI - Setting up the Private Dev Network (2 of 5)
04:19

This quiz will test student's knowledge and understanding of the Ethereum client.

Ethereum client - setting up geth for Testnet & Private Dev Network
7 questions

Lecture covers the 

  • High level overview of the API available for geth
  • Covers the protocols used for communicating with geth (IPC/RPC & Websockets)
Geth CLI - Setting up the IPC/JSON/WS-RPC (3 of 5)
06:12

Ethereum client - setting up the IPC/JSON/WS-RPC
6 questions

Lecture shows how the console/attach commands can be used for connecting to a running geth client. Geth allows execution of Javascripts, in this lecture student will learn about this feature as well.

Ethereum Client - Javascript Console (4 of 5)
08:03

Ethereum client - Javascript Console
4 questions

Lecture covers the commands/options for 

  • Accounts management
  • Mining
Geth CLI - (5 of 5)
11:28

Geth CLI - Accounts & Miner
6 questions
+
Geth Javascript Management API
6 Lectures 40:34

Ethereum client exposes API for invoking actions & for inquiring the network. This lecture provides an overview of:

  • Management API
  • web3 API
Javascript Dapp & Management API overview
06:07

The Ethereum clients expose an admin object on which API can be invoked for controlling the behavior of the node or client.

Javascript API - admin
06:58

Javascript API - admin
4 questions

Lecture shows how the personal object exposed by the Ethereum client is used.

Preview 05:11

Ethereum client - Account command and options
4 questions

The miner API provide control over the mining operations. Students will learn these commands and see the mining operation in action.

Javascript API - miner
03:08

Javascript API - personal & miner
4 questions

This lecture covers the :

  • Concept of transaction pools & nonces
  • Demo of txpool object's use
Javascript API - Nonces, txpool
11:12

Javascript API - Nonces & txpool
4 questions

The debug object is available for getting visibility into the Ethereum client implementation. This lecture discusses the information that can be accessed using the debug object.

Javascript API - debug
07:58
+
web3 Javascript API
16 Lectures 02:01:29

Talks about the sample application developed in this section.

Please READ before proceeding : web3 Sample Application
00:42

There are multiple libraries available for connecting front end applications to the Ethereum network. In this lecture students will get an overview of the web3 API

web3 JS Overview
02:49

In this section a full blown single page application will be developed to connect with the Geth node. 

This lecture will show the students how to setup a sample application development environment.

Setup the Dapp development environment
08:12

Describes the decentrallzed application that will be incrementally developed through the lectures in this section.

Preview 04:08

This lecture describes the sample application components. It also shows how the front end connects to the Geth node using the web3 JS

1. Setup web3 and connecting to node
06:07

Talks about the web3 API that can be used for getting the version information for the node and the runtime status of the node to which the app is connected.

2. Web3 Version & Node Status API
05:37

web3 API: Setup and Node status
4 questions

Student is advised to code the suggested API in the application. This would help them get up to speed on web3 API coding.

Exercise: Extend the doGetNodeStatus()
00:14

In this lecture students will learn how to use the web3 Account APIs. The sample app will be expanded to show the accounts setup on the Geth.

3. Account list and balances API
07:06

The sample app will be expanded to:

  • Lock/UnLock accounts
  • Send ethers to different accounts
  • Get the balances of the accounts
4. Account unlocking and send transaction API
14:00

web3 API: Account list, unlock, transactions
5 questions

web3 API: Send Transactions and Transaction object
6 questions

Two objectives for this lecture:

  • Setup the Solidity compiler on local machines
  • Setup Geth to use the compiler
5. Solidity code compilation using SOLC and Web3 API
09:15

Lectures covers

  • Contract deployment process
  • Web3 API for deployment of contract
6. Contract deployment to network
11:05

web3 API: Smart contracts compilation & deployment
7 questions

The front end of the decentralized application invokes the function on the deployed contracts. You can invoke the functions using call of send API. This lectures describes the difference.

7. Contract invocation
13:42

Ethereum has a built in logging and event functionality. Decentralized applications can use the logging and events for creating rich UI applications. This lecture provides an overview of the patterns that are implemented by applications around events/logs.

Preview 07:13

Lecture covers the API for:

  • Watching for events
  • Getting event data from logs
9. Filter, Watch & Logs API
19:27

In this lecture students will learn how end-to-end events work i.e., when an event is emitted by contract instance how it is received by the front end.

  • Indexed attributes
  • Filtering on topics
10. Watch and Get with contract API
11:32

Checks student's understanding of the contracts and events

Web3 : Contract & Events
5 questions

Coding exercise for creating a DAPP

Exercise: Create a front end application for the Interact.sol
00:20
+
Getting ready to write Solidity contracts
5 Lectures 37:13

Student will learn about the tools used for the development of the Contracts:

  1. Visual studio code
  2. Test RPC EVM Simulator
  3. Truffle Dapp Framework
  4. Moch/Chai Framework


At the end of this lecture student should have all the development tools installed on their local machine.

Setting up the contract development environment
12:15

This lecture will provide the student an overview of the contract development using the Truffle framework. Primarily at the end of this lecture student should be able to create a project using the Truffle CLI commands.

1. Truffle: Setting up a project
06:58

In this lecture student will learn about the practices for developing smart contracts & use of Truffle for creating contracts/test cases etc.

Preview 07:35

This lecture talks about the

  • Deployment process for contracts
  • Describes the configuration for migrations/deployments
  • Walkthrough of the truffle commands used for deployment
3. Truffle: Deploying contracts to Ethereum networks
10:07

Checks students understanding of the development environment for smart contracts

Developing contracts using Truffle & TestRPC
5 questions

Exercise - Students are encouraged to code the contract and test cases on their own. This will require them to review the code in Calculator.js

At the end of these exercises students are expected to have the *minimal* knowledge that is needed before the student proceeds with the lectures on Solidity in the next section.

Exercise: Using the Truffle Framework
00:18
+
Ethereum smart contract development using Solidity
21 Lectures 02:13:37

Describes the structure and layout of the contract at a high level.

1. Solidity Contract Layout
07:18

Checks student's understanding of the contract layout in the source file

1. Solidity Contract Layout
4 questions

Student will learn about the:

  • Value types in Solidity
  • Variable initialization (checking for nulls)
  • How conversion is handled between different data types
2. Basic data type and conversions
12:04

Checks student's understanding of basic data types and type-conversions

2. Basic data type and conversions
10 questions

EVM manages the data in memory divided into multiple regions. This lecture explain the regions and the keywords used for managing the storage location of the data elements

3. Data location (Keywords:memory, storage)
08:41

Checks student's understanding of the memory, storage and calldata

3. Data location (Keywords: memory, storage)
8 questions

This lectures covers the Solidity arrays

  • Static versus Dynamic arrays
  • Storage versus Memory arrays
4. Arrays
06:08

Checks student's understanding of the Solidity arrays

4. Arrays
5 questions

Coding exercise

Coding Exercise V1 :Basic types, Arrays, Storage location
00:37

Students will learn about 3 new data types:

  • byte
  • bytes & string referred to as special arrays

Although both bytes & string type are byte arrays there are some difference between the two. Those differences are also covered in this lecture.

Preview 12:41

Check's student's knowledge of bytes and string types

5. Special Arrays
17 questions

In this lecture students will learn about how to declare and use Solidity functions.

6. Introduction to functions
09:54

Checks student's understanding of the Soidity functions

6.Introduction to functions
8 questions

Coding exercise

Coding Exercise V2: Create version 2 of betting contract
00:34

Lecturer discusses

  • The global variables and objects available in the EVM contract
  • Throwing exception using the throw keyword
7. Globals variables & functions, exceptions and crypto
14:21

Coding Exercise V3: Global variables
00:33

Checks student's understanding of the global variable & functions, how throw works and crypto functions available in Solidity

7. Globals variables & functions, exceptions and crypto
14 questions

Students will learn how to create and use complex types:

  1. mapping
  2. enum
  3. struct
8. Mappings, Enumerations and Structs
15:51

Checks student's understanding of mappings, enum and struct types


8. Mappings, Enumerations and Structs
14 questions

Coding exercise

Coding Exercise V4: Enum, Mapping & Struct
00:24

In this lecture students will learn how Solidity supports Object Orientation concepts:

  • Overloading
  • Inheritance
  • Polymorphism
9. Object Orientation
08:11

This quiz tests understanding of how Solidity supports OOPs

9. Object Orientation
10 questions

In this lecture students will learn how to use the following keywords to control the visibility of the functions and storage variables:

  • private & public
  • internal & external

Students will also learn about the keyword this and function type variables.

10. Variable and Function visibility
13:32

Student will learn about:

1) Controlling the visibility of the variables/functions using the keywords public/private

2) Keywords internal/external

10. Variable and Function visibility
8 questions

Student will learn how to declare and generate events from the contract.

11. Constants, Fallback functions & Payable
09:25

Checks student's understanding of 

11. Constants, Fallback functions & Payable
10 questions

Coding Exercise V5: Constants and Payables
00:49

Behavior of the functions may be changed using the function modifiers. In this lecture students will learn how to use function modifiers.

12. Function modifiers
05:34

Function modifiers

Coding Exercise V6: Modifiers
00:29

This lecture will show the student how to declare the events and generate events in the contract code.

13. Events
05:55

Checks student's understanding of modifiers & events

13. Function modifiers & Events
6 questions

Coding exercise

Coding Exercise V7: Events
00:12

This is where rubber hits the road :-)

Preview 00:21
+
Contract Design Patterns
9 Lectures 01:03:21

Contracts can self destroy. This self-destruction need is sometime driven by business. This lecture will cover:

  • Lifecycle of a contract
  • Why, How, Implications of self destruction
Contract Self Destruction Pattern
06:39

This lecture describes how Decentralized applications can use the factory contract instance to create other contracts.

Factory Contract Pattern
13:08

Complex Decentralized apps may have dependency on multiple contracts. The Name Registry pattern simplifies the dependency management. In this lecture student will learn about the benefits of using this pattern and see an implementation of this pattern in action.

This pattern can be seen in action here:

http://thedapps.com/DAPP-Registry/


Name Registry Pattern
07:01

Solidity mapping does not allow the access to all keys contained in the mapping as a result there is no out of the box feature to iterate over the values contained in the mapping. This lecture discusses how to implement iterator functionality for mapping.

Mapping Iterator Pattern
04:51

The UserAddressRegistry is not optimized. Student will help the instructor to optimize the code :-)

Exercise: Optimize the Mapping Iterator pattern
00:24

Withdrawal pattern is used for safely sending ethers from the contract code.

Preview 13:11

In this lecture students will learn how to setup a 2 node private blockchain on their local machine.

Setting up a Private Blockchain Network
16:44

This article describes the project that students will be developing as part of the project.

Project #1 Decentralized Bidding Application Contract
00:51

Open Blockchain project - Intent is to let the student decide on the scope, design & implementation

Project #2 Decentralized University Certification Management Application
00:31
About the Instructor
Rajeev Sakhuja
4.5 Average rating
1,037 Reviews
5,399 Students
3 Courses
IT Consultant, IBM Cloud Champion 2017

I am a hands-on Information Technology consultant experienced in large scale applications development, infrastructure management & Strategy development in Fortune 500 companies. Have over 20 years of experience in IT industry. Passionate technologist who likes to learn and teach new technologies. Currently assisting large companies in building cloud strategy and practices.

Proud to announce that recently IBM has recognized me as the "IBM Cloud Champion for 2016-2017". Thanks to all the students for their continuous support and encouragement.