Interest & Fees

Interest Accrual

Interest accrues to lending pool tranches on a per-epoch basis. During Step 1 of each clearing, the lending pool mints USDC-IOUs proportional to the tranche interest rates and distributes them to each tranche.

Each tranche has an independently configurable interest rate, set by the Pool Manager via LendingPoolManager.updateTrancheInterestRate(). Interest rate changes take effect after a configurable epoch delay (default: 4 epochs). The Kasu Admin can override this delay.

Interest Rate Format

Interest rates use 18-decimal precision (INTEREST_RATE_FULL_PERCENT = 1e18 = 100%):

Value
Interest Rate

100000000000000000

10% per epoch

10000000000000000

1% per epoch

1000000000000000

0.1% per epoch

100000000000000

0.01% per epoch

The Kasu Admin can set a maximum interest rate via SystemVariables.setMaxTrancheInterestRate().

Performance Fee

A configurable performance fee is taken from tranche interest during clearing. The fee is calculated as a percentage of the gross interest accrued.

Current configuration: 10% performance fee (FULL_PERCENT = 100_00, value: 10_00)

The performance fee is split between:

Component
Description

Ecosystem Fee

Distributed to KSU token lockers pro-rata by rKSU balance

Protocol Fee

Retained by the Kasu Protocol wallet

The fee split is configured via SystemVariables.setFeeRates(). The performance fee percentage is set via SystemVariables.setPerformanceFee().

Fee Payment Flow

  1. During clearing Step 1, the performance fee is calculated on the epoch's interest

  2. The fee amount is recorded as Owed Fees on the lending pool

  3. After clearing, LendingPool.payOwedFees() attempts to pay fees from excess funds

  4. Fees are also deducted when the Pool Funds Manager calls LendingPoolManager.repayOwedFunds()

  5. The Fee Manager distributes ecosystem fees to the KSULocking contract for rKSU holders

  6. Protocol fees are stored in the Fee Manager until claimed by the protocol fee claimer

Percentage Format

Pool-level percentages (tranche ratios, excess liquidity) use FULL_PERCENT = 100_00 (100% with 2 decimal places):

Value
Percentage

10

0.1%

100

1%

1000

10%

1550

15.5%

10000

100%

Contracts Involved

  • SystemVariables.sol — Performance fee, fee rates, max interest rate, loyalty thresholds

  • FeeManager.sol — Fee collection and distribution (ecosystem fees to rKSU holders, protocol fees to claimers)

  • LendingPool.sol — Owed fees tracking, fee payment from excess funds

  • KSULocking.sol — Ecosystem fee distribution to lockers

Last updated