Урок 1.00:01:52
Introduction
Урок 2.00:05:08
What is Python?
Урок 3.00:03:12
Setting Up Python
Урок 4.00:05:06
Writing our First Python Code
Урок 5.00:06:49
What is the Blockchain?
Урок 6.00:04:42
Course Outline
Урок 7.00:03:59
Python Alternatives
Урок 8.00:02:23
Understanding the Python Versions
Урок 9.00:03:29
How To Get The Most Out Of This Course
Урок 10.00:02:17
Module Introduction
Урок 11.00:04:26
Understanding the REPL and Data Types
Урок 12.00:04:47
Working with Variables
Урок 13.00:05:37
Working with Numbers
Урок 14.00:03:49
Using Operators
Урок 15.00:03:36
Understanding a "Special" Behaviour when Working with Numbers
Урок 16.00:02:19
Working with Strings
Урок 17.00:05:10
Working with Lists
Урок 18.00:03:03
Adding & Removing List Items
Урок 19.00:02:03
Preparing the Blockchain - The Theory
Урок 20.00:05:18
Installing our IDE
Урок 21.00:06:46
Using Functions to Add List Items
Урок 22.00:03:25
Accessing the Last List Item
Урок 23.00:02:37
Adding Arguments to Functions
Урок 24.00:03:58
Understanding the "return" Keyword
Урок 25.00:04:07
Using Default Arguments
Урок 26.00:03:00
Working with Keyword Arguments
Урок 27.00:03:01
Using the "input" Function
Урок 28.00:02:08
Avoiding Repetitive Code Execution
Урок 29.00:06:50
Understanding the Variable Scope
Урок 30.00:02:26
Exploring the Official Documentation
Урок 31.00:04:21
Adding Comments and Doc Strings
Урок 32.00:01:57
Structuring Multi Line Code in Python
Урок 33.00:03:29
Wrap Up
Урок 34.00:01:39
Module Introduction
Урок 35.00:02:56
Understanding Loops - Theory
Урок 36.00:03:03
Creating a "for" Loop
Урок 37.00:03:34
Creating a "while" Loop
Урок 38.00:02:02
Understanding Conditionals - Theory
Урок 39.00:07:46
Adding "if-else" to our Blockchain
Урок 40.00:03:44
Working with "elif"
Урок 41.00:03:32
Understanding "break" & "continue"
Урок 42.00:06:40
Improving our Code with Loops & Conditionals
Урок 43.00:03:38
Understanding Boolean Operators - "is" & "in"
Урок 44.00:01:18
The "not" Keyword
Урок 45.00:02:27
Understanding "and" and "or"
Урок 46.00:03:23
Grouping Conditionals
Урок 47.00:00:42
What About "switch" in Python?
Урок 48.00:13:11
Verifying our Blockchain
Урок 49.00:01:57
Using Conditions inside the "while" Loop
Урок 50.00:02:08
Using "else" in Loops
Урок 51.00:07:10
Adding the "range" Function
Урок 52.00:02:32
Wrap Up
Урок 53.00:02:51
Module Introduction
Урок 54.00:07:04
Understanding the Required Data Structure for our Blockchain
Урок 55.00:05:03
Working with Iterables
Урок 56.00:02:56
Choosing the Right Datastructure
Урок 57.00:07:47
Transactions with Dictionaries & Tuples
Урок 58.00:03:21
Unpacking the Tuple
Урок 59.00:06:18
Mining Blocks
Урок 60.00:06:24
Hashing Previous Blocks
Урок 61.00:05:49
Understanding List Comprehensions
Урок 62.00:01:40
And What are Dict Comprehensions?
Урок 63.00:02:54
Combining List Comprehensions & "if"
Урок 64.00:08:21
Improving the Blockchain Validation Logic
Урок 65.00:03:34
Managing a List of Participants in the Blockchain
Урок 66.00:07:47
Calculating Balances
Урок 67.00:03:24
Rewarding the Miners of our Blockchain
Урок 68.00:05:46
Verifying Transactions
Урок 69.00:07:08
Understanding Reference vs Value Copying
Урок 70.00:05:43
Working with the Range Selector
Урок 71.00:02:43
Understanding Shallow vs Deep Copies
Урок 72.00:01:37
Comparing "is" & "=="
Урок 73.00:07:28
Diving Deeper Into Iterable Methods
Урок 74.00:07:36
Understanding the "all" & "any" Functions
Урок 75.00:06:47
Comparing Iterables
Урок 76.00:03:18
Wrap Up
Урок 77.00:01:31
Module Introduction
Урок 78.00:03:58
Comparing Strings & Lists
Урок 79.00:08:12
Understanding the "format" Method
Урок 80.00:01:48
Escaping Characters
Урок 81.00:01:28
Formatting Strings Conveniently with "f"
Урок 82.00:02:01
Adding String Formatting to our Project
Урок 83.00:02:54
Understanding the "map" Function
Урок 84.00:02:14
Working with Lambda Functions
Урок 85.00:07:41
Reducing Lists
Урок 86.00:06:33
Unpacking Function Arguments
Урок 87.00:04:14
Fixing a Bug
Урок 88.00:01:31
Wrap Up
Урок 89.00:01:44
Module Introduction
Урок 90.00:02:13
Exploring the Python Standard Library
Урок 91.00:04:19
Importing Packages - Theory
Урок 92.00:07:15
Importing "hashlib" to Create a Unique Hash
Урок 93.00:01:48
Using Other Import Syntaxes
Урок 94.00:06:54
The "Proof of Work"
Урок 95.00:05:49
Adding the Proof of Work to our Blockchain
Урок 96.00:07:50
Including the Proof of Work in our Mining Function
Урок 97.00:06:23
Fixing a Hash Order Fault
Урок 98.00:04:34
Splitting Up our Code
Урок 99.00:02:03
Wrap Up
Урок 100.00:01:45
Module Introduction
Урок 101.00:05:45
Handling File Access
Урок 102.00:02:34
Reading Data From a File
Урок 103.00:05:53
Reading Multi-Line Content
Урок 104.00:02:58
Using the "with" Block Statement
Урок 105.00:08:40
Adding File Access to our Blockchain
Урок 106.00:16:02
Converting Strings Into Python Objects
Урок 107.00:06:06
Storing Data with Pickle
Урок 108.00:01:06
Comparing Pickle & JSON
Урок 109.00:02:31
Changing the Project Back to JSON
Урок 110.00:00:47
Why we need Proper Error Handling
Урок 111.00:01:18
Wrap Up
Урок 112.00:00:58
Module Introduction
Урок 113.00:05:54
Finding Logical Errors with the Debugger
Урок 114.00:01:41
Finding Syntax Errors
Урок 115.00:04:34
Using "try" to Find Runtime Errors
Урок 116.00:03:02
Which Errors Should you Handle?
Урок 117.00:02:33
Adding Error Handlers to our Blockchain
Урок 118.00:01:50
Wrap Up
Урок 119.00:01:14
Module Introduction
Урок 120.00:02:13
What is Object Oriented Programming?
Урок 121.00:01:25
Understanding Classes
Урок 122.00:05:10
Creating a Class
Урок 123.00:02:45
Comparing Classes, Instances & Dictionaries
Урок 124.00:03:38
Understanding Class Attributes
Урок 125.00:04:22
Constructor & Instance Attributes
Урок 126.00:06:05
Printing Classes with Special Methods
Урок 127.00:04:40
Private & Public Attributes
Урок 128.00:08:47
Understanding Inheritance
Урок 129.00:01:33
Planning Blockchain Classes
Урок 130.00:11:08
Adding a "Block" Class to the Blockchain
Урок 131.00:04:50
Saving Custom Class Objects via .json
Урок 132.00:17:47
Adding a "Transaction" Class
Урок 133.00:05:44
Inheritance in Action
Урок 134.00:10:04
Adding a "Verification" Helper Class
Урок 135.00:04:52
Initialising the "Node" Class
Урок 136.00:07:31
Turning the Blockchain Into a Class
Урок 137.00:11:12
Adding a "Node" Class
Урок 138.00:03:40
Understanding "Instance" vs "Class" vs "Static Methods" & "Attributes"
Урок 139.00:03:45
Using "Static" & "Class" Methods on the "Verification" Class
Урок 140.00:03:44
Using Private Attributes in the Blockchain
Урок 141.00:05:21
Properties vs Attributes
Урок 142.00:02:16
Wrap Up
Урок 143.00:01:42
Module Introduction
Урок 144.00:04:41
Creating Packages - Module Bundles
Урок 145.00:00:44
The "pycache" Folder
Урок 146.00:00:52
Module Docstrings
Урок 147.00:05:37
Controlling Exports
Урок 148.00:04:12
Understanding Execution Context & "__name__"
Урок 149.00:04:26
Why we Need a Private & Public Key Transaction Protection
Урок 150.00:06:24
Using Anaconda to Install Third Party Packages
Урок 151.00:06:22
Generating Keys with a Third Party Package
Урок 152.00:06:16
Connecting the Node & the Wallet
Урок 153.00:04:07
Generating Keys on the Node
Урок 154.00:08:25
Saving & Loading Keys to Files
Урок 155.00:06:25
Creating Transaction Signatures
Урок 156.00:02:43
Adding a Signature to our Transactions
Урок 157.00:06:50
Verifying Signatures
Урок 158.00:05:42
Improving the Verification Logic
Урок 159.00:01:22
Wrap Up
Урок 160.00:02:05
Module Introduction
Урок 161.00:05:41
HTTP Requests - The Basics
Урок 162.00:03:33
Understanding API-Endpoints/ URLs
Урок 163.00:03:19
Data Formats
Урок 164.00:02:06
Planning our API
Урок 165.00:10:09
Setting Up our Environment with Flask
Урок 166.00:10:10
Adding our First Route
Урок 167.00:02:22
Installing Postman
Урок 168.00:07:22
Adding a POST Request
Урок 169.00:08:24
Setting Up Routes to Manage our Wallet
Урок 170.00:05:44
Returning Funds
Урок 171.00:11:27
Adding Transactions
Урок 172.00:03:15
Fetching Open Transactions
Урок 173.00:01:47
Testing the Public Key
Урок 174.00:02:42
Adding a User Interface
Урок 175.00:13:18
Optional: Configuring our UI - Creating a Wallet
Урок 176.00:11:59
Optional: Configuring our UI - Loading a Wallet and Adding Mining & Transactions
Урок 177.00:02:46
Exploring our UI
Урок 178.00:01:53
Wrap Up
Урок 179.00:01:43
Module Introduction
Урок 180.00:07:19
Adding Node Management Methods to the Blockchain
Урок 181.00:07:41
Setting Up Routes to Add Nodes
Урок 182.00:05:18
Adding a Remove Node Route
Урок 183.00:01:20
Adding "get_Nodes" to get all Nodes
Урок 184.00:11:08
Attaching a Node User Interface
Урок 185.00:11:20
Running Multiple Nodes
Урок 186.00:10:37
Sending Requests from within Python
Урок 187.00:12:07
Broadcasting Transactions - Adding the Function & Route
Урок 188.00:05:52
Broadcasting Transactions - Testing & Fixing Errors
Урок 189.00:11:13
Broadcasting New Blocks: Adding the Function & Route
Урок 190.00:09:54
Broadcasting New Blocks: Informing the Peer Nodes
Урок 191.00:03:29
Broadcasting Transactions: Testing
Урок 192.00:05:34
Solving Conflicts
Урок 193.00:03:29
Understanding Consensus
Урок 194.00:09:35
Finding Conflicts
Урок 195.00:17:21
Implementing a Consensus Algorithm
Урок 196.00:05:50
Testing Consensus
Урок 197.00:01:02
Wrap Up
Урок 198.00:00:47
Module Introduction
Урок 199.00:02:47
Don't Forget PEP 8
Урок 200.00:08:30
Using PEP 8
Урок 201.00:01:02
Using Comments
Урок 202.00:05:08
Diving Deeper Into Python
Урок 203.00:10:03
Improving the Blockchain
Урок 204.00:00:58
Congratulations