Bird
Raised Fist0
Blockchain / Solidityprogramming~5 mins

Gas optimization for L2 in Blockchain / Solidity - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

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 'gas' in the context of Layer 2 (L2) blockchain solutions?
Gas is the fee required to perform transactions or execute smart contracts on a blockchain. In L2, gas costs are usually lower than on Layer 1 because transactions are processed off-chain or in batches.
Click to reveal answer
beginner
Why is gas optimization important for Layer 2 solutions?
Gas optimization reduces transaction costs and improves user experience by making operations cheaper and faster, which encourages more usage of L2 networks.
Click to reveal answer
intermediate
Name one common technique to optimize gas usage on L2.
Batching multiple transactions together to reduce the total gas cost per transaction is a common gas optimization technique on L2.
Click to reveal answer
intermediate
How does data compression help in gas optimization on L2?
Data compression reduces the size of transaction data that needs to be posted on-chain, lowering the gas fees because less data consumes less gas.
Click to reveal answer
intermediate
What role do calldata and calldata gas costs play in L2 gas optimization?
Calldata is the data sent with a transaction. Optimizing calldata size and usage reduces gas costs because calldata gas is charged based on data size.
Click to reveal answer
What is a primary benefit of using Layer 2 solutions for gas optimization?
ALower transaction fees compared to Layer 1
BIncreased block size on Layer 1
CMore complex smart contracts
DSlower transaction confirmation
Which technique helps reduce gas fees by combining multiple transactions into one?
AData encryption
BBatching
CToken staking
DProof of Work
Why is minimizing calldata size important for gas optimization on L2?
ABecause calldata stores smart contract code
BBecause calldata is free
CBecause calldata increases block time
DBecause calldata gas cost depends on data size
Which of the following is NOT a gas optimization strategy on L2?
AData compression
BBatching transactions
CIncreasing gas price
DOptimizing calldata usage
How does Layer 2 improve transaction speed alongside gas optimization?
ABy processing transactions off-chain or in batches
BBy increasing Layer 1 block size
CBy requiring more confirmations
DBy using slower consensus algorithms
Explain how batching transactions helps reduce gas costs on Layer 2.
Think about how sharing costs works in real life, like carpooling.
You got /3 concepts.
    Describe why optimizing calldata size is important for gas optimization on L2.
    Imagine sending a letter: smaller letters cost less to send.
    You got /3 concepts.

      Practice

      (1/5)
      1. Which of the following is a common method to reduce gas costs on Layer 2 blockchains?
      easy
      A. Using loops with many iterations
      B. Increasing the block size limit
      C. Adding more storage variables to the contract
      D. Using calldata instead of memory for function inputs

      Solution

      1. Step 1: Understand calldata vs memory

        Calldata is cheaper than memory because it is read-only and does not require copying data.
      2. Step 2: Identify gas saving method

        Using calldata for function inputs reduces gas compared to memory or storage.
      3. Final Answer:

        Using calldata instead of memory for function inputs -> Option D
      4. Quick Check:

        Calldata is cheaper than memory [OK]
      Hint: Choose calldata for inputs to save gas on L2 [OK]
      Common Mistakes:
      • Thinking increasing block size reduces gas
      • Assuming more storage variables save gas
      • Using loops without optimization
      2. Which Solidity syntax correctly declares a function parameter to use calldata for gas optimization on L2?
      easy
      A. function foo(string memory data) external {}
      B. function foo(string calldata data) external {}
      C. function foo(string storage data) external {}
      D. function foo(string data) external {}

      Solution

      1. Step 1: Recall parameter data location keywords

        Solidity allows memory, storage, or calldata for reference types in parameters.
      2. Step 2: Identify calldata usage

        Calldata is specified explicitly as string calldata for external functions to save gas.
      3. Final Answer:

        function foo(string calldata data) external {} -> Option B
      4. Quick Check:

        Calldata keyword used correctly [OK]
      Hint: Use 'calldata' keyword for external function parameters [OK]
      Common Mistakes:
      • Using memory instead of calldata for external inputs
      • Omitting data location keyword
      • Using storage incorrectly in parameters
      3. What will be the gas cost difference when using unchecked math in Solidity on L2 compared to normal math?
      medium
      A. Gas cost decreases because overflow checks are skipped
      B. Gas cost increases due to extra checks
      C. Gas cost stays the same
      D. Gas cost is unpredictable

      Solution

      1. Step 1: Understand unchecked math

        Unchecked math skips overflow and underflow checks, saving gas.
      2. Step 2: Compare gas costs

        Skipping checks reduces gas cost compared to normal safe math operations.
      3. Final Answer:

        Gas cost decreases because overflow checks are skipped -> Option A
      4. Quick Check:

        Unchecked math saves gas by skipping checks [OK]
      Hint: Unchecked math skips checks, lowering gas [OK]
      Common Mistakes:
      • Assuming unchecked math adds overhead
      • Believing gas cost is unchanged
      • Ignoring overflow risks
      4. Given this Solidity snippet on L2, what is the main issue causing higher gas usage?
      uint256 public count;
      function increment() external {
        count = count + 1;
      }
      medium
      A. Missing unchecked block for increment
      B. Using public variable instead of private
      C. Function should be view instead of external
      D. No issue, code is optimal

      Solution

      1. Step 1: Identify gas cost in arithmetic

        Normal addition includes overflow checks increasing gas.
      2. Step 2: Suggest unchecked usage

        Wrapping increment in unchecked { count += 1; } saves gas by skipping checks.
      3. Final Answer:

        Missing unchecked block for increment -> Option A
      4. Quick Check:

        Unchecked block reduces gas for safe increments [OK]
      Hint: Use unchecked for simple increments to save gas [OK]
      Common Mistakes:
      • Thinking public visibility affects gas here
      • Confusing external with view function
      • Assuming code is already optimized
      5. You want to optimize a Layer 2 contract that stores multiple small variables. Which approach best reduces gas usage?
      hard
      A. Use dynamic arrays for all variables
      B. Store each variable in separate storage slots for clarity
      C. Pack multiple uint8 variables into a single uint256 storage slot
      D. Avoid using calldata and always copy to memory

      Solution

      1. Step 1: Understand storage slot packing

        Multiple small variables like uint8 can fit into one 256-bit slot, saving gas.
      2. Step 2: Compare storage strategies

        Separating variables wastes slots; dynamic arrays add overhead; calldata usage unrelated here.
      3. Final Answer:

        Pack multiple uint8 variables into a single uint256 storage slot -> Option C
      4. Quick Check:

        Storage packing reduces gas by slot sharing [OK]
      Hint: Pack small vars into one slot to save gas [OK]
      Common Mistakes:
      • Using separate slots wastes gas
      • Overusing dynamic arrays increases cost
      • Ignoring calldata benefits in storage