Bird
Raised Fist0
Blockchain / Solidityprogramming~5 mins

Require, assert, and revert in Blockchain / Solidity - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does the require statement do in a smart contract?

require checks a condition and stops execution if the condition is false. It refunds remaining gas and returns an error message.

Click to reveal answer
intermediate
How is assert different from require?

assert is used to check for conditions that should never be false. If it fails, it consumes all remaining gas and indicates a serious error.

Click to reveal answer
beginner
What happens when revert is called in a smart contract?

revert immediately stops execution, undoes all changes, and refunds remaining gas. It can include a custom error message.

Click to reveal answer
intermediate
When should you use require versus assert?

Use require to check user inputs or external conditions. Use assert to check for internal errors or invariants that should never fail.

Click to reveal answer
advanced
Why is gas refunded when require or revert fails but not when assert fails?

require and revert indicate expected errors and refund gas to save users money. assert signals a critical bug, so it consumes all gas to highlight the problem.

Click to reveal answer
Which statement immediately stops execution and refunds remaining gas if a condition is false?
Acontinue
Bassert
Crevert
Drequire
Which statement is used to check for conditions that should never happen and consumes all gas if it fails?
Aassert
Brequire
Crevert
Dthrow
What does revert do in a smart contract?
AContinues execution ignoring errors
BStops execution and refunds gas with an optional error message
CConsumes all gas and stops execution
DLogs a warning but continues
When should you use require in your smart contract?
ATo check user inputs and external conditions
BTo check internal invariants
CTo consume all gas on error
DTo log events
Why does assert consume all remaining gas on failure?
ABecause it is used for user input validation
BBecause it refunds gas to the user
CBecause it signals a critical bug that should never happen
DBecause it logs an error
Explain the differences between require, assert, and revert in smart contracts.
Think about when each is used and how gas is handled.
You got /3 concepts.
    When should you use require instead of assert in your code?
    Consider the source of the error.
    You got /2 concepts.

      Practice

      (1/5)
      1. Which statement best describes the purpose of require in Solidity smart contracts?
      easy
      A. It checks user inputs or conditions and stops execution with an error message if the condition is false.
      B. It is used to check for internal errors that should never happen in the code.
      C. It immediately stops execution without any error message.
      D. It logs information but does not stop the contract execution.

      Solution

      1. Step 1: Understand the role of require

        require is used to validate inputs or conditions before continuing execution.
      2. Step 2: Compare with other statements

        assert checks internal errors, and revert stops execution with a message, but require is specifically for input validation.
      3. Final Answer:

        It checks user inputs or conditions and stops execution with an error message if the condition is false. -> Option A
      4. Quick Check:

        require = input check with error [OK]
      Hint: Require is for input checks and stops if false [OK]
      Common Mistakes:
      • Confusing require with assert for internal errors
      • Thinking require does not stop execution
      • Believing require logs info without stopping
      2. Which of the following is the correct syntax to use assert in Solidity?
      easy
      A. assert(condition);
      B. assert(condition, "Error message");
      C. assert {condition};
      D. assert condition;

      Solution

      1. Step 1: Recall assert syntax

        In Solidity, assert takes only a condition without an error message.
      2. Step 2: Check each option

        assert(condition, "Error message"); wrongly includes an error message, C and D have invalid syntax.
      3. Final Answer:

        assert(condition); -> Option A
      4. Quick Check:

        assert syntax = assert(condition); [OK]
      Hint: Assert takes only a condition, no message [OK]
      Common Mistakes:
      • Adding error messages to assert
      • Using braces or missing parentheses
      • Writing assert as a statement without parentheses
      3. What will happen when the following Solidity code runs?
      function test(uint x) public {
          require(x > 10, "x must be greater than 10");
          assert(x != 15);
          if (x == 20) {
              revert("x cannot be 20");
          }
      }

      Input: x = 15
      medium
      A. Execution stops at require with error 'x must be greater than 10'.
      B. Execution stops at revert with error 'x cannot be 20'.
      C. Execution stops at assert because x equals 15.
      D. Function completes successfully without errors.

      Solution

      1. Step 1: Check require condition

        Input x=15 is greater than 10, so require passes.
      2. Step 2: Check assert condition

        assert(x != 15) fails because x is 15, so execution stops here.
      3. Final Answer:

        Execution stops at assert because x equals 15. -> Option C
      4. Quick Check:

        assert fails if condition false [OK]
      Hint: Assert fails if condition is false, stopping execution [OK]
      Common Mistakes:
      • Thinking require fails for x=15
      • Assuming revert triggers for x=15
      • Believing function runs fully without errors
      4. Identify the error in this Solidity function:
      function check(uint value) public {
          require(value > 0, "Value must be positive");
          assert(value < 100, "Value too large");
      }
      medium
      A. The require statement is missing a message string.
      B. There is no error; the code is correct.
      C. The function should use revert instead of require.
      D. The assert statement incorrectly includes an error message.

      Solution

      1. Step 1: Review require usage

        Require correctly uses a condition and an error message.
      2. Step 2: Review assert usage

        Assert does not accept an error message; including one causes a syntax error.
      3. Final Answer:

        The assert statement incorrectly includes an error message. -> Option D
      4. Quick Check:

        Assert has no message parameter [OK]
      Hint: Assert never takes error messages, only conditions [OK]
      Common Mistakes:
      • Adding messages to assert
      • Confusing require and revert usage
      • Assuming no error in assert syntax
      5. You want to write a Solidity function that checks if a user has enough balance to withdraw an amount. If the balance is insufficient, it should stop with a clear error message. If an unexpected internal error occurs, it should stop immediately without a message. Which combination of require, assert, and revert is best to use?
      hard
      A. Use assert for balance check and require for internal errors.
      B. Use require to check balance and assert for internal errors; no need for revert.
      C. Use revert to check balance with message and assert for internal errors.
      D. Use only revert for both balance check and internal errors.

      Solution

      1. Step 1: Identify correct use of require

        Require is ideal for checking user inputs like balance with error messages.
      2. Step 2: Identify correct use of assert

        Assert is for internal errors that should never happen, stopping immediately without messages.
      3. Step 3: Consider revert usage

        Revert can be used for complex checks but is not necessary here if require and assert cover cases.
      4. Final Answer:

        Use require to check balance and assert for internal errors; no need for revert. -> Option B
      5. Quick Check:

        Require for inputs, assert for internal errors [OK]
      Hint: Require for inputs, assert for internal errors, revert optional [OK]
      Common Mistakes:
      • Using assert for input validation
      • Using revert unnecessarily for simple checks
      • Mixing assert and require roles
      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