Looper Vault Module

Overview

Looper is the core contract responsible for automated leverage position management in the protocol. It coordinates CBR and SLF, implementing position creation, yield compounding, repayment, unstaking, reward claiming, and liquidation through WalletInstance and LoopHelper.

How Looper Positions Work

When users open a Looper position, the system follows these steps:

1. Deploy Position Wallet (Wallet Instance)

  • Deploy a lightweight wallet contract specifically for this position to custody collateral and borrowed assets

2. Create Position in CBR

  • Collateralize RWA assets

  • Borrow SLB

  • Create position and save CBR position ID in Looper position information

3. Register Dynamic Interest Lending Position in SLF

  • Call dynamic interest borrowing interface

  • System calculates actual borrowable USDC based on SLB quantity

  • Create SLF position and save SLF position ID in Looper position information

4. Transfer Assets to Wallet Instance

  • User's RWA assets transfer to wallet

  • Borrowed USDC (converted in SLF) transfers to wallet

5. Call LoopHelper to Convert USDC to RWA Assets

  • LoopHelper executes the "borrow—invest—borrow again" cyclic leverage logic

  • Currently uses mint for direct conversion between two assets (testing phase)

6. Risk Control Check & Position Recording

  • Verify position meets safety requirements and leverage ratios

  • Record position in user's portfolio


Functions and Responsibilities

1. Position Configuration Management

Allow protocol administrators to define and update position configurations (LooperConfig):

  • Deposit Token

  • Borrow Token

  • Position logic executor (LoopHelper)

  • Price oracle (Oracle)

  • Maximum borrow rate (maxBorrowRate)

  • Liquidation threshold (liquidationRate)

Bind configurations with corresponding deposit tokens for easy user strategy discovery.

2. Position Lifecycle Management

Create Position (createPosition):

  • Initialize wallet instance (WalletInstance)

  • Create loan in CBR, collateralize deposits and borrow CBRToken

  • Convert CBRToken to liquidity, borrow target tokens in SLF

  • Inject deposits and borrowed tokens into WalletInstance, execute initial investment logic through LoopHelper

  • Check position borrow rate reasonableness

Refresh Position Status (pokePosition):

  • Call WalletInstance and SLF to update yield and debt data

Repay Position (repayForPosition):

  • Support user or third-party position debt repayment

  • Reduce corresponding CBR collateral after repayment

Unstake Assets (callUnstake / callClaimUnstake):

  • Unstake assets by user-specified amounts

  • Support partial assets for debt repayment, remainder returned to user

Extract Yields (callSkim / callClaimRewards):

  • Skim: Extract surplus assets

  • ClaimRewards: Claim reward assets

Position Liquidation (liquidate):

  • Executed by authorized liquidators

  • Force takeover when position borrow rate exceeds liquidation ratio

3. Risk Control & Access Control

Position Rate Check:

  • Use oracle prices to calculate position debt value / collateral value

  • Exceeds maxBorrowRate → Block creation or operations

  • Exceeds liquidationRate → Allow liquidator takeover

Liquidator Management:

  • Protocol administrators can add/remove liquidators

  • Only liquidators can execute position liquidations


Interactions and Dependencies

CBR Module

  • Used for collateral and lending logic (createLoan, repay)

  • Manage collateral and borrowing token ledgers

SLF Module

  • Responsible for borrowing fund pools and dynamic interest rate logic (borrowDynamic, decreaseDynamicBorrow, pokeUserDynamic)

  • Provide position debt data

WalletInstance

  • Independent wallet contract for each position, isolating position assets

  • Execute position logic (investment, unstaking, reward claiming)

LoopHelper

  • Strategy execution logic (e.g., leverage compounding)

  • Called by LooperCore to operate assets within WalletInstance

Oracle Interface

  • Provide collateral and borrowing token prices

  • Used to calculate position borrow rates

Last updated

Was this helpful?