Bird
Raised Fist0
Blockchain / Solidityprogramming~5 mins

Gas optimization with storage in Blockchain / Solidity - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is 'gas' in blockchain smart contracts?
Gas is the fee required to perform operations on a blockchain like Ethereum. It measures the computational effort needed to execute transactions or smart contracts.
Click to reveal answer
beginner
Why is storage expensive in smart contracts?
Storing data on the blockchain uses permanent space and requires more gas because it affects all nodes. Reading and writing storage costs more gas than using temporary memory.
Click to reveal answer
intermediate
How can packing variables reduce gas costs?
Packing multiple smaller variables into a single storage slot reduces the number of storage slots used, lowering gas costs because fewer storage operations are needed.
Click to reveal answer
intermediate
What is the benefit of using 'calldata' instead of 'memory' for function parameters?
Using 'calldata' for external function parameters avoids copying data into memory, saving gas because calldata is read-only and cheaper to access.
Click to reveal answer
beginner
Explain why minimizing storage writes saves gas.
Each write to storage costs a lot of gas. Minimizing writes by updating storage only when necessary or batching changes reduces gas consumption significantly.
Click to reveal answer
Which operation generally costs the most gas in a smart contract?
AWriting data to storage
BReading data from memory
CCalling a view function
DUsing local variables
What does 'packing variables' mean in gas optimization?
ACombining multiple small variables into one storage slot
BCompressing data before storing
CUsing fewer functions
DStoring variables in memory instead of storage
Why is 'calldata' cheaper than 'memory' for function inputs?
ACalldata uses less gas to write
BCalldata is stored off-chain
CMemory is slower to access
DCalldata is read-only and does not require copying
Which of these reduces gas cost when updating storage?
AWriting to storage multiple times separately
BUsing global variables instead of local
CBatching multiple updates into one transaction
DAvoiding function modifiers
What is a common practice to save gas when dealing with boolean variables?
AStore booleans in memory only
BPack multiple booleans into one byte
CConvert booleans to strings
DUse separate storage slots for each boolean
Describe three ways to optimize gas costs related to storage in smart contracts.
Think about how data is stored and accessed in smart contracts.
You got /3 concepts.
    Explain why storage operations are more expensive than memory operations in blockchain smart contracts.
    Consider the difference between temporary and permanent data.
    You got /3 concepts.

      Practice

      (1/5)
      1. Why is it important to optimize storage usage in blockchain smart contracts?
      easy
      A. Because storage is unlimited and free to use
      B. Because storage variables are faster to access than memory variables
      C. Because storage operations consume more gas, increasing transaction costs
      D. Because storage variables do not affect gas costs

      Solution

      1. Step 1: Understand gas cost of storage

        Storage operations in blockchain smart contracts consume significant gas compared to memory or stack operations.
      2. Step 2: Impact on transaction cost

        Higher gas consumption means higher transaction fees for users interacting with the contract.
      3. Final Answer:

        Because storage operations consume more gas, increasing transaction costs -> Option C
      4. Quick Check:

        Storage gas cost = higher fees [OK]
      Hint: Remember: storage costs gas, so optimize to save money [OK]
      Common Mistakes:
      • Thinking storage is free
      • Confusing storage with memory gas costs
      • Assuming storage is faster than memory
      2. Which of the following Solidity declarations helps reduce gas by optimizing storage usage?
      easy
      A. uint8 public smallNumber; uint8 public anotherSmallNumber;
      B. constant uint256 public MAX_VALUE = 1000;
      C. uint256 public data;
      D. string public name;

      Solution

      1. Step 1: Identify constant usage

        Declaring variables as constant stores their value in bytecode, not storage, saving gas.
      2. Step 2: Compare with other declarations

        Other options use storage variables which consume gas on read/write, unlike constants.
      3. Final Answer:

        constant uint256 public MAX_VALUE = 1000; -> Option B
      4. Quick Check:

        Constants reduce storage gas [OK]
      Hint: Use constants to save storage gas costs [OK]
      Common Mistakes:
      • Assuming all variables cost the same gas
      • Not knowing constants are stored differently
      • Ignoring variable size impact
      3. Consider this Solidity snippet:
      contract Test {
          uint8 a = 1;
          uint8 b = 2;
          uint16 c = 3;
      }

      How many storage slots does this contract use?
      medium
      A. 1 storage slot
      B. 2 storage slots
      C. 3 storage slots
      D. 4 storage slots

      Solution

      1. Step 1: Understand storage slot packing

        Solidity packs variables into 32-byte slots if their sizes fit together.
      2. Step 2: Calculate combined size

        uint8 + uint8 + uint16 = 1 + 1 + 2 = 4 bytes, which fits into one 32-byte slot.
      3. Final Answer:

        1 storage slot -> Option A
      4. Quick Check:

        Small types packed = 1 slot [OK]
      Hint: Pack small variables to fit one storage slot [OK]
      Common Mistakes:
      • Assuming each variable uses one slot
      • Ignoring variable size packing
      • Confusing bytes with slots
      4. Identify the gas optimization mistake in this Solidity code:
      contract Example {
          uint256 public count;
          function increment() public {
              count = count + 1;
          }
      }
      medium
      A. Using uint256 instead of uint8 for small counters
      B. Not marking count as immutable
      C. Using count = count + 1; instead of ++count;
      D. Not using constant for count

      Solution

      1. Step 1: Analyze variable type choice

        Using uint256 for a small counter wastes storage space and gas.
      2. Step 2: Suggest smaller type

        Using uint8 or smaller type packs better and reduces gas cost.
      3. Final Answer:

        Using uint256 instead of uint8 for small counters -> Option A
      4. Quick Check:

        Smaller types save gas [OK]
      Hint: Use smallest uint type needed for counters [OK]
      Common Mistakes:
      • Thinking increment syntax affects gas
      • Confusing constant and immutable usage
      • Ignoring variable size impact
      5. You want to store multiple boolean flags in a contract efficiently. Which approach optimizes gas usage best?
      hard
      A. Use separate bool variables for each flag
      B. Use multiple uint256 variables for each flag
      C. Use an array of bool variables
      D. Use a single uint8 variable and bitwise operations to store flags

      Solution

      1. Step 1: Understand storage cost of booleans

        Each bool uses a full storage slot if declared separately, wasting gas.
      2. Step 2: Use bit packing with uint8

        Storing multiple flags as bits in a single uint8 packs them efficiently, reducing storage slots and gas.
      3. Step 3: Compare other options

        Arrays and multiple uint256 variables consume more storage and gas.
      4. Final Answer:

        Use a single uint8 variable and bitwise operations to store flags -> Option D
      5. Quick Check:

        Bit packing booleans saves gas [OK]
      Hint: Pack booleans into bits using uint types [OK]
      Common Mistakes:
      • Using separate bools wastes storage
      • Assuming arrays are cheaper
      • Ignoring bitwise operations benefits
      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