1. Урок 1.00:01:52
    Introduction
  2. Урок 2.00:05:08
    What is Python?
  3. Урок 3.00:03:12
    Setting Up Python
  4. Урок 4.00:05:06
    Writing our First Python Code
  5. Урок 5.00:06:49
    What is the Blockchain?
  6. Урок 6.00:04:42
    Course Outline
  7. Урок 7.00:03:59
    Python Alternatives
  8. Урок 8.00:02:23
    Understanding the Python Versions
  9. Урок 9.00:03:29
    How To Get The Most Out Of This Course
  10. Урок 10.00:02:17
    Module Introduction
  11. Урок 11.00:04:26
    Understanding the REPL and Data Types
  12. Урок 12.00:04:47
    Working with Variables
  13. Урок 13.00:05:37
    Working with Numbers
  14. Урок 14.00:03:49
    Using Operators
  15. Урок 15.00:03:36
    Understanding a "Special" Behaviour when Working with Numbers
  16. Урок 16.00:02:19
    Working with Strings
  17. Урок 17.00:05:10
    Working with Lists
  18. Урок 18.00:03:03
    Adding & Removing List Items
  19. Урок 19.00:02:03
    Preparing the Blockchain - The Theory
  20. Урок 20.00:05:18
    Installing our IDE
  21. Урок 21.00:06:46
    Using Functions to Add List Items
  22. Урок 22.00:03:25
    Accessing the Last List Item
  23. Урок 23.00:02:37
    Adding Arguments to Functions
  24. Урок 24.00:03:58
    Understanding the "return" Keyword
  25. Урок 25.00:04:07
    Using Default Arguments
  26. Урок 26.00:03:00
    Working with Keyword Arguments
  27. Урок 27.00:03:01
    Using the "input" Function
  28. Урок 28.00:02:08
    Avoiding Repetitive Code Execution
  29. Урок 29.00:06:50
    Understanding the Variable Scope
  30. Урок 30.00:02:26
    Exploring the Official Documentation
  31. Урок 31.00:04:21
    Adding Comments and Doc Strings
  32. Урок 32.00:01:57
    Structuring Multi Line Code in Python
  33. Урок 33.00:03:29
    Wrap Up
  34. Урок 34.00:01:39
    Module Introduction
  35. Урок 35.00:02:56
    Understanding Loops - Theory
  36. Урок 36.00:03:03
    Creating a "for" Loop
  37. Урок 37.00:03:34
    Creating a "while" Loop
  38. Урок 38.00:02:02
    Understanding Conditionals - Theory
  39. Урок 39.00:07:46
    Adding "if-else" to our Blockchain
  40. Урок 40.00:03:44
    Working with "elif"
  41. Урок 41.00:03:32
    Understanding "break" & "continue"
  42. Урок 42.00:06:40
    Improving our Code with Loops & Conditionals
  43. Урок 43.00:03:38
    Understanding Boolean Operators - "is" & "in"
  44. Урок 44.00:01:18
    The "not" Keyword
  45. Урок 45.00:02:27
    Understanding "and" and "or"
  46. Урок 46.00:03:23
    Grouping Conditionals
  47. Урок 47.00:00:42
    What About "switch" in Python?
  48. Урок 48.00:13:11
    Verifying our Blockchain
  49. Урок 49.00:01:57
    Using Conditions inside the "while" Loop
  50. Урок 50.00:02:08
    Using "else" in Loops
  51. Урок 51.00:07:10
    Adding the "range" Function
  52. Урок 52.00:02:32
    Wrap Up
  53. Урок 53.00:02:51
    Module Introduction
  54. Урок 54.00:07:04
    Understanding the Required Data Structure for our Blockchain
  55. Урок 55.00:05:03
    Working with Iterables
  56. Урок 56.00:02:56
    Choosing the Right Datastructure
  57. Урок 57.00:07:47
    Transactions with Dictionaries & Tuples
  58. Урок 58.00:03:21
    Unpacking the Tuple
  59. Урок 59.00:06:18
    Mining Blocks
  60. Урок 60.00:06:24
    Hashing Previous Blocks
  61. Урок 61.00:05:49
    Understanding List Comprehensions
  62. Урок 62.00:01:40
    And What are Dict Comprehensions?
  63. Урок 63.00:02:54
    Combining List Comprehensions & "if"
  64. Урок 64.00:08:21
    Improving the Blockchain Validation Logic
  65. Урок 65.00:03:34
    Managing a List of Participants in the Blockchain
  66. Урок 66.00:07:47
    Calculating Balances
  67. Урок 67.00:03:24
    Rewarding the Miners of our Blockchain
  68. Урок 68.00:05:46
    Verifying Transactions
  69. Урок 69.00:07:08
    Understanding Reference vs Value Copying
  70. Урок 70.00:05:43
    Working with the Range Selector
  71. Урок 71.00:02:43
    Understanding Shallow vs Deep Copies
  72. Урок 72.00:01:37
    Comparing "is" & "=="
  73. Урок 73.00:07:28
    Diving Deeper Into Iterable Methods
  74. Урок 74.00:07:36
    Understanding the "all" & "any" Functions
  75. Урок 75.00:06:47
    Comparing Iterables
  76. Урок 76.00:03:18
    Wrap Up
  77. Урок 77.00:01:31
    Module Introduction
  78. Урок 78.00:03:58
    Comparing Strings & Lists
  79. Урок 79.00:08:12
    Understanding the "format" Method
  80. Урок 80.00:01:48
    Escaping Characters
  81. Урок 81.00:01:28
    Formatting Strings Conveniently with "f"
  82. Урок 82.00:02:01
    Adding String Formatting to our Project
  83. Урок 83.00:02:54
    Understanding the "map" Function
  84. Урок 84.00:02:14
    Working with Lambda Functions
  85. Урок 85.00:07:41
    Reducing Lists
  86. Урок 86.00:06:33
    Unpacking Function Arguments
  87. Урок 87.00:04:14
    Fixing a Bug
  88. Урок 88.00:01:31
    Wrap Up
  89. Урок 89.00:01:44
    Module Introduction
  90. Урок 90.00:02:13
    Exploring the Python Standard Library
  91. Урок 91.00:04:19
    Importing Packages - Theory
  92. Урок 92.00:07:15
    Importing "hashlib" to Create a Unique Hash
  93. Урок 93.00:01:48
    Using Other Import Syntaxes
  94. Урок 94.00:06:54
    The "Proof of Work"
  95. Урок 95.00:05:49
    Adding the Proof of Work to our Blockchain
  96. Урок 96.00:07:50
    Including the Proof of Work in our Mining Function
  97. Урок 97.00:06:23
    Fixing a Hash Order Fault
  98. Урок 98.00:04:34
    Splitting Up our Code
  99. Урок 99.00:02:03
    Wrap Up
  100. Урок 100.00:01:45
    Module Introduction
  101. Урок 101.00:05:45
    Handling File Access
  102. Урок 102.00:02:34
    Reading Data From a File
  103. Урок 103.00:05:53
    Reading Multi-Line Content
  104. Урок 104.00:02:58
    Using the "with" Block Statement
  105. Урок 105.00:08:40
    Adding File Access to our Blockchain
  106. Урок 106.00:16:02
    Converting Strings Into Python Objects
  107. Урок 107.00:06:06
    Storing Data with Pickle
  108. Урок 108.00:01:06
    Comparing Pickle & JSON
  109. Урок 109.00:02:31
    Changing the Project Back to JSON
  110. Урок 110.00:00:47
    Why we need Proper Error Handling
  111. Урок 111.00:01:18
    Wrap Up
  112. Урок 112.00:00:58
    Module Introduction
  113. Урок 113.00:05:54
    Finding Logical Errors with the Debugger
  114. Урок 114.00:01:41
    Finding Syntax Errors
  115. Урок 115.00:04:34
    Using "try" to Find Runtime Errors
  116. Урок 116.00:03:02
    Which Errors Should you Handle?
  117. Урок 117.00:02:33
    Adding Error Handlers to our Blockchain
  118. Урок 118.00:01:50
    Wrap Up
  119. Урок 119.00:01:14
    Module Introduction
  120. Урок 120.00:02:13
    What is Object Oriented Programming?
  121. Урок 121.00:01:25
    Understanding Classes
  122. Урок 122.00:05:10
    Creating a Class
  123. Урок 123.00:02:45
    Comparing Classes, Instances & Dictionaries
  124. Урок 124.00:03:38
    Understanding Class Attributes
  125. Урок 125.00:04:22
    Constructor & Instance Attributes
  126. Урок 126.00:06:05
    Printing Classes with Special Methods
  127. Урок 127.00:04:40
    Private & Public Attributes
  128. Урок 128.00:08:47
    Understanding Inheritance
  129. Урок 129.00:01:33
    Planning Blockchain Classes
  130. Урок 130.00:11:08
    Adding a "Block" Class to the Blockchain
  131. Урок 131.00:04:50
    Saving Custom Class Objects via .json
  132. Урок 132.00:17:47
    Adding a "Transaction" Class
  133. Урок 133.00:05:44
    Inheritance in Action
  134. Урок 134.00:10:04
    Adding a "Verification" Helper Class
  135. Урок 135.00:04:52
    Initialising the "Node" Class
  136. Урок 136.00:07:31
    Turning the Blockchain Into a Class
  137. Урок 137.00:11:12
    Adding a "Node" Class
  138. Урок 138.00:03:40
    Understanding "Instance" vs "Class" vs "Static Methods" & "Attributes"
  139. Урок 139.00:03:45
    Using "Static" & "Class" Methods on the "Verification" Class
  140. Урок 140.00:03:44
    Using Private Attributes in the Blockchain
  141. Урок 141.00:05:21
    Properties vs Attributes
  142. Урок 142.00:02:16
    Wrap Up
  143. Урок 143.00:01:42
    Module Introduction
  144. Урок 144.00:04:41
    Creating Packages - Module Bundles
  145. Урок 145.00:00:44
    The "pycache" Folder
  146. Урок 146.00:00:52
    Module Docstrings
  147. Урок 147.00:05:37
    Controlling Exports
  148. Урок 148.00:04:12
    Understanding Execution Context & "__name__"
  149. Урок 149.00:04:26
    Why we Need a Private & Public Key Transaction Protection
  150. Урок 150.00:06:24
    Using Anaconda to Install Third Party Packages
  151. Урок 151.00:06:22
    Generating Keys with a Third Party Package
  152. Урок 152.00:06:16
    Connecting the Node & the Wallet
  153. Урок 153.00:04:07
    Generating Keys on the Node
  154. Урок 154.00:08:25
    Saving & Loading Keys to Files
  155. Урок 155.00:06:25
    Creating Transaction Signatures
  156. Урок 156.00:02:43
    Adding a Signature to our Transactions
  157. Урок 157.00:06:50
    Verifying Signatures
  158. Урок 158.00:05:42
    Improving the Verification Logic
  159. Урок 159.00:01:22
    Wrap Up
  160. Урок 160.00:02:05
    Module Introduction
  161. Урок 161.00:05:41
    HTTP Requests - The Basics
  162. Урок 162.00:03:33
    Understanding API-Endpoints/ URLs
  163. Урок 163.00:03:19
    Data Formats
  164. Урок 164.00:02:06
    Planning our API
  165. Урок 165.00:10:09
    Setting Up our Environment with Flask
  166. Урок 166.00:10:10
    Adding our First Route
  167. Урок 167.00:02:22
    Installing Postman
  168. Урок 168.00:07:22
    Adding a POST Request
  169. Урок 169.00:08:24
    Setting Up Routes to Manage our Wallet
  170. Урок 170.00:05:44
    Returning Funds
  171. Урок 171.00:11:27
    Adding Transactions
  172. Урок 172.00:03:15
    Fetching Open Transactions
  173. Урок 173.00:01:47
    Testing the Public Key
  174. Урок 174.00:02:42
    Adding a User Interface
  175. Урок 175.00:13:18
    Optional: Configuring our UI - Creating a Wallet
  176. Урок 176.00:11:59
    Optional: Configuring our UI - Loading a Wallet and Adding Mining & Transactions
  177. Урок 177.00:02:46
    Exploring our UI
  178. Урок 178.00:01:53
    Wrap Up
  179. Урок 179.00:01:43
    Module Introduction
  180. Урок 180.00:07:19
    Adding Node Management Methods to the Blockchain
  181. Урок 181.00:07:41
    Setting Up Routes to Add Nodes
  182. Урок 182.00:05:18
    Adding a Remove Node Route
  183. Урок 183.00:01:20
    Adding "get_Nodes" to get all Nodes
  184. Урок 184.00:11:08
    Attaching a Node User Interface
  185. Урок 185.00:11:20
    Running Multiple Nodes
  186. Урок 186.00:10:37
    Sending Requests from within Python
  187. Урок 187.00:12:07
    Broadcasting Transactions - Adding the Function & Route
  188. Урок 188.00:05:52
    Broadcasting Transactions - Testing & Fixing Errors
  189. Урок 189.00:11:13
    Broadcasting New Blocks: Adding the Function & Route
  190. Урок 190.00:09:54
    Broadcasting New Blocks: Informing the Peer Nodes
  191. Урок 191.00:03:29
    Broadcasting Transactions: Testing
  192. Урок 192.00:05:34
    Solving Conflicts
  193. Урок 193.00:03:29
    Understanding Consensus
  194. Урок 194.00:09:35
    Finding Conflicts
  195. Урок 195.00:17:21
    Implementing a Consensus Algorithm
  196. Урок 196.00:05:50
    Testing Consensus
  197. Урок 197.00:01:02
    Wrap Up
  198. Урок 198.00:00:47
    Module Introduction
  199. Урок 199.00:02:47
    Don't Forget PEP 8
  200. Урок 200.00:08:30
    Using PEP 8
  201. Урок 201.00:01:02
    Using Comments
  202. Урок 202.00:05:08
    Diving Deeper Into Python
  203. Урок 203.00:10:03
    Improving the Blockchain
  204. Урок 204.00:00:58
    Congratulations