Skip to content

Commit c7b850f

Browse files
committed
add lesson 2 final quiz + clean up
1 parent e393ebd commit c7b850f

File tree

4 files changed

+284
-8
lines changed

4 files changed

+284
-8
lines changed

pages/lessons/projects/2.mdx

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,12 @@ import { LessonHeader } from '../../../components/mdx/LessonHeader'
2626
## What are we buidling?
2727

2828
In this project we will build a basic NFT smart contract, that will serve us as
29-
the backbone or foundation for almost any future NFT project.
29+
the backbone or foundation for almost any future NFT project.
30+
31+
<SideDrawer buttonText="What do you already know about NFTs?" title="Build on your previous knowledge">
32+
<Question question="question-1" />
33+
</SideDrawer>
34+
<br/>
3035

3136
![thatd.be.great.jpeg](/assets/lessons/2/img_1.jpeg)
3237

@@ -60,7 +65,7 @@ By the end of this lesson we are going to learn a lot of things. A simple breakd
6065
- Use images and files for our NFTs
6166
- (Optional) Create your own images and files and store them in a decentralized way
6267
- Deploy our Smart Contract to a Testnet Blockchain
63-
- Create (or “mint”) our very own NFT
68+
- *Mint*, i.e. create our very own NFT
6469
- See our NFT in a public marketplace
6570

6671
## Set up your environment
@@ -210,6 +215,13 @@ widely used and fully tested and audited.
210215
<SideDrawer buttonText="More on Open Zeppelin">
211216
<OpenZeppelin/>
212217
</SideDrawer>
218+
<br/>
219+
220+
Just before you go .....
221+
<SideDrawer buttonText="What's your opinion?" title="Coding is cool, but we want our contracts water tight">
222+
<Question question="question-2"/>
223+
</SideDrawer>
224+
<br/>
213225

214226
## Let’s start coding!
215227

@@ -869,5 +881,13 @@ and [Opensea](https://testnets.opensea.io/collection/d-d-academy)
869881

870882
![opensea.png](/assets/lessons/2/img_20.png)
871883

872-
And that's it! You have created your own NFT collection from scratch! What a
873-
superstar!!
884+
Wow, you have created your own NFT collection from scratch. What a superstar! You have learned tonnes of new concepts and code - that is really impressive! And now you're almost ready to test yourself a little bit more.
885+
886+
But first, we want you to go and 'touch some grass'. So why don't you scroll to the top and set the pomodoro timer, and when you come back after your well earned rest, take the quiz. Breathe and enjoy.
887+
888+
<br/>
889+
<Quiz quiz="quiz-lesson-2" />
890+
<br/>
891+
892+
Congratulations on your results. You're now a supreme open-sourcerer! See you in the next lesson, where you will be adding to your knowledge of creating ERC721s, by creating *tiered NFTs*. See you there....
893+
<br/><br/><br/>

utils/questions/question-2.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"question": "What would you say is the most important aspect of OpenZeppelin contracts?",
3+
"options": [
4+
{
5+
"answer": "Their team did an amazing job with them"
6+
},
7+
{
8+
"answer": "They have been rigorously audited",
9+
"correct": true
10+
},
11+
{
12+
"answer": "Most of the original and best known Ethereum protocols use them "
13+
}
14+
]
15+
}

utils/questions/question-test.json

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,23 @@
11
{
2-
"question": "Which of these properties does Ethereum have?",
2+
"question": "Choose what NFTs can do? Multiple answers possible.",
33
"options": [
44
{
5-
"answer": "Permissioned"
5+
"answer": "Give access to a DAO",
6+
"correct": true
7+
},
8+
{
9+
"answer": "Do the dishes"
610
},
711
{
8-
"answer": "Trustless",
12+
"answer": "Represent a concert ticket",
913
"correct": true
1014
},
1115
{
12-
"answer": "Decentralized",
16+
"answer": "Point to storage of an album",
1317
"correct": true
18+
},
19+
{
20+
"answer": "Replicate one NFT with another"
1421
}
1522
]
1623
}

utils/quizzes/quiz-lesson-2.json

Lines changed: 234 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,234 @@
1+
{
2+
"title": "Quiz: Lesson 2",
3+
"questions": [
4+
{
5+
"question": "How do you create a new folder in a CLI?",
6+
"options": [
7+
{
8+
"answer": "touch"
9+
},
10+
{
11+
"answer": "rmdir"
12+
},
13+
{
14+
"answer": "mkdir",
15+
"correct": true
16+
},
17+
{
18+
"answer": "mv"
19+
}
20+
]
21+
},
22+
{
23+
"question": "What is Hardhat?",
24+
"options": [
25+
{
26+
"answer": "An alternative for Remix"
27+
},
28+
{
29+
"answer": " A local blockchain for developing smart contracts",
30+
"correct": true
31+
},
32+
{
33+
"answer": " A browser IDE"
34+
},
35+
{
36+
"answer": "Safety apparel"
37+
}
38+
]
39+
},
40+
{
41+
"question": "Which command do you use to navigate in a CLI console?",
42+
"options": [
43+
{
44+
"answer": "pwd"
45+
},
46+
{
47+
"answer": "cp"
48+
},
49+
{
50+
"answer": "cd",
51+
"correct": true
52+
},
53+
{
54+
"answer": "ls"
55+
}
56+
]
57+
},
58+
{
59+
"question": "What makes dependencies important for development?",
60+
"options": [
61+
{
62+
"answer": "They let us transfer information from one server to another"
63+
},
64+
{
65+
"answer": " They provide support when we get errors in our code"
66+
},
67+
{
68+
"answer": "They give us code that we don’t already have in our codebase, but we need to run it",
69+
"correct": true
70+
}
71+
]
72+
},
73+
{
74+
"question": "What purpose do import statements serve in a Solidity smart contract?",
75+
"options": [
76+
{
77+
"answer": "pulls the contract into the next produced block in the blockchain"
78+
},
79+
{
80+
"answer": "connects the contract to the front-end via web3"
81+
},
82+
{
83+
"answer": "references libraries or contracts stored in other locations",
84+
"correct": true
85+
},
86+
{
87+
"answer": "imports fine wine and cheeses from the Bourdeaux region of France"
88+
}
89+
]
90+
},
91+
{
92+
"question": "What are the ‘security’ advantages of using OpenZeppelin contracts?",
93+
"options": [
94+
{
95+
"answer": "Reduce the amount of code we write ourselves"
96+
},
97+
{
98+
"answer": "Reduce the surface area of code to potentially hack in our contracts",
99+
"correct": true
100+
},
101+
{
102+
"answer": "Make it easier for humans to collaborate on security"
103+
},
104+
{
105+
"answer": "Make contracts more interoperable"
106+
}
107+
]
108+
},
109+
{
110+
"question": "In the contract declaration statement, what is ERC20 or ERC 721 referring to?",
111+
"options": [
112+
{
113+
"answer": "determines the type of token being created, in the case of ERC20, it is a token with functions allowing it to be exchanged as a digital asset",
114+
"correct": true
115+
},
116+
{
117+
"answer": "the Ethereum Records Communication feature to communicate with the blockchain"
118+
},
119+
{
120+
"answer": "determines which blockchain the token will be deployed to (i.e. Ethereum mainnet, Polygon, zkSync, etc.)"
121+
},
122+
{
123+
"answer": "the auto-delete function and which path the command is sent to"
124+
}
125+
]
126+
},
127+
{
128+
"question": "What does the OpenZeppelin Wizard do?",
129+
"options": [
130+
{
131+
"answer": " Lets you mint and burn tokens"
132+
},
133+
{
134+
"answer": "Lets you choose modular contracts",
135+
"correct": true
136+
},
137+
{
138+
"answer": "Gives you a range of access permissions"
139+
}
140+
]
141+
},
142+
{
143+
"question": "What is the function of a smart contract constructor?",
144+
"options": [
145+
{
146+
"answer": "acts as the erector of the contract transferred to a chain deployer"
147+
},
148+
{
149+
"answer": "the constructor adds parameters to the contract such as its 'name', 'symbol', 'baseURI' or 'totalSupply'",
150+
"correct": true
151+
},
152+
{
153+
"answer": "allows the Hardhat tooling protocol to design the contract for EVM approval"
154+
},
155+
{
156+
"answer": "sets safety guidelines for smart contract development"
157+
}
158+
]
159+
},
160+
{
161+
"question": "What does the 'ipfsBaseURI' refer to?",
162+
"options": [
163+
{
164+
"answer": "a node on the IPFS network that holds the keys to the network"
165+
},
166+
{
167+
"answer": "the IPFS hash address where the image for the NFT is stored",
168+
"correct": true
169+
},
170+
{
171+
"answer": "a playground on the IPFS network where NFT minters can interact with their NFTs"
172+
},
173+
{
174+
"answer": "the fire base node for the IPFS network"
175+
}
176+
]
177+
},
178+
{
179+
"question": "Who or what is msg.sender in initiating transactions?",
180+
"options": [
181+
{
182+
"answer": "the sender node in the IPFS network"
183+
},
184+
{
185+
"answer": "the postal service in the IPFS metaverse"
186+
},
187+
{
188+
"answer": "the amount of ETH gas sent to initiate a transaction"
189+
},
190+
{
191+
"answer": "the account address that calls a function",
192+
"correct": true
193+
}
194+
]
195+
},
196+
{
197+
"question": "Name two examples of dependencies",
198+
"options": [
199+
{
200+
"answer": "ethers.js",
201+
"correct": true
202+
},
203+
{
204+
"answer": "npm"
205+
},
206+
{
207+
"answer": "OpenZeppelin",
208+
"correct": true
209+
},
210+
{
211+
"answer": "node.js"
212+
}
213+
]
214+
},
215+
{
216+
"question": "In our package.json file, which three keys can we find from the key/value pairs?",
217+
"options": [
218+
{
219+
"answer": "ISC, keywords, index"
220+
},
221+
{
222+
"answer": "author, echo, [ ]"
223+
},
224+
{
225+
"answer": "license, main, version",
226+
"correct": true
227+
},
228+
{
229+
"answer": "description, name, projectnft"
230+
}
231+
]
232+
}
233+
]
234+
}

0 commit comments

Comments
 (0)