4/5
# `FlashLev.open` exercise Write your code inside the [`FlashLev` contract](https://github.com/Cyfrin/defi-reth/blob/main/foundry/src/exercises/FlashLev.sol). This exercise is designed to test your understanding of how to structure a smart contract function for initializing a leveraged position using a flash loan. ```solidity function open(OpenParams calldata params) external { // Write your code here } ``` ## Instructions 1. **Transfer collateral from `msg.sender`** - Transfer collateral from `msg.sender` into this contract. > **Hint:** Look into the struct `OpenParams` to find out how much collateral to pull in. 2. **Initiate a flash loan** - Encode flash loan data into `FlashLoanData`. - Call `flashLoan` to initiate a flash loan. > **Hint:** Look inside `AaveHelper` to see how to call the function `flashLoan`. 3. **Check health factor** - Require that the health factor after the position is created is greater than or equal the minimum health factor specified in the input `OpenParams.minHealthFactor`. > **Hint:** Look inside `AaveHelper` to see how to get the health factor. # `_flashLoanCallback` ```solidity function _flashLoanCallback( address token, uint256 amount, uint256 fee, bytes memory params ) internal override { // Write your code here } ``` ## Instructions 1. **Implement logic for opening a position** - Implement flash loan callback logic for opening a position. > **Hint:** > > - Look into `AaveHelper` for how to supply collateral and borrow stablecoin. > - Look into `SwapHelper` for how to swap tokens. 2. **Repay flash loan** - Approve Aave to repay flash loan amount. > **Hint:** > > - Address to approve is `pool`, initialized inside `AaveHelper`. > - Amount to approve for repayment is amount borrowed + fee.
FlashLev.open
exerciseWrite your code inside the FlashLev
contract.
This exercise is designed to test your understanding of how to structure a smart contract function for initializing a leveraged position using a flash loan.
Transfer collateral from msg.sender
Transfer collateral from msg.sender
into this contract.
Hint: Look into the struct
OpenParams
to find out how much collateral to pull in.
Initiate a flash loan
Encode flash loan data into FlashLoanData
.
Call flashLoan
to initiate a flash loan.
Hint: Look inside
AaveHelper
to see how to call the functionflashLoan
.
Check health factor
Require that the health factor after the position is created is greater than or equal the minimum health factor specified in the input OpenParams.minHealthFactor
.
Hint: Look inside
AaveHelper
to see how to get the health factor.
_flashLoanCallback
Implement logic for opening a position
Implement flash loan callback logic for opening a position.
Hint:
Look into
AaveHelper
for how to supply collateral and borrow stablecoin.Look into
SwapHelper
for how to swap tokens.
Repay flash loan
Approve Aave to repay flash loan amount.
Hint:
Address to approve is
pool
, initialized insideAaveHelper
.Amount to approve for repayment is amount borrowed + fee.
An insightful guide to implementing `FlashLev.open` and `_flashLoanCallback` This lesson focuses on structuring a smart contract function for initializing a leveraged position using a flash loan. It covers transferring collateral, initiating a flash loan, checking health factors, opening a position, and repaying the flash loan.
Previous lesson
Previous
Next lesson
Next
Give us feedback
Stay in the loop with the latest Rocket Pool updates and connect with over 5,000 developers in the community.
Course Overview
About the course
Rocket Pool rETH staking, yield mechanisms, trading options, and contract architecture
How to distribute rewards and calculate rETH/ETH exchange rate
How to acquire and redeem rETH
Integrating rETH into DeFi protocols like AAVE V3
How to how to create leveraged ETH positions using rETH
How to provide rETH as liquidity to Balancer and Aura
Getting the USD price of rETH using Rocket Pool NAV oracle
Re-staking with EigenLayer
DeFi Developer
$75,000 - $200,000 (avg. salary)
Smart Contract Engineer
$100,000 - $150,000 (avg. salary)
Web3 developer
$60,000 - $150,000 (avg. salary)
Smart Contract Auditor
$100,000 - $200,000 (avg. salary)
Blockchain Financial Analyst
$100,000 - $150,000 (avg. salary)
Web3 Developer Relations
$85,000 - $125,000 (avg. salary)
Last updated on July 8, 2025
Duration: 4min
Duration: 48min
Duration: 57min
Duration: 30min
Duration: 7min
Duration: 23min
Duration: 6min
Course Overview
About the course
Rocket Pool rETH staking, yield mechanisms, trading options, and contract architecture
How to distribute rewards and calculate rETH/ETH exchange rate
How to acquire and redeem rETH
Integrating rETH into DeFi protocols like AAVE V3
How to how to create leveraged ETH positions using rETH
How to provide rETH as liquidity to Balancer and Aura
Getting the USD price of rETH using Rocket Pool NAV oracle
Re-staking with EigenLayer
DeFi Developer
$75,000 - $200,000 (avg. salary)
Smart Contract Engineer
$100,000 - $150,000 (avg. salary)
Web3 developer
$60,000 - $150,000 (avg. salary)
Smart Contract Auditor
$100,000 - $200,000 (avg. salary)
Blockchain Financial Analyst
$100,000 - $150,000 (avg. salary)
Web3 Developer Relations
$85,000 - $125,000 (avg. salary)
Last updated on July 8, 2025