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
✗ Incorrect
Layer 2 solutions reduce transaction fees by processing transactions off-chain or in batches, lowering gas costs.
Which technique helps reduce gas fees by combining multiple transactions into one?
AData encryption
BBatching
CToken staking
DProof of Work
✗ Incorrect
Batching groups multiple transactions to share gas costs, reducing the fee per transaction.
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
✗ Incorrect
Calldata gas cost is proportional to the amount of data sent, so smaller calldata means lower gas fees.
Which of the following is NOT a gas optimization strategy on L2?
AData compression
BBatching transactions
CIncreasing gas price
DOptimizing calldata usage
✗ Incorrect
Increasing gas price raises costs and is not an optimization strategy.
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
✗ Incorrect
L2 processes transactions off-chain or in batches, speeding up confirmation and reducing gas fees.
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
Step 1: Understand calldata vs memory
Calldata is cheaper than memory because it is read-only and does not require copying data.
Step 2: Identify gas saving method
Using calldata for function inputs reduces gas compared to memory or storage.
Final Answer:
Using calldata instead of memory for function inputs -> Option D
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
Step 1: Recall parameter data location keywords
Solidity allows memory, storage, or calldata for reference types in parameters.
Step 2: Identify calldata usage
Calldata is specified explicitly as string calldata for external functions to save gas.
Final Answer:
function foo(string calldata data) external {} -> Option B
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
Step 1: Understand unchecked math
Unchecked math skips overflow and underflow checks, saving gas.
Step 2: Compare gas costs
Skipping checks reduces gas cost compared to normal safe math operations.
Final Answer:
Gas cost decreases because overflow checks are skipped -> Option A
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
Step 1: Identify gas cost in arithmetic
Normal addition includes overflow checks increasing gas.
Step 2: Suggest unchecked usage
Wrapping increment in unchecked { count += 1; } saves gas by skipping checks.
Final Answer:
Missing unchecked block for increment -> Option A
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
Step 1: Understand storage slot packing
Multiple small variables like uint8 can fit into one 256-bit slot, saving gas.