
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!
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.
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.
Read this article to learn about the optional JavaScript within this course's reference section.
Use the following reference in case you get stuck on a lecture. This is a commit-by-lecture breakdown of the section:
* https://github.com/15Dkatz/cryptochain_commits#section-2-blocks--the-blockchain-backend
Enjoy coding!
Set up the starter code for the overall blockchain application that you'll create in the course!
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.
Recreate the block class through test-driven development!
Learn how to start off the blockchain application through the genesis block. Create the genesis block through test-driven development.
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!
Add a generic way to create blocks through a mine block function in the block class.
Create the all-important cryptographic sha-256 hash function. This will set the hash values in the blocks.
Add the hash functionality to the creation of a new block.
Review this section!
An overview of the core blockchain class. Now that the block class is present, the blockchain class can be created!
Understand the crucial concepts of chain validation and replacement - necessary aspects in a blockchain application with multiple contributors.
Develop chain validation by writing the tests first.
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!
Develop the chain replacement functionality. This will support the replacement of the blockchain data when chains are submitted by multiple contributors to the application.
Remove the extra console output in the test suite!
Review this section!
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!
Add the first bits to proof of work - the difficulty and nonce value - through 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!
Set an overall mine rate that miners should average around. The growth of the blockchain should be controlled. The mine rate facilitates this!
Execute the difficulty adjustment and get blocks to converge around a mine rate for the system.
Investigate the proof of work system by writing a script that measures mining times.
Follow up on the average work script and explore the advantages/disadvantages to using hexadecimal vs. binary hashes for the difficulty checks.
Guard against an attack scenario where someone could arbitrarily change the difficulty value beyond a regular difference of one.
Review this section!
Gain a picture of how this blockchain application will extend to multiple contributors through an API and network.
Create the express application that will power the blockchain API.
Develop a request in the api to mine a block to the main blockchain instance for the application.
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!
Choose your pub/sub weapon: redis or pubnub.
Redis: more control.
Pubnub: easier configuration.
Directions to install redis.
Implement the Pub/Sub pattern with a redis backend.
Implement the pub/sub pattern using PubNub.
Broadcast blockchain data to all interested parties in the blockchain pub/sub network!
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.
Ensure that new nodes in the network get the current relevant blockchain data when they connect to the network.
Eliminate the redundant interactions found in the current pub/sub implementation.
Recap this section!
Start the cryptocurrency portion of the application! Go over the core cryptocurrency objects: wallets, keys, transactions, and more!
In anticipation of the cryptocurrency portion, organize the code base to make additions more easily.
Develop the primary cryptocurrency object - the wallet - through test-driven development.
Add the crucial key pair and public addresses aspect to the cryptocurrency wallets.
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.
Build the tests the next core cryptocurrency object - the transaction. Use an outputMap structure to efficiently track multiple recipients/amounts in the transaction.
Create the code to get the transaction objects tests to pass. If you'd like, take this opportunity to write the code yourself!
Add the next half of the transaction objects - inputs. This will contain information about the sender - address, signature, etc.
Update the utility methods in this project to be more cohesive.
Make sure that transactions are not malformed through validation methods.
Tie the two core cryptocurrency objects - wallets and transactions - together. A wallet.createTransaction() method will save time for generating wallet-specific transactions.
Take advantage of the outputMap structure to allow updates for the same recipient, and additions for new recipients.
Why won't the cryptoHash generate unique hashes when an object's properties change.
Cover edge cases with updating transactions. Make sure that the input and remaining balance output are accurate.
Review this section!
Gain an understanding of the crucial transaction pool - a data structure which will collect transactions from multiple actors in the cryptocurrency.
Create the transaction pool object, along with functionality to set transactions in the structure.
Add a way for transactions to be create-able via the API, and instantiate a main transaction pool for the application.
Do we want invalid transactions? No!
Make sure that transactions are update-able when the same node conducts a transaction again through the API.
Expose the transaction pool map data through the API.
Like the blockchain, the transaction data should be broadcasted to all interested parties (so everyone) in the cryptocurrency!
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.
Review this section!
Understand the behavior involved with officially mining transactions in the blockchain and cryptocurrency application.
Create the transaction miner class, and roadmap the necessary methods for properly mining transactions.
Add a way to grab the valid transactions from the transaction pool map.
Generate rewards for a successful miner who has discovered the answer to the proof of work algorithm for the next block.
Clear transactions from the pool that have been included in the blockchain.
Add a way for transactions to be mined through the API.
Transactions that have already been included in the blockchain should be cleared once the blockchain is replaced.
Go over the quite detailed way that wallet balances will be calculated in the cryptocurrency.
Calculate the balance considering transactions in the blockchain history of transactions!
Ensure that the wallet balance is accurate before each transaction is conducted in the cryptocurrency.
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.
Expose a way to get the wallet balance and public key through the API.
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!
Add the tests for validating transaction data in blocks. Back to the efficient style of test-driven development!
Write the code to validate transaction data! An opportunity to write the code yourself - if you wish!
Enforce the cryptocurrency rule that input balances should be validated according to the calculated balance against the blockchain history.
Make sure that a block can't have the same transaction twice (a simple but menacing attack).
Make sure that the chain of transactions actually get validated in application code through the new validation methods.
Review this section!
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.
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?
Get an understanding of the React.js framework if you would like a ramp up!
Perhaps not what you were expecting... but frontend step one: make a backend change! Serve a frontend page with the existing express application.
Add JavaScript to the frontend along with the html to set up dynamic functionality for the web application!
With JavaScript in the frontend, now you can add React!
Set up an efficient work flow for developing frontend changes.
Create the core App component for the frontend blockchain application.
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!
Consume the backend /blocks endpoint and visualize the blocks from the backend.
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.
Time for some style! Any self-respecting web application needs some css and styling.
Create a block component and pass down data through props - to take advantage of the existing blocks data in the application.
Review this section!
Code the Future: Build a Full Blockchain and Cryptocurrency From Scratch
This course isn’t just about learning what blockchain is - it’s about building one.
You’ll code a complete, production-style blockchain and cryptocurrency system: a Node backend, a React JS frontend, and a real deployment pipeline - all guided by professional engineering principles.
Whether you’re an individual developer or part of a company designing a technical learning curriculum, this course offers a proven, hands-on way to teach blockchain fundamentals through real full-stack software development.
Why This Course
The blockchain industry has matured - but developer education often hasn’t. Too many tutorials stop at the “theory” stage. This course goes far beyond that.
You’ll build every layer yourself:
A blockchain with mining, validation, and proof of work.
A cryptocurrency with wallets, signatures, and transaction pools.
A distributed API network using Pub/Sub.
A React JS application that interacts with your blockchain in real time.
A full deployment to a live environment.
And you’ll do all of this with clean code, TDD, and professional full-stack structure - the same standards I use in my own work as a software engineer.
What Students Are Saying
“Highly recommendable course for blockchain beginners. You can experience every aspect of blockchain mechanism with hands-on coding projects.”
“As a fellow instructor, this course has given me something to live up to. Just incredible. HIGHLY HIGHLY RECOMMEND.”
“I am a beginner in programming. But I found David to be a prolific teacher. I cannot believe he is releasing this quality material for such an affordable price. Dude thank you so much! You are the best teacher I’ve ever had!”
“The instructor has put a lot of effort to explain every operation in very detail. This course is very helpful for me to understand how React works in web browser. Thank you.”
“Perfect! This course is a must-have for a junior developer.”
Who This Course Is For
Engineering teams and training programs looking to teach blockchain principles through practical, modern JavaScript development.
Developers who want to move beyond tutorials and build a complete, functioning blockchain system.
Intermediate programmers familiar with at least one language who want to learn Node JS, Express, and React in a serious project context.
Software engineers exploring distributed systems and full-stack architecture.
Curious learners who want to deeply understand how cryptocurrencies like Bitcoin actually work-by coding one from scratch.
Why Teams Choose This Course
Engineering teams and corporate training programs choose this course because it delivers a comprehensive, project-based learning experience. It delivers a balance of theory, code, and software best practices. It delivers a final deployed product that can be reviewed and demonstrated. And it delivers a repeatable learning path that works for both solo developers and teams.
It’s a single resource that unites backend, frontend, and blockchain principles into one cohesive curriculum.
A Real Learning Journey
Every section is designed to combine deep conceptual understanding with hands-on application:
The Blockchain Backend – build blocks, hashing, and validation.
Proof of Work & Mining – implement difficulty control and understand the 51% attack.
Networking – connect peers, sync chains, and handle live updates with Pub/Sub.
Cryptocurrency Features – wallets, signatures, balances, and mining rewards.
Frontend Blockchain – a React-based explorer and dashboard.
Frontend Cryptocurrency – conduct transactions and mine them from your browser.
Deploy to Production – share your project with the world, fully live.
Professional Software Standards
As a practicing full-stack developer, I’ve brought the same level of care to this project that I do to the code I ship every day. You’ll follow modern engineering practices:
Test-driven development (TDD) with Jest.
Clean code and folder structure used in production Node JS systems.
Express API design for RESTful services.
Reusable React components built with clarity and purpose.
Deployment best practices used by professional engineers.
Course Outcomes
By the end of this course, you’ll have your own blockchain and cryptocurrency live online. You'll understand blockchain theory and engineering fundamentals. You'll be able to explain distributed ledgers, proof of work, and cryptography. You'll write full-stack JavaScript confidently with Node and React. And you will build and deploy complex web applications with professional discipline.
What You’ll Build and Learn
You’ll start with the backend, building a blockchain step by step:
Design and code blocks, chains, and hash functions.
Implement proof of work and difficulty adjustment.
Add consensus, chain validation, and network synchronization.
Extend the system into a cryptocurrency with real wallet addresses and transactions.
Use Pub/Sub to power a peer-to-peer blockchain network].
Then, you’ll move to the frontend, where you’ll:
Build a React JS application and frontend to visualize the blockchain, transactions, and balances.
Create a user-friendly wallet dashboard.
Mine transactions and interact with your network in real time.
Finally, you’ll deploy your blockchain so anyone in the world can access and use it.
Why Learn From Me
I’m a full-stack software engineer, and I’ve released more than 17 courses on software development, taken by over 320,000 students worldwide. My mission is to help developers learn modern technology in a structured, motivating, and professional way.
In this course, I’ve brought together my background in software engineering and education to give you the kind of hands-on, conceptual, and complete learning experience that’s rare in online training.
Your Blockchain Journey Starts Here
By the end of this course, you won’t just understand blockchain - you’ll have built one. You’ll have a deployed cryptocurrency system that demonstrates the concepts powering real-world decentralized technologies.
If you’re curating content for your engineering team or investing in your own technical growth, this is a flagship full-stack course built for lasting impact.
Join today, and start building the technology behind tomorrow’s software!