
Hi guys!
Welcome to my course here on Udemy. First of all, thank you very that you chose this course, it will be a fun journey from this blank piece of paper, or more like blank Python project, to a fully functioning Proof of Stake based Blockchain.
After 10 years of coding I found out that I learn and understand new topics best if I get my hands dirty and practically try things out. That not only helps me with understanding the topic, it is also way more fun.
Therefore I also chose this type of format in this course, brief theory and lots of practice! Nevertheless, there is some theory to cover in this first section to get an understanding on whats going on in the world of cryptography, at least for that small part we are using in order to build our Blockchain.
So, let's not waste any more time and start learning!
Hi guys!
In order to be able to follow the coding videos easily, I suggest to first of all make sure that the Python Environment is correctly set up. Throughout this course, I was using Python 3.7 which I also would recommend you to use.
For the installation on your machine, I suggest downloading and following the installation description provided on: https://www.python.org/downloads/.
After installing Python, the only thing missing before you are ready to start coding is installing the dependencies used throught the course. Therefore use the requirements.txt file I provided, open a terminal window and enter pip install -r requirements.txt. Notice that the requirements.txt file has to be within your terminals current directory.
In this Lecture:
You will learn the difference between single-key and public-key crypto
You will learn the very basic concepts of public-key cryptography with RSA
You will learn what a digital signature is
You will learn what encryption is
You will learn what the SHA-256 algorithm is
Hi guys!
In this section I will provide you with some references to projects which are actively making use of Blockchain technology. The majority of people think Blockchains are always related to financial activities and so did I. In reality though, the potential of Blockchains is far beyond that. If you are interested in some current use cases, take a look at these references.
Have fun!
Here you can find the serialized RSA keys which are used throughout this course.
This Lecture provides you with additional papers and information to the topic of consensus algorithms.
In this theoretical introduction to Transactions we will unveil that Transactions are the most fundamental building block within Blockchain systems.
Furthermore, you will learn about the types of Transactions we will implement and use throughout this course which are the following three types:
Transfer Transaction
Exchange Transaction
Stake Transaction
In this very first coding video we will start with the implementation of the Transaction class.
What we will cover:
Transaction initializer
toJson method for human readable representation
Test Application
Implement a static signature validation method and a helper to export the public key to a string in the world class, then test detecting invalid transactions via signature verification.
Implement a payload method to ensure a consistent transaction representation with an empty signature, then build a wallet create_transaction method to sign and return transactions in one step.
Initialize a block class with transactions, last hash, and a forger fortune placeholder; build a human readable block via a to chasten method and test in main.
Explore the blockchain as an ever-growing list of blocks with hashes, the account model, and the proof-of-stake consensus powering peer-to-peer networks.
Build a blockchain by implementing a block chain class in Python, initialize an empty blocks list, add blocks without validation, and generate a human readable representation, then print the chain.
In the Paper from Chakravarty et al. 'The Extended UTXO Model', the different approaches on keeping track of the accounts balances are discussed. It compares the solution of UTXO's used in Bitcoin to the Account Model used in Ethereum.
Introduce exchange transactions and update the account model by executing transactions in blocks, ensuring exchange occurs in the first block before the transfer in the next.
Implement a socket communication class as a node subclass to enable peer-to-peer connections using a circuit communication object, initialize with IP and port, and start and stop the port.
Explore peer discovery in a p2p network by building a discovery handler, initializing threads for discovery and status, and integrating with a socket communication class to broadcast and track peers.
Finish P2P demonstrates adapting the discovery handler, encoding and decoding handshake messages, and broadcasting discovery messages to build and test a blockchain peer-to-peer network.
Implement a node API class with Flask to expose a REST API for blockchain communication. Create a basic /info endpoint and test it in the browser at localhost.
Extend the socket and node messaging to handle transaction broadcasts, add received transactions to the node's pool, and propagate them over the peer-to-peer network using encoded transaction messages.
The lecture introduces the proof of stake algorithm as a consensus method for untrusted networks, explaining random, stake-proportional selection to determine the next block forger.
Explain how to preserve stability in a proof-of-stake block chain by enabling nodes to request the current block chain state when joining or reconnecting after outages.
Did you ever wonder what's behind the hype around Blockchain? In this practical development guide you will learn why this emerging technology could be a real game changer across industries. With a strong emphasis on learning by doing, we will cover all the necessary modules required for the Blockchain to work. If you prefer practice and deeper understanding to theory and books, this course is just right for you.
About your instructor
Hi, my name is Lukas, I am currently 25 years old and I am studying Mobile Computing and Computer Science in Austria and Sweden. I started my personal journey as developer way back when I was 15 years old and my main main goal since then is to steadily improve my skillset.
After several years in the sector of machine learning, data science and self driving vehicles, I decided to dive deeper in the topic of Blockchains. That's also the reason why I decided to do my Master's Thesis in the field of Consensus Algorithms.
The reason why I decided to share this course here on Udemy is because I really want Blockchain to succeed in the end and I strongly belief that a broader understanding on the topic itself is a major milestone in pushing the technology further, especially in it's acceptance. I would be very happy if I can contribute to this with my course.
What you will learn and implement
Cryptographic Signatures
RSA Public Key Cryptography
SHA-256 Hashes
Transactions - The purpose of Transactions in a Blockchain Systems.
Blocks - The most essential building block.
Blockchains - Whats going on behind the scenes.
P2P Network - How to find and communicate with other Nodes.
REST API - How to make use of your Blockchain System.
Python
P2P Peer Discovery
Socket Communication
REST Endpoints
Threading & Parallelization