Bird
Raised Fist0
Blockchain / Solidityprogramming~5 mins

Integer overflow and underflow in Blockchain / Solidity - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
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
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
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
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
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
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

      1. Step 1: Understand unsigned integer limits

        Unsigned integers start at 0 and go up to a max value (like 2^256-1 in Solidity).
      2. Step 2: What happens when max is exceeded?

        When the value goes above max, it wraps around to 0, causing integer overflow.
      3. Final Answer:

        It wraps around to zero (integer overflow). -> Option A
      4. 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

      1. Step 1: Identify safe subtraction

        To avoid underflow, subtract only if balance is greater than zero.
      2. 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.
      3. Final Answer:

        if (balance > 0) { balance -= 1; } -> Option C
      4. 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

      1. Step 1: Understand uint8 max value

        uint8 can hold values from 0 to 255. 255 is the max.
      2. Step 2: Add 1 to max value

        Adding 1 causes overflow, wrapping value back to 0.
      3. Final Answer:

        0 -> Option A
      4. 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

      1. Step 1: Analyze subtraction without check

        The function subtracts 1 from count without checking if count is zero.
      2. Step 2: Understand underflow risk

        If count is 0, subtracting 1 causes underflow, wrapping to max uint value.
      3. Final Answer:

        Underflow if count is 0, wrapping to max uint. -> Option B
      4. 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

      1. Step 1: Understand overflow risk in addition

        Adding tokens can overflow uint256 max value, causing wraparound bugs.
      2. Step 2: Use SafeMath library

        SafeMath's add function checks for overflow and reverts if it happens, preventing bugs.
      3. Step 3: Evaluate other options

        Unchecked addition risks overflow. Subtracting first or converting to int256 does not prevent overflow safely.
      4. Final Answer:

        Use SafeMath library's add function to check overflow. -> Option D
      5. 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 unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard