✨ Overview
The aim is to automate the process of harvesting and reinvesting rewards for users who deposit tokens into liquidity pools on Starknet, thereby simplifying the user experience and boosting yields.
🔑 Key Features
Automated Reward Harvesting and Reinvestment
- Automation with Keeper: Utilize a keeper to automate the process of harvesting rewards and reinvesting them. This means users only need to deposit tokens once, and the system will automatically handle the harvesting of rewards and reinvestment of STRK or any other applicable tokens.
- Efficiency: Automating these processes ensures rewards are harvested and reinvested as soon as possible, maximizing yield and reducing the manual effort required by users.
Simplified User Interface
- Deposit Function: A straightforward function allowing users to deposit funds into the vault.
- Withdraw Function: A function that enables users to withdraw their initial deposits along with any rewards earned, simplifying the user’s interaction with the system.
➕ Additional Features
- Future Token Consideration: While there are no current plans to issue our own token, this could be a feature considered for future development. This token could be used to enhance the functionality of the platform or provide additional incentives to users.
🎡 User Interface (UI)
-
Deposit Function
User-Friendly: A simple and intuitive interface allowing users to deposit their tokens into the vault with minimal effort.
Visibility: Users can easily see their deposited amounts and track their investments within the vault.
-
Withdraw Function
Easy Withdrawals: Users can withdraw their initial deposits along with any accrued rewards effortlessly.
Transparency: The interface will clearly display the amount available for withdrawal, including the user's share of the rewards.
This project focuses on improving the user experience on Starknet by enabling users to automatically reinvest their rewards, thereby enhancing yields. By automating the complex processes of reward harvesting and reinvestment, the project aims to make participating in liquidity pools more accessible and profitable for users.
🛠️ Technical Details
We have created a vault contract that allows users to farm their STRK tokens by depositing their funds into the STRK-ETH pool, claiming the STRK rewards and depositing them back into the pool to compound these rewards. The vault is a partial implementation of the ERC-4626 standard that tracks the user's shares of the vault.
We are using a keeper that harvests the funds for all the users every two weeks, when the rewards are freed. This way, the user only needs to take care of the deposit and the withdrawal.
Tools used
- Cairo
- Starknet Foundry
- Starkscan
- React
Nostra Pool Interface
- Function Interfaces: Create function interfaces using the ABI from Starkscan to interact with Nostra pools. This will enable seamless integration and communication with the pools to manage deposits, withdrawals, and reward harvesting.
Local Testing Environment
- Fork Mainnet: Set up a local testing environment by forking the mainnet. This allows for testing and development in a controlled environment that closely mirrors the live network.
- Testing Contracts: Deploy contracts to the local testnet and conduct comprehensive testing to ensure reliability and security before moving to the mainnet.
Vault Accounting Design
- Simplified ERC-4626: Design the vault's accounting system using a simplified version of ERC-4626 tailored for Cairo. This will handle the tracking of user shares, the overall pool balance, and the accurate distribution of rewards.
- Efficient Tracking: Implement efficient methods for tracking deposits, withdrawals, and the compounding of rewards to ensure transparency and accuracy in the vault's operations.
Keeper Integration
- Automate Reward Harvesting: Identify and integrate a keeper service compatible with Starknet to automate the harvesting of rewards. This ensures that rewards are harvested and reinvested without manual intervention, optimizing yield.