Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is storage in blockchain?
Storage is the permanent place where data is saved on the blockchain. It keeps information even after the program stops running.
Click to reveal answer
beginner
What is memory (or memory usage) in blockchain smart contracts?
Memory is a temporary space used while the contract runs. It holds data only during execution and is cleared afterward.
Click to reveal answer
intermediate
Why is storage more expensive than memory in blockchain?
Storage costs more because it saves data permanently on the blockchain, which requires more resources and space. Memory is temporary and cheaper.
Click to reveal answer
intermediate
Give an example of when to use storage vs memory in a smart contract.
Use storage to save user balances permanently. Use memory for temporary calculations or data that only matters during one function call.
Click to reveal answer
intermediate
How does using storage vs memory affect blockchain performance?
Using storage slows down the contract and costs more gas because it writes to the blockchain. Using memory is faster and cheaper but data is lost after execution.
Click to reveal answer
Which of the following is true about storage in blockchain?
AIt keeps data permanently on the blockchain.
BIt is cleared after each function call.
CIt is cheaper than memory.
DIt only holds temporary variables.
✗ Incorrect
Storage saves data permanently, unlike memory which is temporary.
What happens to data stored in memory after a smart contract function finishes?
AIt is cleared and lost.
BIt is copied to storage automatically.
CIt is saved permanently.
DIt is sent to other contracts.
✗ Incorrect
Memory data exists only during execution and is cleared afterward.
Why should you minimize storage usage in smart contracts?
ABecause storage is temporary.
BBecause storage is slower and costs more gas.
CBecause storage is free.
DBecause storage deletes data automatically.
✗ Incorrect
Storage operations cost more gas and slow down execution.
Which type of data is best stored in memory during contract execution?
ATransaction history.
BUser account balances.
CContract ownership info.
DTemporary calculations.
✗ Incorrect
Temporary calculations only need memory during execution.
What is a key difference between storage and memory in blockchain?
AStorage is volatile, memory is permanent.
BMemory is permanent, storage is temporary.
CStorage is permanent, memory is temporary.
DBoth are permanent.
✗ Incorrect
Storage keeps data permanently; memory is temporary during execution.
Explain the difference between storage and memory usage in blockchain smart contracts.
Think about how long data lasts and the cost to save it.
You got /5 concepts.
Describe why minimizing storage usage is important in blockchain development.
Consider cost and speed when saving data.
You got /4 concepts.
Practice
(1/5)
1. Which of the following best describes storage in blockchain smart contracts?
easy
A. Permanent data saved on the blockchain that persists between function calls.
B. Temporary data used only during a function execution and discarded afterward.
C. Data stored off-chain for faster access.
D. Encrypted data that cannot be accessed by the contract.
Solution
Step 1: Understand storage purpose
Storage holds data permanently on the blockchain, so it remains after function execution.
Step 2: Compare with memory
Memory is temporary and only lasts during function execution, unlike storage.
Final Answer:
Permanent data saved on the blockchain that persists between function calls. -> Option A
Quick Check:
Storage = permanent data [OK]
Hint: Storage keeps data after functions finish, memory does not [OK]
Common Mistakes:
Confusing memory with storage permanence
Thinking storage is temporary
Assuming storage is off-chain
Believing storage is encrypted by default
2. Which of the following is the correct way to declare a variable in Solidity that uses memory?
easy
A. uint memory[] numbers;
B. uint[] storage numbers;
C. memory uint[] numbers;
D. uint[] memory numbers;
Solution
Step 1: Recall Solidity syntax for memory arrays
In Solidity, the correct syntax is type[] memory variableName; for memory arrays.
Step 2: Check each option
uint[] memory numbers; matches the correct syntax: uint[] memory numbers;. Others have wrong order or keywords.
Final Answer:
uint[] memory numbers; -> Option D
Quick Check:
Memory arrays use 'type[] memory name' syntax [OK]
Hint: Memory keyword comes after type and brackets in Solidity [OK]
Common Mistakes:
Placing 'memory' before type
Using 'storage' instead of 'memory'
Incorrect array syntax
Missing brackets for array type
3. What will be the output of the following Solidity function?
pragma solidity ^0.8.0;
contract Test {
uint[] storageArray;
function addAndReturn() public returns (uint) {
uint[] memory tempArray = new uint[](1);
tempArray[0] = 5;
storageArray.push(10);
return tempArray[0];
}
}
medium
A. 0
B. 10
C. 5
D. Compilation error
Solution
Step 1: Analyze tempArray usage
The function creates a memory array with one element set to 5, then returns that element.
Step 2: Understand storageArray effect
storageArray.push(10) adds 10 to storage but does not affect the returned value.
Final Answer:
5 -> Option C
Quick Check:
Return value from memory array = 5 [OK]
Hint: Return value from memory array, storage change doesn't affect output [OK]
Common Mistakes:
Confusing storage push with return value
Expecting storageArray value as output
Thinking memory array persists after function
Assuming compilation error due to storage usage
4. Identify the error in this Solidity function that tries to copy a storage array to memory:
pragma solidity ^0.8.0;
contract Example {
uint[] storageArray;
function copyArray() public view returns (uint[] memory) {
uint[] memory tempArray = storageArray;
return tempArray;
}
}
medium
A. Cannot assign storage array directly to memory array.
B. Function must be non-view to modify storage.
C. Missing visibility specifier for storageArray.
D. Memory arrays cannot be returned from functions.
Solution
Step 1: Understand storage to memory assignment
In Solidity, you cannot directly assign a storage array to a memory array variable.
Step 2: Identify correct copying method
You must copy elements manually or use a loop to transfer data from storage to memory.
Final Answer:
Cannot assign storage array directly to memory array. -> Option A
Quick Check:
Direct storage to memory assignment is invalid [OK]
Hint: Storage arrays need manual copying to memory arrays [OK]
Common Mistakes:
Trying direct assignment from storage to memory
Ignoring need for loops to copy arrays
Assuming view functions can modify storage
Believing memory arrays can't be returned
5. You want to write a Solidity function that temporarily modifies an array for calculations without changing the stored data. Which is the best approach?
hard
A. Declare the array as memory in the contract state.
B. Copy the storage array to a memory array, modify the memory array, then discard it.
C. Use a storage pointer to the array and modify it temporarily.
D. Modify the storage array directly and revert changes after calculations.
Solution
Step 1: Understand temporary modification needs
To avoid changing stored data, use a memory copy for temporary changes.
Step 2: Evaluate options
Copy the storage array to a memory array, modify the memory array, then discard it. copies storage to memory, modifies memory, and discards changes, preserving storage.
Step 3: Reject incorrect options
A declares memory in state (invalid syntax); B risks permanent changes if revert fails; C modifies storage directly.
Final Answer:
Copy the storage array to a memory array, modify the memory array, then discard it. -> Option B
Quick Check:
Use memory copy for temporary changes [OK]
Hint: Use memory copy to avoid changing stored data permanently [OK]
Common Mistakes:
Modifying storage directly for temporary needs
Trying to declare storage variables as memory in contract