📖 Scenario: You are creating a simple smart contract for a blockchain platform. This contract will store and manage a message that anyone can read or update. This is like a digital bulletin board where people can post and change a note.
🎯 Goal: Build a smart contract that stores a message string, allows updating it, and lets anyone read the current message.
📋 What You'll Learn
Create a string variable called message with an initial value
Add a function called setMessage that updates the message
Add a function called getMessage that returns the current message
Print the initial message and the updated message
💡 Why This Matters
🌍 Real World
Smart contracts are programs that run on blockchains to automate agreements and actions without middlemen.
💼 Career
Understanding smart contracts is key for blockchain developers, enabling them to build decentralized apps and services.
Progress0 / 4 steps
1
DATA SETUP: Create the initial message variable
Create a string variable called message and set it to "Hello, Blockchain!".
Blockchain / Solidity
Hint
Use a string type variable named message and assign the text inside double quotes.
2
CONFIGURATION: Add a function to update the message
Add a public function called setMessage that takes a string parameter called newMessage and sets message to newMessage.
Blockchain / Solidity
Hint
Define a public function named setMessage with one string input that assigns the input to message.
3
CORE LOGIC: Add a function to read the message
Add a public function called getMessage that returns the current message string.
Blockchain / Solidity
Hint
Define a public function named getMessage that returns the message variable.
4
OUTPUT: Display the initial and updated messages
Print the initial message, then call setMessage with "Welcome to Smart Contracts!", and finally print the updated message by calling getMessage.
Blockchain / Solidity
Hint
Use System.Console.WriteLine to print messages. Call setMessage with the new text before printing the updated message.
Practice
(1/5)
1. What is a smart contract in blockchain technology?
easy
A. A type of cryptocurrency wallet
B. A program that runs on a blockchain to automate agreements
C. A physical contract signed by two parties
D. A blockchain mining algorithm
Solution
Step 1: Understand the definition of smart contracts
Smart contracts are computer programs that run on blockchains to automate and enforce agreements without middlemen.
Step 2: Compare options with the definition
Only A program that runs on a blockchain to automate agreements describes a program on blockchain automating agreements. Other options describe unrelated concepts.
Final Answer:
A program that runs on a blockchain to automate agreements -> Option B
Quick Check:
Smart contract = automated blockchain program [OK]
Hint: Smart contracts are code on blockchain, not physical papers [OK]
Common Mistakes:
Confusing smart contracts with physical contracts
Thinking smart contracts are wallets or mining tools
Assuming smart contracts require middlemen
2. Which of the following is the correct way to start a simple smart contract in Solidity?
easy
A. contract MyContract { }
B. class MyContract { }
C. function MyContract() { }
D. module MyContract { }
Solution
Step 1: Recall Solidity syntax for defining contracts
In Solidity, smart contracts start with the keyword contract followed by the contract name and braces.
Step 2: Check each option's syntax
contract MyContract { } uses contract keyword correctly. Options A, B, and C use keywords from other languages or incorrect syntax.
Final Answer:
contract MyContract { } -> Option A
Quick Check:
Solidity contracts start with 'contract' keyword [OK]
Hint: Solidity contracts start with 'contract' keyword, not class or function [OK]
Common Mistakes:
Using 'class' instead of 'contract' keyword
Confusing functions with contract declarations
Using module or other unrelated keywords
3. What will be the output of this Solidity function when called?
function getValue() public pure returns (uint) { return 5 + 3; }
medium
A. Error
B. 53
C. 8
D. 0
Solution
Step 1: Analyze the function logic
The function returns the sum of 5 and 3, which is 8.
Step 2: Understand Solidity return behavior
The function is marked pure and returns a uint, so it will output the calculated value 8 without errors.
Final Answer:
8 -> Option C
Quick Check:
5 + 3 = 8 [OK]
Hint: Add numbers inside function to get output quickly [OK]
Common Mistakes:
Thinking '5 + 3' concatenates as '53'
Expecting runtime error due to missing state
Assuming default return is zero
4. Identify the error in this Solidity smart contract snippet:
contract Test {
uint value;
function setValue(uint _value) public {
value = _value
}
}
medium
A. Missing semicolon after assignment
B. Incorrect function visibility
C. Variable 'value' should be public
D. Function name should be 'set_value'
Solution
Step 1: Check syntax line by line
The line value = _value is missing a semicolon at the end, which is required in Solidity.
Step 2: Verify other parts
Function visibility 'public' is correct, variable can be private, and function naming is valid. So only missing semicolon is error.
Final Answer:
Missing semicolon after assignment -> Option A
Quick Check:
Semicolons end statements in Solidity [OK]
Hint: Check for missing semicolons after statements [OK]
Common Mistakes:
Ignoring missing semicolon errors
Thinking function visibility is wrong
Assuming variable must be public
5. You want to create a smart contract that stores user balances and allows deposits only if the amount is positive. Which Solidity code snippet correctly enforces this?
hard
A. function deposit(uint amount) public {
if(amount >= 0) {
balances[msg.sender] = amount;
}
}
B. function deposit(uint amount) public {
balances[msg.sender] += amount;
}
C. function deposit(int amount) public {
balances[msg.sender] += amount;
}
D. function deposit(uint amount) public {
require(amount > 0, "Amount must be positive");
balances[msg.sender] += amount;
}
Solution
Step 1: Check input validation for positive amount
function deposit(uint amount) public {
require(amount > 0, "Amount must be positive");
balances[msg.sender] += amount;
} uses require(amount > 0) to ensure only positive deposits are accepted.
Step 2: Compare other options for correctness
function deposit(uint amount) public {
if(amount >= 0) {
balances[msg.sender] = amount;
}
} allows zero and overwrites balance instead of adding. function deposit(int amount) public {
balances[msg.sender] += amount;
} uses signed int allowing negative deposits. function deposit(uint amount) public {
balances[msg.sender] += amount;
} lacks any check.
Final Answer:
function deposit(uint amount) public {
require(amount > 0, "Amount must be positive");
balances[msg.sender] += amount;
} -> Option D
Quick Check:
Use require() to enforce positive deposits [OK]
Hint: Use require() to check conditions before updating state [OK]
Common Mistakes:
Not validating input amounts
Using signed integers for balances
Overwriting balances instead of adding
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.