Build a Blockchain & Cryptocurrency | Full-Stack Edition
4.4 (1,047 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
7,424 students enrolled

Build a Blockchain & Cryptocurrency | Full-Stack Edition

Full-stack blockchain programming course! A backend + frontend with Node.js, Jest, Express, React, Heroku, & more!
4.4 (1,047 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
7,424 students enrolled
Created by David Joseph Katz
Last updated 5/2019
English [Auto]
Current price: $139.99 Original price: $199.99 Discount: 30% off
5 hours left at this price!
30-Day Money-Back Guarantee
This course includes
  • 14.5 hours on-demand video
  • 18 articles
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
Training 5 or more people?

Get your team access to 4,000+ top Udemy courses anytime, anywhere.

Try Udemy for Business
What you'll learn
  • Build a complete blockchain-powered cryptocurrency from scratch.
  • Understand and fluently converse on the core software engineering concepts behind blockchain and cryptocurrencies.
  • Create unique blockchain-centric solutions to real work problems and business applications.
  • Build proof-of-work based systems.
  • Create backend Node JS servers, with an express API and full testing suite.
  • Build server-to-server systems with real-time networking capabilities.
  • Build frontend web applications, particularly with React JS.
  • Deploy full-stack projects for wide use by the public.
  • Employ software best practices and coding conventions to write clean, scalable code.
Course content
Expand all 125 lectures 14:46:34
+ Introduction and Getting Started
5 lectures 24:11

Learn the fundamentals of blockchain and cryptocurrency software.

What is the blockchain?

What is a cryptocurrency?

Why should you care about these technologies?

How do they work?

These questions addressed, and more!

Preview 08:25

Code the blockchain in 10 minutes!

Get hands-on experience building a blockchain right away. This will give you skills immediately. And you'll gain an overarching perspective of what features you'll work toward building throughout the course.

Preview 10:51

Required reading for the software installations portion of the course! Make sure to read this thoroughly so you're prepared to be successful throughout the course.

[Required] Course Repository, Software Installation, Tips and Tricks

Read this article to learn about the optional JavaScript within this course's reference section.

[Optional] Mega JavaScript and Node.js Overview
+ Blocks | The Blockchain Backend
9 lectures 01:00:46

Set up the starter code for the overall blockchain application that you'll create in the course!

Preview 04:18

The first step to building a blockchain is the most basic building block of the technology - the block itself! Create the block class in this video.

Preview 07:42

Recreate the block class through test-driven development!

Preview 12:23

Learn how to start off the blockchain application through the genesis block. Create the genesis block through test-driven development.

The Genesis Block | Tests

Implement the code to get the genesis block tests to pass. Remember, you can go with your own solution - as long as the test suite turns green!

The Genesis Block | Code

Add a generic way to create blocks through a mine block function in the block class.

Mine Blocks

Create the all-important cryptographic sha-256 hash function. This will set the hash values in the blocks.

Crypto Hash and SHA-256

Add the hash functionality to the creation of a new block.

Hash in MineBlock

Review this section!

Recap: Blocks | The Blockchain Backend
+ The Chain | the Blockchain Backend
7 lectures 48:35

An overview of the core blockchain class. Now that the block class is present, the blockchain class can be created!

The Blockchain Class

Understand the crucial concepts of chain validation and replacement - necessary aspects in a blockchain application with multiple contributors.

Preview 03:40

Develop chain validation by writing the tests first.

Chain Validation | Tests

Write the code to get the chain validation tests to pass. Again, you can implement your own solution as long as the test suite goes green!

Chain Validation | Code

Develop the chain replacement functionality. This will support the replacement of the blockchain data when chains are submitted by multiple contributors to the application.

Chain Replacement

Remove the extra console output in the test suite!

Stub Console Output in Tests

Review this section!

Recap: The Chain and Proof of Work | the Blockchain Backend
+ Proof of Work | The Blockchain Backend
9 lectures 01:07:15

Learn about the proof of work system, and the 51% attack scenario.

Proof of work ensures that blocks get added at a manageable pace. It also ensures that miners must be invested in adding blocks to the chain. This makes it expensive to hoist the 51% attack on the blockchain. More details in the video!

Proof of Work and the 51% Attack

Add the first bits to proof of work - the difficulty and nonce value - through tests!

Difficulty and the Nonce Value | Tests

Get the difficulty and nonce value tests to pass. It's a great opportunity to try and get the test suite to green yourself!

Difficulty and the Nonce Value | Code

Set an overall mine rate that miners should average around. The growth of the blockchain should be controlled. The mine rate facilitates this!

Dynamic Difficulty and the Mine Rate

Execute the difficulty adjustment and get blocks to converge around a mine rate for the system.

Adjust the Difficulty in MineBlock

Investigate the proof of work system by writing a script that measures mining times.

Improve the Proof of Work System | Average Work Script

Follow up on the average work script and explore the advantages/disadvantages to using hexadecimal vs. binary hashes for the difficulty checks.

Improve the Proof of Work System | Binary hashes

Guard against an attack scenario where someone could arbitrarily change the difficulty value beyond a regular difference of one.

Prevent Difficulty Jumps

Review this section!

Recap: Proof of Work | the Blockchain Backend
+ API and Network | The Blockchain Backend
14 lectures 01:26:38

Gain a picture of how this blockchain application will extend to multiple contributors through an API and network.

Blockchain API and Network Overview

Create the express application that will power the blockchain API.

Setup Express API

Develop a request in the api to mine a block to the main blockchain instance for the application.

Post Request to Mine a Block

Learn how real-time messaging across nodes will occur through a Publish/Subscribe implementation. This has advantages over a socket-tracking system found in many other peer-to-peer networking implementations!

Real-Time Messaging Network through Pub/Sub | Overview

Choose your pub/sub weapon: redis or pubnub.

Redis: more control.

Pubnub: easier configuration.

Pub/Sub Options: Redis or PubNub

Directions to install redis.

Install Redis

Implement the Pub/Sub pattern with a redis backend.

Redis Publisher/Subscriber Class
Install PubNub

Implement the pub/sub pattern using PubNub.

PubNub: a Non-Redis Pub/Sub Alternative

Broadcast blockchain data to all interested parties in the blockchain pub/sub network!

Broadcast Chain

Configure the code to start local peers in the blockchain application. Also consume the broadcastChain() functionality previously developed, so that the blockchain is broadcasted when a block is mined in the API.

Start Peers and Broadcast Chain on API Mine

Ensure that new nodes in the network get the current relevant blockchain data when they connect to the network.

Sync Chain on Connect

Eliminate the redundant interactions found in the current pub/sub implementation.

Avoid Redundant Interactions

Recap this section!

Recap: API and Network | the Blockchain Backend
+ Wallets, Keys, and Transactions | The Cryptocurrency Backend
15 lectures 01:59:05

Start the cryptocurrency portion of the application! Go over the core cryptocurrency objects: wallets, keys, transactions, and more!

Wallets, Keys, and Transactions Overview

In anticipation of the cryptocurrency portion, organize the code base to make additions more easily.

Code Organization

Develop the primary cryptocurrency object - the wallet - through test-driven development.

Create and Test Wallet Class

Add the crucial key pair and public addresses aspect to the cryptocurrency wallets.

Key Pair and Public Key Addresses

Ensure that wallets have the ability to add their signature to objects in the cryptocurrency. Also make sure that signatures can be verified - to validate signed cryptocurrency data.

Sign Data and Verifying Signatures

Build the tests the next core cryptocurrency object - the transaction. Use an outputMap structure to efficiently track multiple recipients/amounts in the transaction.

Transaction Objects and the OutputMap | Tests

Create the code to get the transaction objects tests to pass. If you'd like, take this opportunity to write the code yourself!

Transaction Objects and the OutputMap | Code

Add the next half of the transaction objects - inputs. This will contain information about the sender - address, signature, etc.

Transaction Inputs

Update the utility methods in this project to be more cohesive.

Cohesive Utility

Make sure that transactions are not malformed through validation methods.

Validate Transaction

Tie the two core cryptocurrency objects - wallets and transactions - together. A wallet.createTransaction() method will save time for generating wallet-specific transactions.

Wallet Create Transaction

Take advantage of the outputMap structure to allow updates for the same recipient, and additions for new recipients.

Update Transactions with Multiple Outputs

Why won't the cryptoHash generate unique hashes when an object's properties change.

Improve the CryptoHash

Cover edge cases with updating transactions. Make sure that the input and remaining balance output are accurate.

Transaction Update Edge Cases

Review this section!

Recap: Wallets, Keys, and Transactions | The Cryptocurrency Backend
+ Transaction Pool | The Blockchain and Cryptocurrency Backend
10 lectures 53:59

Gain an understanding of the crucial transaction pool - a data structure which will collect transactions from multiple actors in the cryptocurrency.

Transaction Pool Overview

Create the transaction pool object, along with functionality to set transactions in the structure.

Create the Transaction Pool and Set Transactions

Add a way for transactions to be create-able via the API, and instantiate a main transaction pool for the application.

API Transactions and Main Transaction Pool

Do we want invalid transactions? No!

Handle Invalid Transactions

Make sure that transactions are update-able when the same node conducts a transaction again through the API.

Transaction Updates in the API

Expose the transaction pool map data through the API.

Get Transaction Pool Map

Like the blockchain, the transaction data should be broadcasted to all interested parties (so everyone) in the cryptocurrency!

Broadcast Transaction
Pubnub Set Transaction Edge Case

Make sure that the transaction pool map is also in sync (like the blockchain) with the current application state when a peer connects to the network.

Sync Transaction Pool Map on Connect

Review this section!

Recap: Transaction Pool | the Blockchain Backend
+ Mine Transactions | The Blockchain and Cryptocurrency Backend
19 lectures 02:26:18

Understand the behavior involved with officially mining transactions in the blockchain and cryptocurrency application.

Mine Transactions Overview

Create the transaction miner class, and roadmap the necessary methods for properly mining transactions.

Transaction Miner Class

Add a way to grab the valid transactions from the transaction pool map.

Grab Valid Transactions

Generate rewards for a successful miner who has discovered the answer to the proof of work algorithm for the next block.

Reward Transaction

Clear transactions from the pool that have been included in the blockchain.

Clear Blockchain Transactions

Add a way for transactions to be mined through the API.

Mine Transactions Endpoint

Transactions that have already been included in the blockchain should be cleared once the blockchain is replaced.

Clear Recorded Transactions on Successful Replace

Go over the quite detailed way that wallet balances will be calculated in the cryptocurrency.

Blockchain Balance Overview

Calculate the balance considering transactions in the blockchain history of transactions!

Calculate the Wallet Balance

Ensure that the wallet balance is accurate before each transaction is conducted in the cryptocurrency.

Calculate the Balance before each Transaction

Make sure that wallet balances do not double count transactions. Output amounts should only be added for a wallet balance if the output amount was recorded after that wallet's most recent transaction.

Wallet Balance From Recent Transaction

Expose a way to get the wallet balance and public key through the API.

Wallet-Info Request

Blocks are validated. But the data field needs to follow the rules of the cryptocurrency. Learn the rules we need to enforce in the cryptocurrency!

Validate Transaction Blocks Overview

Add the tests for validating transaction data in blocks. Back to the efficient style of test-driven development!

Valid Transaction Data | Tests

Write the code to validate transaction data! An opportunity to write the code yourself - if you wish!

Valid Transaction Data | Code

Enforce the cryptocurrency rule that input balances should be validated according to the calculated balance against the blockchain history.

Validate Input Balances

Make sure that a block can't have the same transaction twice (a simple but menacing attack).

Prevent Duplicate Transactions in Block

Make sure that the chain of transactions actually get validated in application code through the new validation methods.

Validate Transaction Chain

Review this section!

Recap: Mine Transactions | The Blockchain and Cryptocurrency Backend
+ The Blockchain and Cryptocurrency Backend | Review
1 lecture 12:19

Review what went on while building the blockchain and cryptocurrency backend! This is a particularly helpful video if you plan to jump straight ahead to the frontend portion of the project.

The Blockchain and Cryptocurrency Backend | Review
+ The Frontend Blockchain
14 lectures 01:52:39

Go over the React.js based web application for the frontend blockchain. How will it work, what will you build, and what aspects are involved overall?

The Frontend Blockchain Overview

Get an understanding of the React.js framework if you would like a ramp up!

Optional: React.js Overview

Perhaps not what you were expecting... but frontend step one: make a backend change! Serve a frontend page with the existing express application.

Serve a Frontend Page

Add JavaScript to the frontend along with the html to set up dynamic functionality for the web application!

Add JavaScript to the Frontend

With JavaScript in the frontend, now you can add React!

Build React into the Frontend

Set up an efficient work flow for developing frontend changes.

Frontend Development Workflow

Create the core App component for the frontend blockchain application.

App Component

Go over the crucial fetch method. Use fetch to get the wallet-info from the backend through an HTTP request. Then display that info in the React application!

Fetch and Display Wallet-Info
[Optional] Upgrade to Babel Version 7

Consume the backend /blocks endpoint and visualize the blocks from the backend.

Visualize the Blocks

Speed up the frontend development process by generating a bunch of data in the backend. That way, the frontend always has data to work with, even when the overall application restarts due to live reloads.

Seed the Backend with Data

Time for some style! Any self-respecting web application needs some css and styling.

Stylize the Application

Create a block component and pass down data through props - to take advantage of the existing blocks data in the application.

Make a Block Component with Props

Review this section!

Recap: The Frontend Blockchain
  • Experience with the command line and the essentials of an operating system.
  • Knowledge in at least one programming language.
  • Familiarity with how web development works.

White walkers stalking you in the night? Death eaters knocking down your door?

Well, sounds like you’re looking to build a blockchain and cryptocurrency! Having your own blockchain and cryptocurrency is the number one way to get rid of threats both magical and technical!

Ok, maybe the magic part was a tiny bit exaggerated. But the technical part, not so much! The blockchain has become a magic bullet in the software world throughout the past few years. It’s proven that it has the power to revolutionize economic systems and so much more. It seems to have the power to save us all.

But the blockchain wave has only begun! There is so much untapped potential in the field for high-paying employment, and new exciting companies.

But it all starts with building a blockchain and cryptocurrency? How are you going to do that? Take this course!

Why this course specifically?

This course will teach you how to build your own blockchain and cryptocurrency from scratch. You’ll have your own full-on backend, test suite, frontend and deployment process.

It’s no denying that blockchain based systems have taken the tech and financial worlds by storm. A single bitcoin was worth $20,000 at one point in one 2017. And beyond cryptocurrencies, the potential use cases for the blockchain are truly endless. And yet the blockchain industry is still so young. So many startups waiting to, well, start up!

So it’s time to create your own unique blockchain project. Take this course to gain the foundation to do so. Other courses may teach how the blockchain works, its main concepts, or how to invest in a cryptocurrency. But this is the best resource for you to learn how to make a blockchain from scratch, and apply your own unique ideas on top of that.

In this course, you will:

Build a full on blockchain and cryptocurrency backend. Create and code blockchain objects. Implement the core logic to power the blockchain. Learn the essential concepts behind the powerful ideas of blockchain technology.

Write a full test suite and code in a test-driven manner. You will also have the chance to make your implementation truly unique. If your own code covers the test cases, your blockchain will be both unique and functional.

Create a frontend application. Your project will have a web app that will allow people from all over the world to use your blockchain and cryptocurrency. If you’re a fan of React, you’ll love the frontend part of this course.

Finally, you will deploy the project in a public environment. A lot of coding courses will take you as far as the local application. But only a select few take you to the next level. This is one of those courses. You will take publish your project. And anyone in the world will be able to use it, as long as they know your project’s url.

On top of building a full backend, testing suite, a frontend web app, and deploying the project, there are many other aspects of the course to look forward to:

A deep conceptual understanding backed by practical experience. You will see the big picture of core blockchain and cryptocurrency concepts. And those big picture concepts will be reinforced directly by building related features in code. You will find a balance of theory and practical experience in the course.

You will learn work with many technologies. Node.js, JavaScript, Express, APIs, Publish/Subscribe, React.js - all these technologies will be incorporated in the full-stack project. Don’t worry if you’re a beginner to any. Each keyword/concept will be explained - even the fundamental JavaScript. That being said, this course is best for intermediate students - anyone who knows at least one programming language already!

Software Best Practices. You will follow all the modern best practices of full-stack development. Learn the conventions of Node.js and React, and how to properly structure code and projects. As a practicing software engineer, I’ve applied the same level of care to the project course code as I would to code that I ship every day in my full-time job.


Question(s) you may have:

What is the difference between this course and your original course on building a blockchain and cryptocurrency?

This is a remastered version of that original course. The original course does not have a frontend nor a deployment process. So many students were looking for these aspects from that first course. Well, you’ll find that here!

Plus, the refactored test-driven backend will give you the opportunity to truly create your own version of the project. The first course went with the code and core logic first. Then the tests came after. This approach does not give as much immediate freedom to implement the functions and logic in your own unique way.

Also, a lot of the blockchain logic has been improved, with additional methods and concepts! This version of the project is definitely more secure, more thorough, and more complete.

Can this course help me find employment?

Taking this course will turn you into both a software engineer, and a specialized blockchain engineer. This position is a new one in the software industry. And the demand is high. But the supply is low. So open a ton of doors by becoming an in-demand engineer with a fully deployed blockchain and cryptocurrency on your resume!


Ultimately, this course is a learning experience like no other. It’s an opportunity to become a pioneer in such a young and promising field!

So, are you going to let this golden chance pass you by? Heck no! Join the course, and let’s get starting coding a full-on blockchain and cryptocurrency!

Who this course is for:
  • This course is suited for someone who has experience in at least one programming language. This course moves through coding essentials at a quick pace. Your experience in one other language will definitely help.
  • Perfect for anyone who already knows a bit of JavaScript. This course is 95% JavaScript based, so any JS experience will be extremely useful.
  • This course is not suited for complete beginners to programming. You will find that the course moves too quickly if you’ve never coded before. However, a persistent student may be able to learn coding in this course, if that student is willing to be patient with a lot of supplemental reading and research.