Web Development


Ethereum and Solidity: The Complete Developer's Guide

Use Ethereum, Solidity, and Smart Contracts to build production-ready apps based on the blockchain

4.64 (15163 reviews)


24 hours


Aug 2021

Last Update
Regular Price

What you will learn

Understand the why engineers would want to create an app with Ethereum

Build compelling blockchain applications using the Ethereum Blockchain

Design, test, and deploy secure Smart Contracts

Learn the true purpose and capabilities of Ethereum and Solidity

Use the latest version of Ethereum development tools (Web3 v1.0)

See practical examples to comprehend what the blockchain and mining are


Smart Contracts? They're here.  The Ethereum Blockchain?  Covered.  Solidity?  Yep!

There can be no understating it: Ethereum and Blockchain technology is the most disruptive force in years.  Companies cannot hire developers who understand blockchain technologies fast enough, but there are a tiny number of resources published to help you truly understand what blockchains are used for, let alone build apps with them.  That's the purpose of this course: to be the best resource online for learning about Ethereum, blockchains, and how to build apps with this new technology.

The development community is still figuring out the best way to use Ethereum in the creation of new and exciting apps.  I spent a tremendous amount of time to research and create best practice for interfacing with Ethereum from Javascript.  I can't overstate it enough; this course will show you the best and most easily repeatable patterns for creating production-ready apps with Ethereum.

What tools and libraries are used?

The Ethereum tech ecosystem is in constant change.  Don't be fooled by other courses that mention how you'll learn a dozen different libraries!  Every library that you'll use with Ethereum breaks and is deprecated on a near-weekly basis!  Instead, this course will teach you how to assemble your own boilerplate package to develop, compile, and test Smart Contracts.  By learning the core technologies, you'll be prepared to adjust to Ethereum no matter how the ecosystem changes.

What is Ethereum?

Ethereum is a cryptocurrency much like Bitcoin, and it has been heralded as Bitcoins successor.  Whereas Bitcoin currently has issues scaling with an increasing backlog of transactions, Ethereum is poised to surpass Bitcoin in performance, popularity, and value.  Ethereum was created to help developers like you create applications focused around transferring money or value from one party to another.

What is Solidity?

Solidity is a programming language for writing Smart Contracts.  Essentially, think of it as a way to control a bank account with code.  With Solidity, we can write applications that simulate a crowd funding campaign, a lottery, a loan, or any other type of financial instrument.  Don't be intimidated by learning 'another' programming language; Solidity is known to be quite similar to Javascript and exceptionally easy to pick up for anyone who has previous JS experience.  This course will give you all the tools you need to master Solidity.


Ethereum and Solidity: The Complete Developer's Guide
Ethereum and Solidity: The Complete Developer's Guide
Ethereum and Solidity: The Complete Developer's Guide
Ethereum and Solidity: The Complete Developer's Guide


What is Ethereum?


Link to Completed Code on Github

A Short History Lesson

Link to Original Bitcoin White Paper

What is Ethereum?

Interfacing with Ethereum Networks

Metamask Setup

Ethereum Accounts

Receiving Ether

What's a Transaction?

Why'd We Wait?

A Quick Note

Basic Blockchains

Block Time

Smart Contracts

The Solidity Programming Language

Our First Contract

Quick Note - Remix Deprecation Warnings

Contract Structure

Function Declarations

Testing with Remix

Redeploying Contracts

Behind the Scenes of Deployment

More on Running Functions Than You Want to Know

Wei vs Ether

Gas and Transactions

Mnemonic Phrases

Getting More Ether

Smart Contracts with Solidity

Don't Skip! Node JS Versioning

Contract Deployment

Boilerplate Requirements

Project File Walkthrough

Syntax Highlighters

Solidity "AssertionError [ERR_ASSERTION]: Invalid callback specified" errors

Compiling Solidity

The Compile Script

Testing Architecture

Web3 Install Issues on Windows

Installing Modules

Web3 Versioning

Web3 Providers

Testing with Mocha

Mocha Structure

Fetching Accounts from Ganache

Refactor to Async/Await

Deployment with Web3

Deployed Inbox Overview

Asserting Deployment

Web3 Version Fix

Verifying the Initial Message

Testing Message Updates

Deployment with Infura

Infura Signup

Wallet Provider Setup

Updated Deploy Code

Deployment to Rinkeby

Observing Deployment on Etherscan

Deployed Contracts in Remix

Project Review

Advanced Smart Contracts

The Lottery Contract

Lottery Design

Basic Solidity Types

Starting the Lottery Contract

The Message Global Variable

Overview of Arrays

Overview of Mappings and Structs

Big Solidity Gotcha

Entering the Lottery

Validation with Require Statements

The Remix Debugger

Pseudo Random Number Generator

Selecting a Winner

Sending Ether from Contracts

Resetting Contract State

Requiring Managers

Function Modifiers

Returning Players Array

Contract Review

New Test Setup

Test Project Updates

Test Helper Review

Asserting Deployment

Entering the Lottery

Asserting Multiple Players

Try-Catch Assertions

Testing Function Modifiers

End to End Test

Building Interactive Front-Ends

Ethereum App Architecture

Application Overview

Getting Started with Create-React-App

Multiple Web3 Instances

Web3 Setup

Updated Deploy Code

Deploying the Lottery Contract

Local Contract Instances

Rendering Contract Data

Instance Properties

Accessing More Properties

The 'Enter' Form

Form Setup

Entering the Lottery

Picking a Winner

Project Review

Real Projects with Ethereum

Solving Real Problems with Contracts

Fixing Kickstarter's Issues

Campaign Contract Design

Campaign Constructor

Contributing to the Campaign

A Quick Test

The Request Struct

More on Function Modifiers

Creating Struct Instances

Instance Creation Syntax

Storage and Memory

More on Storage vs Memory

Voting System Requirements

The Wrong Voting System

Issues with Arrays

Mappings vs Arrays

Basics of Mappings

Refactoring to Mappings

Refactoring Request Stucts

More on Struct Initialization

Approving a Request

Testing Request Approvals

Finalizing a Request

Last Remix Test

Thinking about Deployment

Solution to Deployment

Adding a Campaign Factory

Testing the Factory

Ethereum Project Infrastructure

Project Setup

Directory Structure

A Better Compile Script

Single Run Compilation

More on Compile

Test File Setup

Creating Campaign Instances

Testing Warmup

Accessing Mappings

Requiring Minimum Contributinos

Array Getters

One End to End Test


Updated Deploy Code

Refactoring Deployment

Advanced Multi-Page Front-Ends

App Mockups

CRA vs Next

Next's Pages Architecture

Basics of Next Routing

Root Routes

CampaignFactory Instance

Getting a Test Campaign

Fetching Deployed Campaigns

Why Next.js, Anyways?

Server vs Client Web3 Instances

GetInitialProps Function

Semantic UI React

Card Group Setup

Rendering Card Groups

Adding CSS

Adding a Button

The Need for a Layout

The Layout Component

Assembling a Header

Constraining Content Width

Two Column Layout

Nested Routing

Final CSS Fix

Form Creation

Input Change Handlers

Form Submittal

Testing Submittal

Form Error Handling

Button Spinners

Routing Issues

Next Routes Setup

Automatic Navigation

Header Navigation

Routing to Campaigns

Restarting the Server

Route Mappings

Planning CampaignShow

Redeploying CampaignFactory

CampaignShow's GetInitialProps

Accessing a Campaign

Summary Translation Layer

Custom Card Groups

One Card Per Property

The Contribute Form

Grid Layouts

Form State

Communicating the Campaign Address

Making a Contribution

Refreshing Contract Data

Spinners and Error Handlers

Listing Requests

Grids vs Columns

More Routing!

Request Creation Form

Creating a Request

Form Polish

Creating a Request

Requests One by One

Fancy Javascript

Small Typo!

Rendering a Table

Request Row Component

Request Row Content

Approvers Count Cell

Approving a Request

Finalizing Requests

Testing Finalization

Row Status Styling

Finishing Requests Index


Appendix: Basic React

A Note on This Section

Purpose of Boilerplate Projects

Environment Setup

Project Setup


More on JSX

ES6 Import Statements

ReactDOM vs React

Component Instances

Render Targets

Component Structure

Youtube Search API Signup

Export Statements

Class Based Components

Handling User Events

Introduction to State

State Continued

Controlled Components

Breather and Review

Youtube Search Response

Refactoring Functional Components to Class Components


Building Lists with Map

List Item Keys

Video List Items

Detail Component and Template Strings

Handling Null Props

Video Selection

Styling with CSS

Searching for Videos

Throttling Search Term Input

React Wrapup

Vue Flavored Version




Andre6 October 2020

The course and the explanations are really good, perhaps one of the best I`ve seen on that content... However the code used simply doesn`t work anymore. The builds used are unstable and don`t even install properly in some cases, which leads to me using libraries that just won`t work with the code provided during the course. Good course but is in dire need of an update.

Mearaj5 October 2020

It's an amazing course, though slightly outdated but it still deserves five star because it teaches you how to approach. Blockchain technology is always evolving and changes are very frequent. Even if the instructor updates the course, then it will be again outdated within very short duration. Overall, its a very good course and I enjoyed learning. Thank you :)

Parko30 September 2020

Too outdated. I spend more time looking online trying to fix problems that I should have had than actually watching the videos. It isn't worth your time. Try to learn Dapp development elsewhere.

Eddie29 September 2020

So far the course is well laid out. The first few videos do a good job laying the foundation for defining Ethereum. Looking forward to see how this course progresses.

Ayon18 September 2020

You're a boss. I love your courses. I'm taking night classes in finance and CS, and this course is the perfect practical adjunct. If anyone wants to do a deep dive into contracts more broadly to contextualize this class, or understand the blockchain more generally go on youtube and watch: American Contract Law by YaleOpenCourses Bitcoin and Money by MIT OpenCourseWare Financial Markets by YaleOpenCourses

Gulshan17 February 2020

Such a great course available on internet world. I suggest to anyone to take this course who want to learn Solidity/Ethereum project from scratch. Thanks Stephen for such a great course....

Dan10 February 2020

A very solid course. Learned a lot and the instructor is very pedagogic. It could however use some updates. Some things are outdated and problems appear which need to be solved in ways not presented in the course material. This should not deter you from taking the course though. It really is very good.

Williams5 February 2020

the xplanation in course is by far the best i have experience on Udemy if not on online course thanks

Glenn2 February 2020

the course should be kept up to date, or more annotations should be added to inform the user from differences with the current state of Solidity. Everything is changing very fast, this course should keep up this pace of updates

Prajeet1 February 2020

Pretty outdated now! And I see many questions in Q & A section unanswered. We need to use older version of Solidity and Web3.

Rafael1 February 2020

Clarified a bunch of concepts interactively. The best blockchain visualization and demo I've ever seen.

Khushboo27 January 2020

Since we're starting from scratch and that too in an very organized way i'm getting a better understanding about ethereum

Mandayam26 January 2020

Thus far, the presentation has been awesome and the presenter has been doing an awesome job of presenting the material.

Hussain26 January 2020

Stephen is amazing tutor, he is really amazing believe me. I am posting this review after completing the first 2 sections and he has done awesome work till now. He will explain you everything in detail which will not only help you in future learnings in blockchain in fact you can explain someone about each and every terminology of blockchain. I strongly recommend Stephen's course you must take it. Thanks Stephen Again. Peace.

Venkatesh25 January 2020

Excellent course, understanding the basics of blockchain and ethereum was my expection but this course provided me more than that. Thanks to the author and Udemy.


Udemy ID


Course created date


Course Indexed date
Course Submitted by