Bird
Raised Fist0
Blockchain / Solidityprogramming~5 mins

Flash loans 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 a flash loan in blockchain?
A flash loan is a type of uncollateralized loan that must be borrowed and repaid within a single blockchain transaction.
Click to reveal answer
beginner
Why do flash loans not require collateral?
Because the loan is repaid within the same transaction, the blockchain ensures the lender either gets the money back or the whole transaction fails, so no collateral is needed.
Click to reveal answer
beginner
What happens if a flash loan is not repaid in the same transaction?
The entire transaction is reverted, meaning all actions are undone and the loan is never given out.
Click to reveal answer
intermediate
Give a simple example use case of a flash loan.
A trader can borrow funds to quickly buy an asset, sell it at a higher price, repay the loan, and keep the profit, all within one transaction.
Click to reveal answer
intermediate
What is a key risk associated with flash loans?
Flash loans can be used for attacks like price manipulation or exploiting vulnerabilities in smart contracts.
Click to reveal answer
What ensures a flash loan is safe for the lender?
AThe borrower provides collateral
BThe loan must be repaid within the same transaction
CThe loan is insured by a third party
DThe loan is given only to trusted users
Which of these is NOT a characteristic of a flash loan?
ALoan duration can be several days
BNo collateral required
CRepaid within one transaction
DUsed for arbitrage or quick trades
What happens if a flash loan is not repaid on time?
AThe transaction is reverted
BThe lender loses money
CThe borrower is blacklisted
DThe loan is converted to a regular loan
Flash loans are mostly used for:
ALong-term investments
BBuying real estate
CQuick arbitrage opportunities
DPaying salaries
Which is a potential risk of flash loans?
AThey require high collateral
BThey are only available to banks
CThey have long repayment periods
DThey can be used to exploit smart contract bugs
Explain how a flash loan works in a blockchain transaction.
Think about what happens if the loan is not paid back immediately.
You got /3 concepts.
    Describe one practical use case and one risk of flash loans.
    Consider both benefits and dangers of instant loans.
    You got /2 concepts.

      Practice

      (1/5)
      1. What is the main feature of a flash loan in blockchain?
      easy
      A. You can borrow funds without collateral but must repay within the same transaction
      B. You borrow funds with collateral and repay anytime
      C. You borrow funds and repay after 30 days
      D. You borrow funds only for staking purposes

      Solution

      1. Step 1: Understand flash loan basics

        Flash loans allow borrowing without collateral but require repayment in the same transaction.
      2. Step 2: Compare options

        Only You can borrow funds without collateral but must repay within the same transaction correctly states no collateral and instant repayment.
      3. Final Answer:

        You can borrow funds without collateral but must repay within the same transaction -> Option A
      4. Quick Check:

        Flash loan = no collateral + instant repayment [OK]
      Hint: Flash loans = borrow now, repay instantly [OK]
      Common Mistakes:
      • Thinking collateral is required
      • Assuming repayment can be delayed
      • Confusing flash loans with regular loans
      2. Which of the following is the correct Solidity function signature to implement a flash loan callback?
      easy
      A. function repayLoan(uint256 amount) external
      B. function flashLoan(address borrower, uint256 amount) public
      C. function startLoan(address asset, uint256 amount) external returns (bool)
      D. function executeOperation(address[] calldata assets, uint256[] calldata amounts, uint256[] calldata premiums, address initiator, bytes calldata params) external returns (bool)

      Solution

      1. Step 1: Identify the standard flash loan callback

        The Aave protocol requires implementing executeOperation with specific parameters.
      2. Step 2: Match function signature

        function executeOperation(address[] calldata assets, uint256[] calldata amounts, uint256[] calldata premiums, address initiator, bytes calldata params) external returns (bool) matches the exact signature needed for flash loan execution and repayment.
      3. Final Answer:

        function executeOperation(address[] calldata assets, uint256[] calldata amounts, uint256[] calldata premiums, address initiator, bytes calldata params) external returns (bool) -> Option D
      4. Quick Check:

        executeOperation signature = function executeOperation(address[] calldata assets, uint256[] calldata amounts, uint256[] calldata premiums, address initiator, bytes calldata params) external returns (bool) [OK]
      Hint: Flash loan callback is always executeOperation with specific params [OK]
      Common Mistakes:
      • Using incorrect function names
      • Missing required parameters
      • Wrong return type
      3. Given this simplified Solidity snippet inside executeOperation:
      uint256 amountOwing = amounts[0] + premiums[0];
      IERC20(assets[0]).approve(address(LENDING_POOL), amountOwing);
      return true;
      What does this code do?
      medium
      A. Transfers the loan amount to the borrower
      B. Approves the lending pool to withdraw the loan plus fee for repayment
      C. Withdraws the loan amount from the lending pool
      D. Rejects the flash loan request

      Solution

      1. Step 1: Understand the approval call

        The code approves the lending pool contract to spend the loan amount plus premium from this contract.
      2. Step 2: Interpret the purpose

        This approval is necessary so the lending pool can pull repayment automatically after the operation.
      3. Final Answer:

        Approves the lending pool to withdraw the loan plus fee for repayment -> Option B
      4. Quick Check:

        approve() = allow repayment withdrawal [OK]
      Hint: approve() lets lending pool pull repayment [OK]
      Common Mistakes:
      • Confusing approve with transfer
      • Thinking it sends funds to borrower
      • Missing the premium fee in amount
      4. Identify the error in this simplified flash loan executeOperation snippet:
      function executeOperation(address[] calldata assets, uint256[] calldata amounts, uint256[] calldata premiums, address initiator, bytes calldata params) external returns (bool) {
          uint256 amountOwing = amounts[0] + premiums[0];
          IERC20(assets[0]).transferFrom(msg.sender, address(this), amountOwing);
          return true;
      }
      medium
      A. Incorrect function parameters
      B. Missing return statement
      C. Using transferFrom instead of approve for repayment
      D. Not calling the lending pool to borrow funds

      Solution

      1. Step 1: Analyze repayment method

        The code tries to pull repayment using transferFrom from msg.sender, which is incorrect.
      2. Step 2: Correct repayment approach

        Flash loans require approving the lending pool to pull funds, not transferring from msg.sender.
      3. Final Answer:

        Using transferFrom instead of approve for repayment -> Option C
      4. Quick Check:

        Repayment needs approve(), not transferFrom() [OK]
      Hint: Repay by approve(), not transferFrom() [OK]
      Common Mistakes:
      • Confusing transferFrom with approve
      • Forgetting to approve lending pool
      • Misunderstanding msg.sender role
      5. You want to use a flash loan to perform arbitrage between two decentralized exchanges (DEXs). Which sequence correctly describes the steps inside executeOperation to profit and repay the loan?
      hard
      A. Borrow funds -> Buy low on DEX1 -> Sell high on DEX2 -> Approve repayment -> Return true
      B. Borrow funds -> Approve repayment -> Buy low on DEX1 -> Sell high on DEX2 -> Return true
      C. Approve repayment -> Borrow funds -> Buy low on DEX1 -> Sell high on DEX2 -> Return true
      D. Buy low on DEX1 -> Borrow funds -> Sell high on DEX2 -> Approve repayment -> Return true

      Solution

      1. Step 1: Understand flash loan flow

        You first borrow funds, then use them to buy low on one DEX and sell high on another to gain profit.
      2. Step 2: Approve repayment and finish

        After trading, approve the lending pool to pull the loan plus fee, then return true to complete.
      3. Final Answer:

        Borrow funds -> Buy low on DEX1 -> Sell high on DEX2 -> Approve repayment -> Return true -> Option A
      4. Quick Check:

        Arbitrage flow = borrow -> trade -> approve -> return [OK]
      Hint: Trade first, then approve repayment [OK]
      Common Mistakes:
      • Approving repayment before trading
      • Trying to trade before borrowing
      • Not approving repayment at all