Solidity & Ethereum in React (Next JS): The Complete Guide
Create real Smart Contracts in Solidity and DApps with React & Next JS. Understand how the Ethereum blockchain works.
More
What is Ethereum?
Ethereum is a technology that lets you send cryptocurrency to anyone, but in the first place It also powers applications that everyone can use, and no one can takedown. It's the world's programmable blockchain.
Ethereum builds on Bitcoin's innovation, with some big differences.
Both let you use digital money without payment providers or banks. But Ethereum is programmable, so you can also use it for many different digital assets – even Bitcoin!
This also means Ethereum is for more than payments. It's a marketplace of financial services, games, and apps that can't steal your data or censor you. It's the Future.
What is Solidity?
Solidity is an object-oriented, high-level language for implementing smart contracts. Smart contracts are programs that govern the behavior of accounts within the Ethereum state.
Solidity is a curly-bracket language. It is influenced by C++, Python, and JavaScript, and is designed to target the Ethereum Virtual Machine (EVM). You can find more details about which languages Solidity has been inspired by in the language influences section.
Solidity is statically typed, supports inheritance, libraries, and complex user-defined types, among other features.
With Solidity, you can create contracts for uses such as voting, crowdfunding, blind auctions, and multi-signature wallets.
What is this course covering?
The course is covering everything you need to become a blockchain developer. Students of this course will learn what Ethereum blockchain is and how it works on the base level and from a developer's perspective.
Students will learn what smart contracts are and how to create them. Smarts contracts are going hand in hand with dApps(decentralized apps). The course is covering them as well.
The frontend for dApps covered in the course was used React library and Next JS framework. CSS and design are built with the help of Bulma and Tailwind frameworks.
Two real-world applications are created in the course. Every part of application creation is well explained and documented.
Faucet application:
The first application of the course. Students will learn the basics and core knowledge of the Ethereum network by working on practical applications.
The front end of the application is built with React library and Bulma framework, for smart contract creation was used Truffle development environment and Ganache(private blockchain).
Faucet application will enable users to donate and withdraw funds from the smart contract. Users will interact with a smart contract through the website connected to the blockchain network through the Metamask wallet.
The purpose of the first application is to cover the basics while having fun working on something practical.
The most important questions this application is answering are:
what is Ethereum (transactions, blockchain)
what is EVM (bytecode, storage)
how to create smart contracts and dapps
how to integrate smart contracts with React
Marketplace application:
This application is covering the creation of an interactive marketplace. Clients of this application will purchase courses(students can choose products of their choice) with Ether digital currency.
With all of the basics covered in the previous application, the focus will be on the practical development part of the Ethereum network. Topics will be more challenging, and lectures will be more practical code-wise.
The second application covers tons of features as few, for example, the marketplace page with real-time updates of Ether currency and course prices compared to the US dollar.
The modal window is dedicated to making orders. Email hashing solution to maintain client's privacy. Order view with order filtering and pagination, and many others.
This application will be built in the Next JS framework with Tailwind as the CSS framework. Next JS is internally using React library. It's straightforward to use and offers SSR(server-side rendering) by default.
SSR offers lots of benefits but also brings few problems in terms of integration with the blockchain.
The entire integration part of Next JS with blockchain is covered, well explained, and documented. The final application will be deployed on the internet. The smart contract will be deployed to the "live" mainet network.
The most mentionable topics covered in this application are:
Next js(SSR) Integration with Web3 and Blockchain
Creation of more complicated Smart Contract
Email hashing and order verification feature
Testing solution (tests will cover every feature of the smart contract)
Pagination and Filtering of orders
Watch Online Solidity & Ethereum in React (Next JS): The Complete Guide
# | Title | Duration |
---|---|---|
1 | Introduction | 09:35 |
2 | How to approach errors | 05:52 |
3 | Init App | 09:56 |
4 | Remove React JS content | 02:16 |
5 | Terminology | 01:01 |
6 | [AI] What is Blockchain | 24:15 |
7 | [AI] Smart Contracts | 20:20 |
8 | [AI] Miners, Networks, Wallet | 06:31 |
9 | [AI] Ethereum Remix | 13:02 |
10 | Truffle init | 09:01 |
11 | Installing Ganache | 12:53 |
12 | First Smart Contract | 08:32 |
13 | [AI] Ints | 07:42 |
14 | [AI] Int Correction | 00:52 |
15 | Migrating Faucet | 14:03 |
16 | [AI] Gas fees | 08:44 |
17 | [AI] Gas Fees Bonus | 15:02 |
18 | [AI] Keccak256 | 09:55 |
19 | [AI] Function Signiture | 05:27 |
20 | [AI] Bits, Hex, Decimal | 16:57 |
21 | Access Contract with console | 04:03 |
22 | Web3 Interaction part | 05:54 |
23 | [AI] EVM & Truffle | 10:40 |
24 | Receive function | 06:02 |
25 | Send transaction | 08:05 |
26 | [AI] etHash and nonce | 16:56 |
27 | [AI] Modulo Operator | 08:40 |
28 | Blockchain link | 02:08 |
29 | [AI] Bytecode instruction | 29:20 |
30 | Additional Resources | 07:10 |
31 | Add funds | 05:05 |
32 | Call function by its signiture | 06:12 |
33 | Show function in Remix | 06:17 |
34 | Method Calls + JSON RPC | 15:39 |
35 | Funders | 06:02 |
36 | Get Funders | 06:45 |
37 | Public vs External | 07:18 |
38 | [AI] Memory details part 1 | 17:39 |
39 | [AI] Memory details part 2 | 12:17 |
40 | [AI] Memory & Ascii | 10:43 |
41 | [AI] Memory Offset | 07:12 |
42 | Private & Internal | 04:40 |
43 | [AI] Storage | 16:31 |
44 | [AI] Storage Debugging | 06:56 |
45 | Funders mapping | 06:48 |
46 | Get all funders | 07:02 |
47 | Prevent duplications | 04:52 |
48 | lutFunders | 05:54 |
49 | [AI] Storage mappings | 11:21 |
50 | [AI] Keccak256 values | 07:30 |
51 | [AI] Storage arrays | 08:26 |
52 | Withdraw | 07:35 |
53 | Require statement | 04:47 |
54 | Modifiers | 05:48 |
55 | Only owner | 07:19 |
56 | Inheritance | 04:28 |
57 | Abstract contract | 10:31 |
58 | Interface | 08:27 |
59 | Function Accessors | 04:13 |
60 | Metamask Installation | 15:26 |
61 | Metamask Accounts | 11:04 |
62 | [AI] Signing transaction | 14:45 |
63 | [AI] Signing transaction+ | 01:37 |
64 | [AI] nonces | 07:06 |
65 | Add Bulma | 06:44 |
66 | Enable ethereum | 07:33 |
67 | Web3 integration | 09:42 |
68 | Get accounts | 07:33 |
69 | Request accounts | 02:12 |
70 | Get provider | 04:29 |
71 | Connect on click | 11:53 |
72 | Change contracts dir | 03:18 |
73 | Load Contract | 07:32 |
74 | Get deployed contract | 04:13 |
75 | Load Balance | 08:30 |
76 | Add funds | 05:43 |
77 | Reload effect | 04:14 |
78 | Withdraw func | 06:59 |
79 | Handle account changes | 03:54 |
80 | Account Lock | 06:19 |
81 | No Provider | 05:59 |
82 | Provider improvement | 04:07 |
83 | Fix Warnings | 03:54 |
84 | Check contract load | 05:02 |
85 | Chain changed | 03:18 |
86 | [AI] Public-Private key | 09:06 |
87 | [AI] Reverse engineer TX | 16:44 |
88 | [AI] Reverse engineer TX part 2 | 11:39 |
89 | [AI] Reverse engineer TX part 3 | 09:09 |
90 | [AI] Transaction Tree | 13:57 |
91 | [AI] Radix Tree | 13:48 |
92 | [AI] Radix Impl | 14:17 |
93 | [AI] Merkle Patricia | 22:23 |
94 | [AI] Second Node in Patricia tree | 15:40 |
95 | [AI] RLP Merkle | 15:31 |
96 | [AI] FInal Hash | 08:16 |
97 | Next JS app Init | 06:05 |
98 | Tailwind Integration | 07:36 |
99 | Compiler options | 07:04 |
100 | Init Components | 10:44 |
101 | Footer and Navbar | 07:11 |
102 | More Components | 09:54 |
103 | Remaining Index Components | 06:08 |
104 | Course components | 07:23 |
105 | Base layout | 08:06 |
106 | Base Layout Different | 05:56 |
107 | Course Data | 11:55 |
108 | Get course data | 04:17 |
109 | Course List | 05:32 |
110 | Images Improvements | 06:33 |
111 | Course detail page | 05:37 |
112 | Get single course | 06:19 |
113 | Course hero | 07:29 |
114 | Lectures and Keypoints | 08:30 |
115 | Connect button & Image | 06:39 |
116 | web3 provider | 10:56 |
117 | Load Provider | 07:58 |
118 | Provider loading | 02:33 |
119 | Connect to metamask | 09:44 |
120 | isWeb3Loaded | 04:35 |
121 | Loading button | 09:47 |
122 | Disable button | 06:57 |
123 | Open page in new window | 01:06 |
124 | useAccount | 14:34 |
125 | Provider tiny refactor | 02:05 |
126 | Use Hooks Abstraction | 10:27 |
127 | Get accounts | 04:45 |
128 | Navbar account | 07:16 |
129 | useAccount event | 04:40 |
130 | Display address | 04:05 |
131 | Use swr | 12:23 |
132 | Is Admin | 05:03 |
133 | Hash Admin | 03:42 |
134 | Marketplace | 06:05 |
135 | Hide address on Marketplace | 02:58 |
136 | useNetwork | 03:53 |
137 | Network changes | 06:51 |
138 | ChainID | 07:05 |
139 | Course Card | 09:54 |
140 | Target network | 05:48 |
141 | Wrong network message | 07:07 |
142 | Has Finished First Fetch | 08:25 |
143 | Enhance hook | 10:31 |
144 | Setup Hooks fix | 04:48 |
145 | Require Install | 04:07 |
146 | Use Require install | 03:11 |
147 | Card Button | 04:49 |
148 | Course Card Styling | 11:40 |
149 | Modal | 03:13 |
150 | Order Modal | 04:32 |
151 | Modal Content | 03:25 |
152 | Open Modal with Code | 08:29 |
153 | Get ETH Price | 10:49 |
154 | Eth Price | 06:50 |
155 | Price per item | 04:59 |
156 | Eth image | 06:05 |
157 | Can Purchase | 06:41 |
158 | use wallet info | 03:08 |
159 | [AI] Hooks Intuition | 13:10 |
160 | Breadcrumbs | 06:24 |
161 | Marketheader | 08:23 |
162 | Market pages | 11:24 |
163 | Active Link | 08:05 |
164 | Active Link 2 | 09:29 |
165 | Order Price | 07:49 |
166 | Enable Price | 07:28 |
167 | Get form data | 03:50 |
168 | Form status | 08:17 |
169 | Agree TOS | 08:23 |
170 | Component changes + Message | 15:08 |
171 | Loader 1 | 08:37 |
172 | Loader 2 | 06:58 |
173 | Truffle init | 10:52 |
174 | Course hash | 11:47 |
175 | Store Course | 07:51 |
176 | Getter functions | 09:58 |
177 | Check course owner | 10:29 |
178 | Owner of the contract | 04:28 |
179 | Transfer ownership | 12:29 |
180 | Remigrate marketplace | 01:43 |
181 | LoadContract | 08:06 |
182 | Load Contract first solution | 10:15 |
183 | Load Contract second solution | 11:14 |
184 | Load Contract third solution | 12:14 |
185 | Prepare values | 14:17 |
186 | Purchase Course | 11:56 |
187 | UseOwnedCourses Start | 08:13 |
188 | Create web3 state | 04:35 |
189 | Owned Courses | 11:09 |
190 | Get course by hash in hook | 13:46 |
191 | Normalize course | 06:20 |
192 | Display owned courses | 07:34 |
193 | Course Card styles | 08:01 |
194 | Eth rates improvements | 14:06 |
195 | Walletbar improvements | 12:23 |
196 | Navbar and Filter improvements | 08:40 |
197 | Course Status improvement | 06:25 |
198 | Card improvements | 05:51 |
199 | Use owned course | 08:16 |
200 | Check if owner | 04:04 |
201 | Course state messages | 09:49 |
202 | State curriculum | 07:47 |
203 | Check for no courses | 07:17 |
204 | Check isEmpty | 12:11 |
205 | Check if empty account | 07:37 |
206 | Hook improvements | 08:18 |
207 | One time event | 06:30 |
208 | Handle locked in course | 04:48 |
209 | Use managed courses | 06:57 |
210 | Fetch managed courses | 07:44 |
211 | ManagedCourseCard | 11:13 |
212 | Managed card values | 08:59 |
213 | Verify identity | 09:29 |
214 | Verify Proof | 10:29 |
215 | Verification input | 05:57 |
216 | Disable managed courses | 03:29 |
217 | useAdmin | 17:29 |
218 | Activate Course contract | 09:02 |
219 | Preparing test | 12:24 |
220 | Test course by index | 10:21 |
221 | Test course data | 06:29 |
222 | Test activation | 06:37 |
223 | Catch revert | 10:48 |
224 | Transfer ownership test | 10:21 |
225 | Repurchase course test | 02:08 |
226 | Activate course frontend | 09:50 |
227 | Deactivate course | 04:54 |
228 | Repurchase course in contract | 05:44 |
229 | Deactivate course test | 10:28 |
230 | Repurchase course test | 11:32 |
231 | Check buyer balance | 14:19 |
232 | GetGas abstraction | 02:48 |
233 | Check contract balance | 05:55 |
234 | Check balance after deactivate | 07:39 |
235 | Deactivate course impl | 18:28 |
236 | Handle wallet changes | 09:07 |
237 | Lookup table | 09:49 |
238 | Course states display | 08:50 |
239 | Handle Switching Networks | 09:15 |
240 | Set Listeners | 05:05 |
241 | Repurchase button | 02:34 |
242 | Move course state | 12:22 |
243 | Button sizes | 04:58 |
244 | UX Improvements | 04:06 |
245 | Differentiate purchase | 06:59 |
246 | Repurchase working | 06:57 |
247 | Search input | 05:47 |
248 | Search Course | 09:05 |
249 | Search course display | 09:42 |
250 | State Filters | 05:56 |
251 | Display filter courses | 06:41 |
252 | Stop contract | 08:43 |
253 | Withdraw functions | 10:09 |
254 | Test transfer | 06:59 |
255 | Test withdraw | 10:00 |
256 | Emergency withdraw test | 09:55 |
257 | Test Selfdestruct | 06:22 |
258 | Ethereum Changes | 07:25 |
259 | Get Ropsten Ether | 05:08 |
260 | Truffle ropsten config | 13:06 |
261 | Setting up infura | 10:20 |
262 | Generating mnemonic | 12:55 |
263 | Deployment | 14:04 |
264 | [AI] Gas fees | 18:15 |
265 | Transfer ownership | 11:39 |
266 | Test Purchase on Ropsten | 04:48 |
267 | React Toastify | 09:44 |
268 | Improve toast message | 11:56 |
269 | Display toast with tx | 04:47 |
270 | Course in Progress | 14:24 |
271 | Mutate courses | 11:48 |
272 | Mutate repurchase | 08:51 |
273 | Pre-deployment | 07:32 |
274 | Fix Colors | 07:24 |
275 | App Deployment | 09:22 |
276 | Testing Application | 05:09 |
277 | End of Course | 07:25 |