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