Pool Lifecycle
Creating a Pool
Role Required: ROLE_LENDING_POOL_CREATOR Function: LendingPoolManager.createPool()
The Pool Creator specifies:
Number of tranches (1-3)
Tranche ratios (must sum to 100%)
Interest rate per tranche
Desired draw amount
Minimum excess funds percentage
Pool Admin address
The Pool Creator acts as Pool Admin at creation time and can designate another address.
Setting Up Roles
Role Required: ROLE_POOL_ADMIN Function: KasuController.grantLendingPoolRole()
The Pool Admin must assign the following roles for the new pool:
Pool Manager
Manages pool parameters
Pool Funds Manager
Manages finances and losses
Pool Clearing Manager
Executes clearing each epoch
Parameters: lendingPoolAddress, roleHash, accountAddress
Configuring Pool Parameters
Role Required: ROLE_POOL_MANAGER
After roles are assigned, the Pool Manager sets pool parameters:
updateMinimumDepositAmount()
Minimum deposit per tranche
updateMaximumDepositAmount()
Maximum deposit per tranche
updateTrancheInterestRate()
Interest rate per tranche per epoch
updateTrancheDesiredRatios()
Ratio between tranches (sum to 100%)
updateDesiredDrawAmount()
Total capital to deploy into loans
updateMinimumExcessLiquidityPercentage()
Minimum excess funds to maintain
updateTargetExcessLiquidityPercentage()
Target excess funds percentage
Role Required: ROLE_POOL_ADMIN
updateDrawRecipient()
Set the address that receives drawn funds
Depositing First Loss Capital
Role Required: ROLE_POOL_FUNDS_MANAGER Function: LendingPoolManager.depositFirstLossCapital()
Before calling this function, the Pool Funds Manager must approve the USDC amount to be spent by the LendingPoolManager contract.
Once First Loss Capital is deposited, the pool is ready to accept LP deposits.
Pool Operation
During normal operation:
LPs deposit via
requestDeposit()orrequestDepositWithKYC()Clearing executes each epoch (see Clearing Operations)
Funds are drawn to the Draw Recipient after clearing
Pool Funds Manager repays via
repayOwedFunds()(USDC approval required first; owed fees are deducted first)LPs withdraw via
requestWithdrawal(), processed during the next clearing
Deposits and withdrawals submitted during the clearing period are accepted but queued for the next epoch. Cancellations of pending requests are not allowed during the clearing period.
Drawing Capital
The Pool Manager sets the desired draw amount via updateDesiredDrawAmount(). This amount reflects the total owed amount, including any previously drawn capital and accrued interest.
Funds are drawn to the configured Draw Recipient during clearing Step 5. If insufficient deposits exist to meet the desired draw, the Pool Clearing Manager must override the draw amount during clearing configuration.
Stopping a Pool
Role Required: ROLE_POOL_MANAGER Function: LendingPoolManager.stopLendingPool()
Prerequisites: All owed funds must be repaid to the pool.
When stopped:
Interest rate set to 0%
No new draws or deposits accepted
LPs can still submit withdrawal requests
First Loss Capital can be withdrawn after all tranches are repaid
The pool cannot be restarted
Last updated