KSU Locking & Loyalty

Locking KSU for rKSU: lock durations and their multipliers, bonus KSU, the loyalty levels these set, fee distribution, bonus APY and emergency exit.

The KSU token (ERC-20, symbol: KSU, supply: 1B) is the native token of the Kasu ecosystem. Locking KSU tokens grants rKSU (non-transferable receipt tokens), which determine loyalty level, fee share, and bonus APY. KSU locking does not require KYC.

Locking Mechanics#

Anyone holding KSU tokens can lock them via KSULocking.lock() or KSULocking.lockWithPermit() for a predefined duration. Upon locking:

  1. Bonus KSU tokens are added to the position (from the Bonus Locking Program supply)
  2. rKSU tokens are minted based on the total locked amount and duration

Upon expiration, the user calls KSULocking.unlock() to retrieve their KSU (including bonus tokens).

rKSU Multipliers#

Lock DurationrKSU Multiplier
30 days0.05x (5%)
180 days0.25x (25%)
360 days0.50x (50%)
720 days1.00x (100%)

Example: Locking 100 KSU for 360 days mints 50 rKSU.

Bonus KSU Multipliers#

A portion of the KSU supply is allocated to the Bonus Locking Program. Bonus tokens are locked alongside the user's position:

Lock DurationBonus Multiplier
30 days0.00x (0%)
180 days0.10x (10%)
360 days0.25x (25%)
720 days0.70x (70%)

Example: Locking 1,000 KSU for 360 days adds 250 bonus KSU, resulting in 1,250 KSU locked. The rKSU minted is 1,250 * 0.50 = 625 rKSU.

Loyalty Levels#

A Liquidity Provider's loyalty level determines their priority during clearing. The level is derived from the ratio of rKSU value to total deposits:

lockingLendingRatio = user_rKSU * KSU_price_in_USDC / (deposit + pending_deposit_USDC)
Loyalty LevelThreshold
Level 0Default (no locking required)
Level 1lockingLendingRatio >= 1% and < 5%
Level 2lockingLendingRatio >= 5%

The system supports up to 10 configurable loyalty levels. Thresholds are set via SystemVariables.setLoyaltyThresholds().

Loyalty levels are recalculated each epoch before clearing by calling UserManager.batchCalculateUserLoyaltyLevels().

Special cases:

  • Withdrawal requests outstanding for 5+ epochs automatically receive Loyalty Level 2
  • Force Withdrawals receive a non-public priority level above Level 2

Fee Distribution#

KSU lockers receive a pro-rata share of Ecosystem Fees based on their rKSU balance. Anyone can call KSULocking.emitFees() to distribute accrued fees, and lockers claim their share via KSULocking.claimFees().

Fees are only distributed to lockers who have KSU locked at the time of repayment.

Bonus APY#

Liquidity Providers with active KSU locks receive additional APY on their lending positions, paid in KSU tokens:

Loyalty LevelBonus APY
Level 10.1% of active USDC
Level 20.2% of active USDC

Emergency Withdraw#

The Kasu Admin can call KSULocking.emergencyWithdraw() to forcibly unlock all users' KSU positions. This is a safety mechanism for critical exploit scenarios.