📖 Scenario: You want to create a simple smart contract on the Ethereum blockchain that stores a number and allows you to update it.
🎯 Goal: Build and deploy a basic smart contract that stores a number and lets you change it.
📋 What You'll Learn
Create a smart contract named SimpleStorage
Add a state variable storedNumber of type uint
Write a function setNumber that updates storedNumber
Write a function getNumber that returns storedNumber
Deploy the contract and call getNumber to see the stored value
💡 Why This Matters
🌍 Real World
Smart contracts are programs that run on blockchains to automate agreements and store data securely.
💼 Career
Understanding how to write and deploy smart contracts is essential for blockchain developers and jobs in decentralized finance (DeFi) and NFTs.
Progress0 / 4 steps
1
Create the smart contract and state variable
Write a Solidity contract named SimpleStorage with a public state variable storedNumber of type uint initialized to 0.
Blockchain / Solidity
Hint
Start by declaring the contract and a public unsigned integer variable initialized to zero.
2
Add a function to update the stored number
Inside the SimpleStorage contract, add a public function named setNumber that takes a uint parameter called newNumber and sets storedNumber to newNumber.
Blockchain / Solidity
Hint
Write a function that takes a number and updates the storedNumber variable.
3
Add a function to read the stored number
Inside the SimpleStorage contract, add a public view function named getNumber that returns a uint and returns the value of storedNumber.
Blockchain / Solidity
Hint
Create a function that returns the current stored number without changing state.
4
Deploy and test the contract
Deploy the SimpleStorage contract on a test network or local blockchain. Then call setNumber(42) and afterwards call getNumber() to print the stored number.
Blockchain / Solidity
Hint
Use Remix IDE or a local blockchain like Hardhat to deploy and test your contract. Call setNumber(42) then getNumber() to see 42.
Practice
(1/5)
1. What does deploying a smart contract mean in blockchain?
easy
A. Testing the contract on a local computer only
B. Making the contract code live and usable on the blockchain
C. Writing the contract code in a text editor
D. Deleting the contract from the blockchain
Solution
Step 1: Understand deployment meaning
Deployment means putting the contract code on the blockchain so it can run.
Step 2: Differentiate from writing and testing
Writing is coding, testing is checking locally or on test networks, deployment is live on blockchain.
Final Answer:
Making the contract code live and usable on the blockchain -> Option B
Quick Check:
Deploy = live on blockchain [OK]
Hint: Deployment means contract is live on blockchain [OK]
Common Mistakes:
Confusing deployment with just writing code
Thinking testing is deployment
Believing deployment deletes contracts
2. Which of the following is the correct Solidity syntax to start a simple contract named MyContract?
easy
A. contract MyContract { }
B. class MyContract { }
C. function MyContract() { }
D. contract = MyContract()
Solution
Step 1: Recall Solidity contract declaration
Solidity uses the keyword contract followed by the contract name and braces.
Step 2: Check each option's syntax
contract MyContract { } matches Solidity syntax; others use wrong keywords or formats.
Final Answer:
contract MyContract { } -> Option A
Quick Check:
Solidity contract starts with 'contract' keyword [OK]
Hint: Solidity contracts start with 'contract' keyword [OK]
Common Mistakes:
Using 'class' instead of 'contract'
Writing function instead of contract
Assigning contract like a variable
3. Given this Solidity contract snippet deployed on a test network:
contract Counter {
uint count = 0;
function increment() public {
count += 1;
}
function getCount() public view returns (uint) {
return count;
}
}
If you call increment() twice and then getCount(), what is the output?
medium
A. 0
B. 1
C. 2
D. Error: function not found
Solution
Step 1: Understand contract state changes
Each call to increment() adds 1 to count, starting from 0.
Step 2: Calculate after two increments
After two calls, count becomes 2. getCount() returns this value.
Final Answer:
2 -> Option C
Quick Check:
2 increments = count 2 [OK]
Hint: Each increment adds 1; two increments mean count is 2 [OK]
Common Mistakes:
Forgetting state changes persist on blockchain
Assuming count resets each call
Confusing function names
4. You try to deploy this Solidity contract but get a syntax error:
contract Simple {
uint number
function setNumber(uint num) public {
number = num;
}
}
What is the cause of the error?
medium
A. Missing return type in function
B. Function setNumber must be private
C. Contract name must be lowercase
D. Missing semicolon after uint number
Solution
Step 1: Check Solidity syntax rules
Variable declarations require a semicolon at the end.
Step 2: Identify missing semicolon
uint number line misses a semicolon, causing syntax error.
Final Answer:
Missing semicolon after uint number -> Option D
Quick Check:
Missing semicolon = syntax error [OK]
Hint: Check semicolons after variable declarations [OK]
Common Mistakes:
Thinking function visibility causes syntax error
Believing contract names must be lowercase
Expecting return type for void functions
5. You want to deploy a smart contract that stores user names and their balances. Which approach is best to deploy and test it safely before using real money?
hard
A. Deploy on a test network like Ropsten or Goerli first
B. Deploy directly on the main Ethereum network
C. Write the contract but never deploy it
D. Deploy on a private computer without blockchain
Solution
Step 1: Understand deployment environments
Mainnet uses real money; testnets simulate blockchain without real cost.
Step 2: Choose safe testing method
Deploying on testnets like Ropsten or Goerli lets you test without risking real funds.
Final Answer:
Deploy on a test network like Ropsten or Goerli first -> Option A
Quick Check:
Testnet deployment = safe testing [OK]
Hint: Use test networks to avoid losing real money [OK]
Common Mistakes:
Deploying directly on mainnet without testing
Not deploying at all and missing testing
Using private computer without blockchain for deployment
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.