What is integer overflow in blockchain programming?
Integer overflow happens when a number becomes bigger than the maximum value a variable can hold, causing it to wrap around to a small number.
Click to reveal answer
beginner
What is integer underflow in blockchain programming?
Integer underflow happens when a number becomes smaller than the minimum value a variable can hold, causing it to wrap around to a very large number.
Click to reveal answer
intermediate
Why are integer overflow and underflow dangerous in smart contracts?
They can cause wrong calculations, letting attackers exploit contracts to steal funds or break rules.
Click to reveal answer
intermediate
How can you prevent integer overflow and underflow in Solidity?
Use safe math libraries like OpenZeppelin's SafeMath or Solidity 0.8+ built-in checks that stop overflow and underflow automatically.
Click to reveal answer
intermediate
What happens if integer overflow occurs in a blockchain transaction?
The transaction may produce wrong results or fail, and attackers might exploit this to manipulate balances or contract logic.
Click to reveal answer
What causes integer overflow in blockchain smart contracts?
AUsing floating point numbers
BSubtracting a number smaller than zero
CAdding a number larger than the max value a variable can hold
DCalling a function without parameters
✗ Incorrect
Integer overflow happens when a number exceeds the maximum value a variable can store.
What is a common way to prevent integer overflow in Solidity 0.8+?
ARelying on built-in overflow checks
BUsing SafeMath library
CUsing unchecked blocks only
DAvoiding arithmetic operations
✗ Incorrect
Solidity 0.8+ has built-in checks that automatically prevent overflow and underflow.
What is integer underflow?
AWhen a number is too large to store
BWhen a number is smaller than the minimum value a variable can hold
CWhen a variable is not initialized
DWhen a number is negative in unsigned integers
✗ Incorrect
Integer underflow happens when a number goes below the smallest value a variable can hold.
Why is integer overflow a security risk in blockchain?
AIt can allow attackers to manipulate contract logic or balances
BIt can cause smart contracts to run slower
CIt increases gas fees
DIt makes contracts incompatible with wallets
✗ Incorrect
Attackers can exploit overflow to change balances or contract behavior unfairly.
Which of these is NOT a way to handle integer overflow?
AUsing SafeMath libraries
BUsing Solidity 0.8+ built-in checks
CWriting tests to catch overflow bugs
DIgnoring overflow and hoping for the best
✗ Incorrect
Ignoring overflow is dangerous and not a valid way to handle it.
Explain integer overflow and underflow and why they matter in blockchain smart contracts.
Think about what happens when numbers go beyond their limits.
You got /4 concepts.
Describe methods to prevent integer overflow and underflow in Solidity programming.
Consider tools and language features that help avoid these bugs.
You got /4 concepts.
Practice
(1/5)
1. What happens in blockchain when an unsigned integer variable exceeds its maximum value?
easy
A. It wraps around to zero (integer overflow).
B. It throws an error automatically.
C. It becomes negative.
D. It stays at the maximum value.
Solution
Step 1: Understand unsigned integer limits
Unsigned integers start at 0 and go up to a max value (like 2^256-1 in Solidity).
Step 2: What happens when max is exceeded?
When the value goes above max, it wraps around to 0, causing integer overflow.
Final Answer:
It wraps around to zero (integer overflow). -> Option A
Quick Check:
Unsigned integer overflow = wrap to zero [OK]
Hint: Unsigned integers wrap to zero on overflow [OK]
Common Mistakes:
Thinking overflow throws an error automatically
Assuming value becomes negative
Believing value stays at max
2. Which of the following Solidity code snippets correctly prevents integer underflow when subtracting 1 from a uint variable balance?
easy
A. balance -= 1; require(balance >= 0);
B. balance = balance - 1;
C. if (balance > 0) { balance -= 1; }
D. balance = balance + 1;
Solution
Step 1: Identify safe subtraction
To avoid underflow, subtract only if balance is greater than zero.
Step 2: Check each option
if (balance > 0) { balance -= 1; } checks balance > 0 before subtracting, preventing underflow. The other options either subtract without checking first (allowing underflow) or add instead of subtracting.
Final Answer:
if (balance > 0) { balance -= 1; } -> Option C
Quick Check:
Check before subtracting prevents underflow [OK]
Hint: Check value > 0 before subtracting to avoid underflow [OK]
Common Mistakes:
Not checking before subtracting
Using require after subtraction (too late)
Adding instead of subtracting
3. Consider this Solidity code snippet:
uint8 x = 255;
x += 1;
What is the value of x after execution?
medium
A. 0
B. 1
C. 255
D. 256
Solution
Step 1: Understand uint8 max value
uint8 can hold values from 0 to 255. 255 is the max.
Step 2: Add 1 to max value
Adding 1 causes overflow, wrapping value back to 0.
Final Answer:
0 -> Option A
Quick Check:
uint8 overflow wraps to 0 [OK]
Hint: uint8 max is 255; adding 1 wraps to 0 [OK]
Common Mistakes:
Expecting 256 (out of range)
Expecting value to stay at 255
Confusing with signed integers
4. This Solidity function tries to subtract 1 from count. What is the bug?
function decrement(uint count) public pure returns (uint) {
count -= 1;
return count;
}
medium
A. No bug; works fine.
B. Underflow if count is 0, wrapping to max uint.
C. Syntax error due to missing semicolon.
D. Returns negative number which is invalid.
Solution
Step 1: Analyze subtraction without check
The function subtracts 1 from count without checking if count is zero.
Step 2: Understand underflow risk
If count is 0, subtracting 1 causes underflow, wrapping to max uint value.
Final Answer:
Underflow if count is 0, wrapping to max uint. -> Option B
Quick Check:
Subtracting 1 from 0 causes underflow [OK]
Hint: Check before subtracting to avoid underflow [OK]
Common Mistakes:
Assuming no bug without checks
Thinking Solidity throws error automatically
Confusing underflow with negative return
5. You have a smart contract token balance stored as uint256. You want to safely add tokens without overflow. Which approach is best?
hard
A. Convert to int256 and add.
B. Use unchecked addition: balance += amount;
C. Subtract amount first, then add balance.
D. Use SafeMath library's add function to check overflow.
Solution
Step 1: Understand overflow risk in addition
Adding tokens can overflow uint256 max value, causing wraparound bugs.
Step 2: Use SafeMath library
SafeMath's add function checks for overflow and reverts if it happens, preventing bugs.
Step 3: Evaluate other options
Unchecked addition risks overflow. Subtracting first or converting to int256 does not prevent overflow safely.
Final Answer:
Use SafeMath library's add function to check overflow. -> Option D
Quick Check:
SafeMath add prevents overflow [OK]
Hint: Use SafeMath add to prevent overflow safely [OK]
Common Mistakes:
Using unchecked addition risking overflow
Trying to subtract before adding
Converting to signed int without checks
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.