Fixed Term Deposits
Locking tranche shares for a fixed number of epochs at a guaranteed rate: configuration, the lock itself, withdrawal at maturity, and who may use it.
Fixed term deposits allow Liquidity Providers to lock their tranche shares for a specified number of epochs in exchange for a guaranteed interest rate. This mechanism provides yield certainty regardless of future interest rate changes.
How It Works#
- The Pool Admin creates fixed term deposit configurations for a lending pool, specifying: tranche, lock duration (in epochs), and a fixed interest rate
- A Liquidity Provider with an active deposit in the matching tranche locks their tranche shares into a fixed term position
- During each clearing, the system adjusts the LP's tranche shares to match the guaranteed rate — minting additional shares if the fixed rate exceeds the pool rate, or burning shares if it is lower
- When the lock duration expires, the position is unlocked and tranche shares are returned to the user
Configuration#
Each lending pool can have multiple fixed term deposit configurations. Each configuration specifies:
| Parameter | Type | Description |
|---|---|---|
tranche | address | The tranche this configuration applies to |
epochLockDuration | uint16 | Number of epochs the deposit is locked |
epochInterestRate | uint64 | Guaranteed interest rate per epoch |
fixedTermDepositStatus | enum | DISABLED, WHITELISTED_ONLY, or EVERYONE |
Configurations are created by the Pool Admin via FixedTermDeposit.addLendingPoolTrancheFixedTermDeposit().
Locking#
Fixed term deposits can be locked in two ways:
- Automatically: During clearing, when a deposit is accepted into a tranche that has an active fixed term config, the deposit is automatically locked (
lockFixedTermDepositAutomatically) - Manually: A user with existing tranche shares can lock them into a fixed term position (
lockFixedTermDepositManually)
When a fixed term deposit is locked, the user's tranche shares are tracked separately from regular deposits.
Withdrawal#
- The user can request early withdrawal via
LendingPoolManager.requestFixedTermDepositWithdrawal(). This triggers a Force Withdrawal during the next clearing, processed with the highest priority - If no withdrawal is requested, the position automatically unlocks after the lock duration ends and tranche shares are returned to the user
- Withdrawal requests can be canceled within a configurable number of epochs before unlock (
cancelRequestEpochsInAdvance)
Allowlisting#
Fixed term deposit configurations can be restricted to specific users via the fixedTermDepositsAllowlist. The Pool Admin can manage this list through updateFixedTermDepositAllowlist().
Contracts Involved#
FixedTermDeposit.sol— Core logic for fixed term deposit management and clearingLendingPoolManager.sol— User-facing entry point for fixed term deposit operationsIFixedTermDeposit.sol— Interface defining all structs, events, and errors