Blockchain – Principles and Practices

In this course, you will delve beneath the covers of Blockchain technologies to see how they work. Having an understanding of how this technology operates is essential to understanding platforms like BitCoin and Ethereum or other providers.
Course info
Rating
(119)
Level
Intermediate
Updated
Feb 14, 2018
Duration
2h 41m
Table of contents
Description
Course info
Rating
(119)
Level
Intermediate
Updated
Feb 14, 2018
Duration
2h 41m
Description

Blockchains are probably one of the most highly talked about technologies at the moment as they provide a way to attain digital trust on the Internet. There is so much emphasis on the technology that companies are very keen to learn about Blockchains and adopt them. Venture capitalists are currently diverting a lot of investments into funding Blockchain-based companies. In this course, Blockchain - Principles and Practices, you will explore the fundamental data structures and algorithms used to build a typical Blockchain and build up a working example over the course. First, you will learn how to store single transactions in a block. Second, you will discover how to store multiple transactions in a block using Merkle trees. Next, you will be taught how to make the Blockchain tamper-proof using mining and proof-of-work. Finally, you will learn how nodes on a Blockchain maintain consensus. By the end of this course, you will have the knowledge and tools necessary to build your own Blockchain.

About the author
About the author

Stephen Haunts is an experienced Software Developer and Leader who has worked across multiple business domains including Computer Games, Finance, and Healthcare Retail and Distribution. Stephen has worked in languages ranging from Assembler, various forms of BASIC, to C and C++, and then finding his love of C# and .NET.

More from the author
More courses by Stephen Haunts
Section Introduction Transcripts
Section Introduction Transcripts

Course Overview
Hi everyone. My name is Stephen Haunts, and welcome to my course, Blockchain - Principles and Practices. I am a freelance software developer, trainer, public speaker, and book author with a focus on helping software developers perform their jobs better. Blockchains are probably one of the most highly talked about technologies at the moment, as they provide a way to attain digital trust in an environment that was traditionally very difficult to do so, the internet. There is so much emphasis on the technology that companies are keen to learn about blockchains and how to adopt them, and venture capitalists are currently pouring lots of investment into funding blockchain-based companies. So now is a fantastic time to learn about this technology. In this course, we are going to peer beneath the covers of the technology to see how they work. We are going to look at the data structures involved and the techniques employed to make blockchains immutable and resistant to tampering. This course is suitable for both software developers and architects. During the course, we will build up a working blockchain example that is written in C#,. NET Standard 2. 0 or greater, and. NET Core 2. 0 or greater. If you are not a software developer, then this course is still ideal, as the theory sections will contain all you need to understand this technology. The source code demos reinforce the theory for developers. Some of the major topics that we will include are how to add single and multiple transactions to a block, how the blocks are linked together, using proof-of-work to avoid block tampering, and how blockchain nodes maintain consensus. By the end of this course, you will know how a blockchain works and operates from a theoretical point of view. If you are a software developer, you will have a working software program that you can step through to reinforce your learning. Before beginning the course, you should be familiar with basic C# if you are a software developer. All the sample code in this course will work on Visual Studio for Windows, Visual Studio for Mac, Visual Studio Code, and the new JetBrains Rider IDE. I hope you will join me, Stephen Haunts, on this journey to learn about blockchain technology with the Blockchain - Principles and Practices course, at Pluralsight.

Understanding the Cryptographic Principles Used with Blockchain
Hi. My name is Stephen Haunts, and welcome back to my course, Blockchain - Principles and Practices, here at Pluralsight. In this module, we're going to take a closer look at some of the cryptographic primitives you will need to build out a blockchain data structure. We're going to look at hashing, authenticated hashing, and digital signatures. These don't represent all the cryptographic primitives available in. NET, but they are the ones we need for blockchain. Cryptography is a fascinating subject, and if you want to understand this subject even further, then I recommend my Pluralsight course called Practical Cryptography in. NET. This course will go into a lot of depth about all of the cryptographic primitives available in. NET and how to use them all together. If you want understand more about how encryption key management works, which we'll touch on later in this course, then I recommend another of my courses called Play by Play: Enterprise Data Encryption in Azure Revealed. In this course, I explain how to use the Microsoft Azure Key Vault to protect your encryption keys. Let us start off by looking at what hashing is.

Applying Proof of Work
Hi, my name is Stephen Haunts, and welcome back to my course, Blockchain Principles and Practices. In the last module, we built up a working blockchain example that allows us to have multiple transactions per block. I did identify a problem with this, that if someone was to modify a transaction in the block, it would be quite easy to recalculate all of the block hashes for the chain. This ruins the point of us having an immutable ledger, as we can in fact go and change data in the blockchain. It's just inefficient to do so. So in this module, we are going to add to our blockchain implementation by making it immutable, we're going to do this using a technique called proof of work. This is a mathematical solution making it infeasible to recalculate the blocks once they are committed into the blockchain. First, though, we are going to look at a problem called the Byzantines Generals' Problem. So without further ado, let's look at how to make the blockchain more immutable.

Maintaining Consensus
Hi, my name is Stephen Haunts, and welcome back to my course, Blockchain Principles and Practices. Earlier in the course, we upgraded our blockchain sample application to our proof of work, which enables our blockchain to be immutable. By this we mean that once a block has been confirmed, it's computationally infeasible to change the data in the blockchain. What I want to do in this module is talk a little bit about how the blockchain maintains consensus. During the course, we talked about how a public blockchain like bitcoin or Ethereum each has many nodes on the network with their own copies of the blockchain that they can verify. Those nodes are responsible for trying to create blocks with multiple transactions. Each of these nodes competes to solve the proof of work hashing puzzle, and when a node does solve it, it has to let all the other nodes on the network be aware, so that they can add the blocks to their own blockchain. This means that each node is responsible for maintaining itself by some new blocks that it receives. So the goal here is to try and maintain the single, unambiguous chain of transactions across all of the nodes in the blockchain network. The act of trying to maintain the same blockchain independently is what we refer to as keeping consensus. Let's now dive in and look at what is posed as a challenge.

Course Summary
Hi, my name is Stephen Haunts. Congratulations, you have now reached the end of this course, Blockchain Principles and Practices. In this module, I'm going to summarize what we have learned in this course. Then I will end with some additional resources you can turn to for more information. The main aim of this course is to teach architects and developers about the theory of how a blockchain works. I believe it is important for technical people to have good grasp of the technology and how it works under the covers. This could be because you want to implement your own blockchain solution. Or it could be that you're going to implement a third party solution like Ethereum, but just want a good theoretical background of how technologies work first. If either of these were the case, then this course is for you. Let's start our summary.