Build Blockchain Full Stack

Full-stack blockchain programming course! A backend + frontend with Node.js, Jest, Express, React, Heroku, & more!

Last updated 2022-01-10 | 4.7

- 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.

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.

* Requirements

* 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.

Description

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.

Course content

14 sections • 125 lectures

Why this course? (Course Promo) Preview 02:36

The Blockchain and Cryptocurrencies - What, Why, and How Preview 08:25

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 | Lightning Version Preview 10:51

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] Course Repository, Software Installation, Tips and Tricks Preview 01:45

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.

[Optional] Mega JavaScript and Node.js Overview Preview 00:34

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

Set Up the Blockchain Application Preview 04:18

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

Create the Block Class Preview 07:42

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.

Create the Block Class | TDD Style Preview 12:23

Recreate the block class through test-driven development!

The Genesis Block | Tests Preview 08:21

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

The Genesis Block | Code Preview 03:48

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!

Mine Blocks Preview 07:29

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

Crypto Hash and SHA-256 Preview 12:26

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

Hash in MineBlock Preview 03:32

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

Recap: Blocks | The Blockchain Backend Preview 00:47

Review this section!

The Blockchain Class Preview 08:48

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

Chain Validation and Replacement Overview | Free Preview Preview 03:40

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

Chain Validation | Tests Preview 10:36

Develop chain validation by writing the tests first.

Chain Validation | Code Preview 07:44

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 Replacement Preview 12:16

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

Stub Console Output in Tests Preview 04:58

Remove the extra console output in the test suite!

Recap: The Chain and Proof of Work | the Blockchain Backend Preview 00:33

Review this section!

Proof of Work and the 51% Attack Preview 09:13

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!

Difficulty and the Nonce Value | Tests Preview 04:52

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

Difficulty and the Nonce Value | Code Preview 08:16

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

Dynamic Difficulty and the Mine Rate Preview 09:53

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

Adjust the Difficulty in MineBlock Preview 06:38

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

Improve the Proof of Work System | Average Work Script Preview 11:26

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

Improve the Proof of Work System | Binary hashes Preview 08:21

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

Prevent Difficulty Jumps Preview 07:48

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

Recap: Proof of Work | the Blockchain Backend Preview 00:49

Review this section!

Blockchain API and Network Overview Preview 02:45

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

Setup Express API Preview 09:06

Create the express application that will power the blockchain API.

Post Request to Mine a Block Preview 09:46

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

Real-Time Messaging Network through Pub/Sub | Overview Preview 04:27

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!

Pub/Sub Options: Redis or PubNub Preview 01:17

Choose your pub/sub weapon: redis or pubnub.

Redis: more control.

Pubnub: easier configuration.

Install Redis Preview 00:29

Directions to install redis.

Redis Publisher/Subscriber Class Preview 10:57

Implement the Pub/Sub pattern with a redis backend.

Install PubNub Preview 00:14

PubNub: a Non-Redis Pub/Sub Alternative Preview 13:10

Implement the pub/sub pattern using PubNub.

Broadcast Chain Preview 10:47

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

Start Peers and Broadcast Chain on API Mine Preview 08:52

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.

Sync Chain on Connect Preview 07:59

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

Avoid Redundant Interactions Preview 05:57

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

Recap: API and Network | the Blockchain Backend Preview 00:52

Recap this section!

Wallets, Keys, and Transactions Overview Preview 06:56

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

Code Organization Preview 06:38

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

Create and Test Wallet Class Preview 07:18

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

Key Pair and Public Key Addresses Preview 08:32

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

Sign Data and Verifying Signatures Preview 10:20

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.

Transaction Objects and the OutputMap | Tests Preview 07:57

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 | Code Preview 05:42

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

Transaction Inputs Preview 08:44

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

Cohesive Utility Preview 02:32

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

Validate Transaction Preview 11:14

Make sure that transactions are not malformed through validation methods.

Wallet Create Transaction Preview 11:35

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

Update Transactions with Multiple Outputs Preview 11:35

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

Improve the CryptoHash Preview 09:29

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

Transaction Update Edge Cases Preview 09:46

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

Recap: Wallets, Keys, and Transactions | The Cryptocurrency Backend Preview 00:47

Review this section!

Transaction Pool Overview Preview 02:14

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 and Set Transactions Preview 08:38

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

API Transactions and Main Transaction Pool Preview 08:08

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

Handle Invalid Transactions Preview 04:47

Do we want invalid transactions? No!

Transaction Updates in the API Preview 09:21

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

Get Transaction Pool Map Preview 03:35

Expose the transaction pool map data through the API.

Broadcast Transaction Preview 09:29

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

Pubnub Set Transaction Edge Case Preview 01:01

Sync Transaction Pool Map on Connect Preview 05:58

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.

Recap: Transaction Pool | the Blockchain Backend Preview 00:48

Review this section!

Mine Transactions Overview Preview 04:16

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

Transaction Miner Class Preview 04:11

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

Grab Valid Transactions Preview 09:39

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

Reward Transaction Preview 10:56

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

Clear Blockchain Transactions Preview 10:45

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

Mine Transactions Endpoint Preview 08:23

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

Clear Recorded Transactions on Successful Replace Preview 06:14

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

Blockchain Balance Overview Preview 03:41

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

Calculate the Wallet Balance Preview 12:27

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

Calculate the Balance before each Transaction Preview 07:27

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

Wallet Balance From Recent Transaction Preview 13:29

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-Info Request Preview 05:09

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

Validate Transaction Blocks Overview Preview 03:20

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!

Valid Transaction Data | Tests Preview 10:20

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

Valid Transaction Data | Code Preview 12:30

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

Validate Input Balances Preview 08:57

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

Prevent Duplicate Transactions in Block Preview 04:38

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

Validate Transaction Chain Preview 08:54

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

Recap: Mine Transactions | The Blockchain and Cryptocurrency Backend Preview 01:04

Review this section!

The Blockchain and Cryptocurrency Backend | Review Preview 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 Frontend Blockchain Overview Preview 03:58

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?

Optional: React.js Overview Preview 09:12

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

Serve a Frontend Page Preview 08:38

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 Preview 04:59

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

Build React into the Frontend Preview 12:37

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

Frontend Development Workflow Preview 08:21

Set up an efficient work flow for developing frontend changes.

App Component Preview 05:50

Create the core App component for the frontend blockchain application.

Fetch and Display Wallet-Info Preview 15:55

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!

[Optional] Upgrade to Babel Version 7 Preview 00:48

Visualize the Blocks Preview 10:22

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

Seed the Backend with Data Preview 08:41

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.

Stylize the Application Preview 14:03

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

Make a Block Component with Props Preview 08:24

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

Recap: The Frontend Blockchain Preview 00:50

Review this section!

The Frontend Cryptocurrency Overview Preview 01:55

With the frontend blockchain built, now it's time to add the frontend cryptocurrency!

Toggle Transaction Displays Preview 10:50

Toggle the transaction displays between a truncated view, to an expanded view.

Transaction Component Preview 10:45

Create a far superior way of displaying the transaction data through a full-on Transaction component.

React Router Preview 11:55

Add single-page routing to the application through React-router.

Conduct Transaction Component Preview 10:05

Add a way to specify a transaction request through a new form in the application.

Post Transaction with Component Preview 05:36

Conduct the transaction POST request from the React application!

Transaction Pool Component Preview 10:25

Start to visualize the transaction pool data with a TransactionPool component.

Poll the Transaction Pool Preview 10:11

Keep the transaction pool up to date by implementing polling logic!

Mine a Block of Transactions through the Frontend Preview 05:27

Add a way to mine the transactions directly through the frontend.

Recap: The Frontend Cryptocurrency Preview 00:46

Review this section!

Prepare for production and Publish to Heroku Preview 12:44

Deploy the overall project to heroku! This is based on the redis implementation. For PubNub users, ignore the redis portion, but continue with the other steps as normal.

Start Production Peers Preview 05:06

Start peers for the overall application and network in production!

Known Addresses | Backend Preview 03:54

Add a way to find the known address who have conducted transactions in the blockchain history.

Known Addresses | Frontend Preview 03:45

Display the known addresses in the blockchain and cryptocurrency frontend React.js web application.

Blocks Pagination | Backend Preview 08:46

Introduce paginated requests of the blocks endpoint to set up this blockchain application to scale.

Blocks Pagination | Frontend Preview 11:51

Consume the new paginated blocks endpoints in order to allow the user to efficiently explore many blocks through the frontend.

Recap: Deploying to Production and Backend-Included Improvements Preview 00:38

Review this section!

Optional: Mega JavaScript & Node.js Overview for JS Newcomers | Part 1 Preview 16:26

Watch this video if you want a ramp up on the core JavaScript concepts that are required to understand for this course.

Optional: Mega JavaScript & Node.js Overview for JS Newcomers | Part 2 Preview 09:47

Continued. Watch this video if you want a ramp up on the core JavaScript concepts that are required to understand for this course.

Congratulations! And Final Remarks Preview 01:13

Woohoo! Excellent work! Nice job on completing the overall application.

Challenges List | Article Preview 02:01

Here are a list of challenges if you just can't get enough of coding this blockchain and cryptocurrency application!

Bonus Lecture: More Content! Preview 00:37

Bonus bonus! More content to explore!