Build a Blockchain and Cryptocurrency from Scratch [1/2] | David Katz | Skillshare

Build a Blockchain and Cryptocurrency from Scratch [1/2]

David Katz, Software Engineer - Coding Instructor

Play Speed
  • 0.5x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 2x
31 Videos (3h 6m)
    • Course Overview and Roadmap

      3:22
    • What is the Blockchain and Why Use it?

      7:11
    • The Blockchain in Practice: Cryptocurrencies and Cryptography

      4:38
    • The Blockchain in Practice: Mining and Bitcoin

      5:48
    • Roadmap to Building the Blockchain: Guided by the Bitcoin Whitepaper

      5:56
    • Set Up the Blockchain Application

      2:13
    • Create the Block

      10:01
    • Genesis Block

      4:24
    • Mine Blocks

      4:21
    • SHA256 Hash Function

      6:30
    • Test the Block

      10:24
    • Build the Blockchain Class

      4:46
    • Test the Blockchain

      5:25
    • Multiple Chain Validation

      3:13
    • Chain Validation

      6:16
    • Test Chain Validation

      5:18
    • Replace the Chain

      3:54
    • Test Chain Replacement

      4:26
    • Organize the Project

      2:37
    • Blockchain API - Get Blocks

      8:54
    • Mine Blocks Post Request

      5:53
    • Peer to Peer Server

      2:48
    • Create the WebSocket Server

      8:04
    • Connect to Blockchain Peers

      7:07
    • Handle Messages from Peers

      7:13
    • Synchronize the Blockchain across Peers

      8:02
    • Proof of Work and the 51% Attack

      5:49
    • Proof of Work and the Nonce

      6:32
    • Test the Nonce Functionality

      6:40
    • Dynamic Block Difficulty

      9:29
    • Test Difficulty Adjustment

      8:24

About This Class

This class will get you to build a blockchain and cryptocurrency from scratch.

The blockchain is a revolutionary technology that allows for the secure, distributed, decentralized storage of information. Over the past few years, the blockchain has taken the engineering landscape by storm. Many people in the industry predict that the blockchain will disrupt the ways we interact with technology on the same way the Internet did in the early 2000s.

The blockchain is the main technology behind Bitcoin, Ethereum, and the other prominent cryptocurrencies that we read about in the news today. By leveraging the blockchain, cryptocurrencies create a system of “trustless”ness. This cuts the need for middle men like banks and traders in economic systems.

Do you want to enter this young market, and become a highly sought-after blockchain engineer? The industry is starving for people who understand, and even better, can build blockchains. The supply is low, but the demand is high. So having a blockchain project under your belt will open doors and jobs for you.

For engineers, coders, and software developers, the best way to truly understand the revolutionary technologies of blockchain and cryptocurrencies, is to build a blockchain and cryptocurrency yourself. Therefore, this class will take you through implementing a blockchain and cryptocurrency - discovering the underlying techniques and concepts.

The class is designed into sections that introduce the main concepts of the blockchain one-by-one. By the end of the class, you will have a respectable blockchain project in your repertoire.

Some of the main class highlights:

  • Build a Blockchain in the object-oriented programming style.
  • Generate hashes for blocks in the chain.
  • Unit Test Components of the Blockchain.
  • Create an API around the Blockchain.
  • Create a real-time connected peer-to-peer server.
  • Implement a proof-of-work algorithm.
  • Sign Transactions with cryptography and digital signature.
  • Create a Transaction Pool for a real-time list of incoming data.
  • Include transactions in core blocks of the chain.

We’ll use NodeJS to implement this project. Don’t worry if you’re not familiar with JavaScript. This class explains the purpose behind every line and keyword. So, while JS experience will help, it’s not an absolute requirement.

Written summaries supplement each tutorial. That way, you can move along at your own pace, either watching the more thorough filmed tutorial, or reading the summary.

Ultimately, knowledge of the Blockchain will set you up for success in the future, as an engineer in a blockchain-dominated world. So what are you waiting for? Let’s get started building a blockchain!

**********

 

In-Course information

 

Course Repository:

The completed code for this course can be found here: https://github.com/15Dkatz/sf-chain-guides.

Use this repository as a reference to help you find bugs in your code.

Software Requirements:

  1. You will need a command line application. For MacOS and Linux, I recommend the native Terminal application. Iterm2 is also a good option on MacOS. For Windows, I recommend using the Git Bash shell application.
  2. You will need a code editor. Use whatever you're already comfortable with. But if you're looking for one, I recommend Visual Studio Code (it's the code editor used in the course). I also suggest configuring the editor to be launchable from the command line. Do so by pressing "CMD-Shift-P", and typing in "Shell." An option for "Shell Command: Install 'code' command in PATH" should appear. Select it, and re-start your command line and Visual Studio Code.

Course Requirements:

We will use NodeJS as the engine to run our JavaScript-based project. Make sure you have Node installed on your system. Here is the installation link: https://nodejs.org/en/download/. You’ll need to download the appropriate installer for your system, and go through the installation process.

With Node installed, you should get responses similar to this on the command line:

$ node -v

v8.8.1 (or newer)

$ npm -v

5.4.2 (or newer)



We’ll also use a tool called Postman. This app will allow us to send custom HTTP Requests to our running blockchain servers. Here is the link to install Postman: https://www.getpostman.com/docs/postman/launching_postman/installation_and_updates

95

Students

--

Projects

  • --
  • Beginner
  • Intermediate
  • Advanced
  • All Levels
  • Beg/Int
  • Int/Adv

Level

Community Generated

The level is determined by a majority opinion of students who have reviewed this class. The teacher's recommendation is shown until at least 5 student responses are collected.

David Katz

Software Engineer - Coding Instructor

Hello! I'm David - a native San Franciscan and biracial American. I currently study CS at the University of San Francisco.

I'm a self-taught full-stack developer with hopes to become a software engineer. In my spare time, I make apps and coding tutorials.

I've used technologies like ReactJS, React Native, NodeJS, and plenty more to build my applications.

Because the programming community has given me so much, I spend a lot of time teaching.

At MVCodeClub, I help ki...

See full profile

Report class