Ethereum and Solidity: The Complete Developer's Guide
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.
More
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.
- Basic Knowledge of Javascript and NPM
- A Mac, PC, or Linux Machine
- Programmers looking to leverage blockchain technology for advanced apps
- Engineers who want to understand Ethereum and how to build apps with it
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
Watch Online Ethereum and Solidity: The Complete Developer's Guide
# | Title | Duration |
---|---|---|
1 | Introduction | 03:45 |
2 | A Short History Lesson | 04:14 |
3 | What is Ethereum? | 04:17 |
4 | Interfacing with Ethereum Networks | 02:43 |
5 | Ethereum Accounts | 05:23 |
6 | What's a Transaction? | 07:44 |
7 | Why'd We Wait? | 05:01 |
8 | Basic Blockchains | 17:50 |
9 | Block Time | 10:50 |
10 | Smart Contracts | 06:56 |
11 | The Solidity Programming Language | 05:04 |
12 | Our First Contract | 05:42 |
13 | Contract Structure | 05:40 |
14 | Function Declarations | 09:00 |
15 | Testing with Remix | 10:58 |
16 | Redeploying Contracts | 02:35 |
17 | Behind the Scenes of Deployment | 05:44 |
18 | More on Running Functions Than You Want to Know | 14:16 |
19 | Wei vs Ether | 04:08 |
20 | Gas and Transactions | 11:25 |
21 | Mnemonic Phrases | 11:29 |
22 | We Need More Test Ether! | 00:50 |
23 | Contract Deployment | 05:32 |
24 | Project Requirements | 05:10 |
25 | Project File Walkthrough | 04:33 |
26 | Compiling Solidity | 06:23 |
27 | The Compile Script | 06:11 |
28 | Testing Architecture | 03:49 |
29 | Installing Modules | 04:16 |
30 | Web3 Versioning | 04:19 |
31 | Web3 Providers | 04:48 |
32 | Testing with Mocha | 18:17 |
33 | Mocha Structure | 04:45 |
34 | Fetching Accounts from Ganache | 06:44 |
35 | Refactor to Async/Await | 02:40 |
36 | Deployment with Web3 | 06:12 |
37 | Deployed Inbox Overview | 11:19 |
38 | Asserting Deployment | 05:23 |
39 | Verifying the Initial Message | 08:26 |
40 | Testing Message Updates | 06:25 |
41 | Deployment with Infura | 06:58 |
42 | Wallet Provider Setup | 06:41 |
43 | Deployment to Testnet | 07:22 |
44 | Observing Deployment on Etherscan | 04:52 |
45 | Deployed Contracts in Remix | 07:14 |
46 | Project Review | 09:28 |
47 | The Lottery Contract | 02:37 |
48 | Lottery Design | 02:51 |
49 | Basic Solidity Types | 09:44 |
50 | Starting the Lottery Contract | 04:45 |
51 | The Message Global Variable | 05:54 |
52 | Overview of Arrays | 11:07 |
53 | Overview of Mappings and Structs | 03:43 |
54 | Big Solidity Gotcha | 06:29 |
55 | Entering the Lottery | 03:58 |
56 | Validation with Require Statements | 09:49 |
57 | The Remix Debugger | 04:04 |
58 | Pseudo Random Number Generator | 10:35 |
59 | Selecting a Winner | 04:59 |
60 | Sending Ether from Contracts | 05:09 |
61 | Resetting Contract State | 04:08 |
62 | Requiring Managers | 05:04 |
63 | Function Modifiers | 06:19 |
64 | Returning Players Array | 02:14 |
65 | Contract Review | 02:52 |
66 | New Test Setup | 03:05 |
67 | Test Project Updates | 02:05 |
68 | Test Helper Review | 04:34 |
69 | Asserting Deployment | 02:55 |
70 | Entering the Lottery | 06:28 |
71 | Asserting Multiple Players | 02:40 |
72 | Try-Catch Assertions | 05:58 |
73 | Testing Function Modifiers | 03:30 |
74 | End to End Test | 11:05 |
75 | Ethereum App Architecture | 09:21 |
76 | Application Overview | 07:57 |
77 | Getting Started with Create-React-App | 02:37 |
78 | Multiple Web3 Instances | 08:43 |
79 | Web3 Setup | 06:10 |
80 | Deploying the Lottery Contract | 05:33 |
81 | Local Contract Instances | 06:27 |
82 | Rendering Contract Data | 07:05 |
83 | Instance Properties | 01:59 |
84 | Accessing More Properties | 05:34 |
85 | The 'Enter' Form | 03:51 |
86 | Form Setup | 06:48 |
87 | Entering the Lottery | 06:36 |
88 | Picking a Winner | 08:35 |
89 | Project Review | 03:08 |
90 | Solving Real Problems with Contracts | 06:02 |
91 | Fixing Kickstarter's Issues | 07:49 |
92 | Campaign Contract Design | 09:06 |
93 | Campaign Constructor | 04:17 |
94 | Contributing to the Campaign | 03:08 |
95 | A Quick Test | 02:14 |
96 | The Request Struct | 08:59 |
97 | More on Function Modifiers | 05:16 |
98 | Creating Struct Instances | 05:34 |
99 | Instance Creation Syntax | 09:32 |
100 | Storage and Memory | 06:28 |
101 | More on Storage vs Memory | 16:24 |
102 | Voting System Requirements | 02:50 |
103 | The Wrong Voting System | 05:13 |
104 | Issues with Arrays | 06:15 |
105 | Mappings vs Arrays | 04:02 |
106 | Basics of Mappings | 11:09 |
107 | Refactoring to Mappings | 06:46 |
108 | Refactoring Request Stucts | 02:16 |
109 | More on Struct Initialization | 02:53 |
110 | Approving a Request | 07:54 |
111 | Testing Request Approvals | 05:23 |
112 | Finalizing a Request | 07:25 |
113 | Last Remix Test | 03:04 |
114 | Thinking about Deployment | 09:47 |
115 | Solution to Deployment | 06:34 |
116 | Adding a Campaign Factory | 07:54 |
117 | Testing the Factory | 03:28 |
118 | Project Setup | 02:18 |
119 | Directory Structure | 02:57 |
120 | A Better Compile Script | 04:42 |
121 | Single Run Compilation | 08:47 |
122 | More on Compile | 06:21 |
123 | Test File Setup | 08:22 |
124 | Creating Campaign Instances | 10:20 |
125 | Testing Warmup | 03:12 |
126 | Accessing Mappings | 09:56 |
127 | Requiring Minimum Contributions | 03:14 |
128 | Array Getters | 06:08 |
129 | One End to End Test | 13:01 |
130 | Deployment | 02:17 |
131 | Refactoring Deployment | 06:06 |
132 | App Mockups | 11:06 |
133 | CRA vs Next | 05:00 |
134 | Next's Pages Architecture | 05:09 |
135 | Basics of Next Routing | 04:52 |
136 | Root Routes | 05:24 |
137 | CampaignFactory Instance | 07:13 |
138 | Getting a Test Campaign | 05:36 |
139 | Fetching Deployed Campaigns | 06:28 |
140 | Why Next.js, Anyways? | 09:51 |
141 | Server vs Client Web3 Instances | 10:42 |
142 | GetInitialProps Function | 10:15 |
143 | Semantic UI React | 05:50 |
144 | Card Group Setup | 06:42 |
145 | Rendering Card Groups | 06:11 |
146 | Adding CSS | 04:41 |
147 | Adding a Button | 06:48 |
148 | The Need for a Layout | 06:17 |
149 | The Layout Component | 07:14 |
150 | Assembling a Header | 07:36 |
151 | Constraining Content Width | 04:29 |
152 | Two Column Layout | 01:59 |
153 | Nested Routing | 04:28 |
154 | Final CSS Fix | 05:21 |
155 | Form Creation | 04:32 |
156 | Input Change Handlers | 06:21 |
157 | Form Submittal | 05:59 |
158 | Testing Submittal | 03:45 |
159 | Form Error Handling | 12:50 |
160 | Button Spinners | 06:57 |
161 | Routing Issues | 03:14 |
162 | Next Routes Setup | 10:55 |
163 | Automatic Navigation | 04:44 |
164 | Header Navigation | 05:53 |
165 | Routing to Campaigns | 05:53 |
166 | Route Mappings | 07:02 |
167 | Planning CampaignShow | 04:00 |
168 | Redeploying CampaignFactory | 08:54 |
169 | CampaignShow's GetInitialProps | 07:11 |
170 | Accessing a Campaign | 08:04 |
171 | Summary Translation Layer | 04:16 |
172 | Custom Card Groups | 07:45 |
173 | One Card Per Property | 04:39 |
174 | The Contribute Form | 07:23 |
175 | Grid Layouts | 04:08 |
176 | Form State | 02:45 |
177 | Communicating the Campaign Address | 04:25 |
178 | Making a Contribution | 04:56 |
179 | Refreshing Contract Data | 06:18 |
180 | Spinners and Error Handlers | 04:57 |
181 | Listing Requests | 06:30 |
182 | Grids vs Columns | 03:37 |
183 | More Routing! | 08:33 |
184 | Request Creation Form | 10:36 |
185 | Creating a Request | 09:52 |
186 | Form Polish | 07:44 |
187 | Creating a Request | 01:13 |
188 | Requests One by One | 03:33 |
189 | Fancy Javascript | 07:36 |
190 | Rendering a Table | 03:23 |
191 | Request Row Component | 06:18 |
192 | Request Row Content | 07:24 |
193 | Approvers Count Cell | 05:52 |
194 | Approving a Request | 06:59 |
195 | Finalizing Requests | 05:20 |
196 | Testing Finalization | 02:34 |
197 | Row Status Styling | 06:46 |
198 | Finishing Requests Index | 02:31 |
199 | Wrapup | 00:45 |
200 | Purpose of Boilerplate Projects | 03:42 |
201 | Environment Setup | 01:46 |
202 | Project Setup | 02:54 |
203 | JSX | 11:30 |
204 | More on JSX | 04:36 |
205 | ES6 Import Statements | 03:59 |
206 | ReactDOM vs React | 02:27 |
207 | Component Instances | 03:39 |
208 | Render Targets | 05:54 |
209 | Component Structure | 06:27 |
210 | Youtube Search API Signup | 06:40 |
211 | Export Statements | 08:41 |
212 | Class Based Components | 08:12 |
213 | Handling User Events | 09:31 |
214 | Introduction to State | 05:14 |
215 | State Continued | 06:05 |
216 | Controlled Components | 07:48 |
217 | Breather and Review | 03:38 |
218 | Youtube Search Response | 04:27 |
219 | Refactoring Functional Components to Class Components | 07:44 |
220 | Props | 07:43 |
221 | Building Lists with Map | 07:07 |
222 | List Item Keys | 03:55 |
223 | Video List Items | 07:54 |
224 | Detail Component and Template Strings | 07:06 |
225 | Handling Null Props | 04:42 |
226 | Video Selection | 11:40 |
227 | Styling with CSS | 03:44 |
228 | Searching for Videos | 07:52 |
229 | Throttling Search Term Input | 05:47 |
230 | React Wrapup | 05:25 |