Ethereum and Solidity: The Complete Developer’s Guide

Ethereum and Solidity: The Complete Developer’s Guide

English | MP4 | AVC 1280×720 | AAC 48KHz 2ch | 24 Hours | 3.62 GB

Use Ethereum, Solidity, and Smart Contracts to build production-ready apps based on the blockchain

Smart Contracts? They’re here. The Ethereum Blockchain? Covered. Solidity? Yep!

There can be no understating it: Ethereum and Blockchain technology is the most disruptive force in years. Companies cannot hire developers who understand blockchain technologies fast enough, but there are a tiny number of resources published to help you truly understand what blockchains are used for, let alone build apps with them. That’s the purpose of this course: to be the best resource online for learning about Ethereum, blockchains, and how to build apps with this new technology.

The development community is still figuring out the best way to use Ethereum in the creation of new and exciting apps. I spent a tremendous amount of time to research and create best practice for interfacing with Ethereum from Javascript. I can’t overstate it enough; this course will show you the best and most easily repeatable patterns for creating production-ready apps with Ethereum.

What tools and libraries are used?

The Ethereum tech ecosystem is in constant change. Don’t be fooled by other courses that mention how you’ll learn a dozen different libraries! Every library that you’ll use with Ethereum breaks and is deprecated on a near-weekly basis! Instead, this course will teach you how to assemble your own boilerplate package to develop, compile, and test Smart Contracts. By learning the core technologies, you’ll be prepared to adjust to Ethereum no matter how the ecosystem changes.

What is Ethereum?

Ethereum is a cryptocurrency much like Bitcoin, and it has been heralded as Bitcoins successor. Whereas Bitcoin currently has issues scaling with an increasing backlog of transactions, Ethereum is poised to surpass Bitcoin in performance, popularity, and value. Ethereum was created to help developers like you create applications focused around transferring money or value from one party to another.

What is Solidity?

Solidity is a programming language for writing Smart Contracts. Essentially, think of it as a way to control a bank account with code. With Solidity, we can write applications that simulate a crowd funding campaign, a lottery, a loan, or any other type of financial instrument. Don’t be intimidated by learning ‘another’ programming language; Solidity is known to be quite similar to Javascript and exceptionally easy to pick up for anyone who has previous JS experience. This course will give you all the tools you need to master Solidity.

What you’ll learn

  • Understand the why engineers would want to create an app with Ethereum
  • Build compelling blockchain applications using the Ethereum Blockchain
  • Design, test, and deploy secure Smart Contracts
  • Learn the true purpose and capabilities of Ethereum and Solidity
  • Use the latest version of Ethereum development tools (Web3 v1.0)
  • See practical examples to comprehend what the blockchain and mining are
Table of Contents

1 What is Ethereum?
2 Introduction
3 Link to Completed Code on Github
4 A Short History Lesson
5 Link to Original Bitcoin White Paper
6 What is Ethereum?
7 Interfacing with Ethereum Networks
8 Metamask Setup
9 Ethereum Accounts
10 Receiving Ether
11 What’s a Transaction?
12 Why’d We Wait?
13 A Quick Note
14 Basic Blockchains
15 Block Time
16 Smart Contracts
17 The Solidity Programming Language
18 Our First Contract
19 Quick Note – Remix Deprecation Warnings
20 Contract Structure
21 Function Declarations
22 Testing with Remix
23 Redeploying Contracts
24 Behind the Scenes of Deployment
25 More on Running Functions Than You Want to Know
26 Wei vs Ether
27 Gas and Transactions
28 Mnemonic Phrases
29 Getting More Ether

Smart Contracts with Solidity
30 Don’t Skip! Node JS Versioning
31 Contract Deployment
32 Boilerplate Requirements
33 Project File Walkthrough
34 Syntax Highlighters
35 Solidity “AssertionError [ERR_ASSERTION]: Invalid callback specified” errors
36 Compiling Solidity
37 The Compile Script
38 Testing Architecture
39 Web3 Install Issues on Windows
40 Installing Modules
41 Web3 Versioning
42 Web3 Providers
43 Testing with Mocha
44 Mocha Structure
45 Fetching Accounts from Ganache
46 Refactor to Async/Await
47 Deployment with Web3
48 Deployed Inbox Overview
49 Asserting Deployment
50 Web3 Version Fix
51 Verifying the Initial Message
52 Testing Message Updates
53 Deployment with Infura
54 Infura Signup
55 Wallet Provider Setup
56 Deployment to Rinkeby
57 Observing Deployment on Etherscan
58 Deployed Contracts in Remix
59 Project Review

Advanced Smart Contracts
60 The Lottery Contract
61 Lottery Design
62 Basic Solidity Types
63 Starting the Lottery Contract
64 The Message Global Variable
65 Overview of Arrays
66 Overview of Mappings and Structs
67 Big Solidity Gotcha
68 Entering the Lottery
69 Validation with Require Statements
70 The Remix Debugger
71 Pseudo Random Number Generator
72 Selecting a Winner
73 Sending Ether from Contracts
74 Resetting Contract State
75 Requiring Managers
76 Function Modifiers
77 Returning Players Array
78 Contract Review
79 New Test Setup
80 Test Project Updates
81 Test Helper Review
82 Asserting Deployment
83 Entering the Lottery
84 Asserting Multiple Players
85 Try-Catch Assertions
86 Testing Function Modifiers
87 End to End Test

Building Interactive Front-Ends
88 Ethereum App Architecture
89 Application Overview
90 Getting Started with Create-React-App
91 Multiple Web3 Instances
92 Web3 Setup
93 Updated Deploy Code
94 Deploying the Lottery Contract
95 Local Contract Instances
96 Rendering Contract Data
97 Instance Properties
98 Accessing More Properties
99 The ‘Enter’ Form
100 Form Setup
101 Entering the Lottery
102 Picking a Winner
103 Project Review

Real Projects with Ethereum
104 Solving Real Problems with Contracts
105 Fixing Kickstarter’s Issues
106 Campaign Contract Design
107 Campaign Constructor
108 Contributing to the Campaign
109 A Quick Test
110 The Request Struct
111 More on Function Modifiers
112 Creating Struct Instances
113 Instance Creation Syntax
114 Storage and Memory
115 More on Storage vs Memory
116 Voting System Requirements
117 The Wrong Voting System
118 Issues with Arrays
119 Mappings vs Arrays
120 Basics of Mappings
121 Refactoring to Mappings
122 Refactoring Request Stucts
123 More on Struct Initialization
124 Approving a Request
125 Testing Request Approvals
126 Finalizing a Request
127 Last Remix Test
128 Thinking about Deployment
129 Solution to Deployment
130 Adding a Campaign Factory
131 Testing the Factory

Ethereum Project Infrastructure
132 Project Setup
133 Directory Structure
134 A Better Compile Script
135 Single Run Compilation
136 More on Compile
137 Test File Setup
138 Creating Campaign Instances
139 Testing Warmup
140 Accessing Mappings
141 Requiring Minimum Contributinos
142 Array Getters
143 One End to End Test
144 Deployment
145 Updated Deploy Code
146 Refactoring Deployment

Advanced Multi-Page Front-Ends
147 App Mockups
148 CRA vs Next
149 Next’s Pages Architecture
150 Basics of Next Routing
151 Root Routes
152 CampaignFactory Instance
153 Getting a Test Campaign
154 Fetching Deployed Campaigns
155 Why Next.js, Anyways?
156 Server vs Client Web3 Instances
157 GetInitialProps Function
158 Semantic UI React
159 Card Group Setup
160 Rendering Card Groups
161 Adding CSS
162 Adding a Button
163 The Need for a Layout
164 The Layout Component
165 Assembling a Header
166 Constraining Content Width
167 Two Column Layout
168 Nested Routing
169 Final CSS Fix
170 Form Creation
171 Input Change Handlers
172 Form Submittal
173 Testing Submittal
174 Form Error Handling
175 Button Spinners
176 Routing Issues
177 Next Routes Setup
178 Automatic Navigation
179 Header Navigation
180 Routing to Campaigns
181 Restarting the Server
182 Route Mappings
183 Planning CampaignShow
184 Redeploying CampaignFactory
185 CampaignShow’s GetInitialProps
186 Accessing a Campaign
187 Summary Translation Layer
188 Custom Card Groups
189 One Card Per Property
190 The Contribute Form
191 Grid Layouts
192 Form State
193 Communicating the Campaign Address
194 Making a Contribution
195 Refreshing Contract Data
196 Spinners and Error Handlers
197 Listing Requests
198 Grids vs Columns
199 More Routing!
200 Request Creation Form
201 Creating a Request
202 Form Polish
203 Creating a Request
204 Requests One by One
205 Fancy Javascript
206 Small Typo!
207 Rendering a Table
208 Request Row Component
209 Request Row Content
210 Approvers Count Cell
211 Approving a Request
212 Finalizing Requests
213 Testing Finalization
214 Row Status Styling
215 Finishing Requests Index
216 Wrapup

Appendix: Basic React
217 A Note on This Section
218 Purpose of Boilerplate Projects
219 Environment Setup
220 Project Setup
221 JSX
222 More on JSX
223 ES6 Import Statements
224 ReactDOM vs React
225 Component Instances
226 Render Targets
227 Component Structure
228 Youtube Search API Signup
229 Export Statements
230 Class Based Components
231 Handling User Events
232 Introduction to State
233 State Continued
234 Controlled Components
235 Breather and Review
236 Youtube Search Response
237 Refactoring Functional Components to Class Components
238 Props
239 Building Lists with Map
240 List Item Keys
241 Video List Items
242 Detail Component and Template Strings
243 Handling Null Props
244 Video Selection
245 Styling with CSS
246 Searching for Videos
247 Throttling Search Term Input
248 React Wrapup
249 Vue Flavored Version
250 Bonus!