Overview
Elevation Groups (also called E-Mode or Efficiency Mode) are isolated risk tiers within Kamino Lending that allow for higher leverage and capital efficiency when borrowing and depositing correlated assets. Each elevation group has its own risk parameters and borrow limits.ElevationGroup Structure
Defined instate/lending_market.rs:363:
id: Unique identifier (1-32).ELEVATION_GROUP_NONE(0) means no groupltv_pct: Maximum loan-to-value ratio (e.g., 90 = 90%)liquidation_threshold_pct: Liquidation threshold (e.g., 93 = 93%)debt_reserve: The reserve that must be borrowed in this groupmax_reserves_as_collateral: Limits collateral diversityallow_new_loans: Enables/disables new borrowing
Lending Market Configuration
Storage (state/lending_market.rs:98):
state/lending_market.rs:389):
Managing Elevation Groups
Getting an Elevation Group
Implementation (state/lending_market.rs:274):
Setting an Elevation Group
Implementation (state/lending_market.rs:286):
state/lending_market.rs:402):
Checking if New Loans are Allowed
Borrow Limits per Elevation Group
Elevation groups enforce strict borrowing rules:Same Elevation Group Check
Implementation (lending_market/lending_operations.rs:246):
Borrowing Enabled Checks
Elevation Group Borrowing (lending_market/lending_operations.rs:248):
lending_market/lending_operations.rs:249):
Debt Tracking
Reserve Fields (state/reserve.rs:92):
lending_market/lending_operations.rs:357):
disable_usage_as_collateral_outside_emode
This reserve-level setting controls whether a reserve can be used as collateral outside of elevation groups. Configuration (state/reserve.rs:1377):
Enforcement
During Deposit (lending_market/lending_operations.rs:414):
- Reserve has
disable_usage_as_coll_outside_emodeenabled - Obligation is not in an elevation group (
ELEVATION_GROUP_NONE) - Obligation has existing debt
Use Case
This is typically used for correlated assets like:- LSTs (Liquid Staking Tokens) that should only be used with stablecoin borrowing
- Stablecoins that should only be borrowed against similar stablecoins
- Wrapped assets that should only be used within their ecosystem
Configuration Examples
Example 1: Stablecoin Elevation Group
Example 2: LST (Liquid Staking Token) Group
Example 3: Isolated Lending Pool
Setting Elevation Group via Update Config
Update Mode (lending_market/lending_operations.rs:2284):
update_reserve_config instruction.
Working with Elevation Groups
Entering an Elevation Group
Users enter elevation groups by:- Depositing collateral from reserves in the group
- Borrowing from the group’s
debt_reserve
Constraints While in a Group
Collateral Restrictions (lending_market/lending_operations.rs:422):
lending_market/lending_operations.rs:246):
Exiting an Elevation Group
To exit:- Repay all borrows
- Withdraw all collateral
- Obligation returns to
ELEVATION_GROUP_NONE
Checking Elevation Group Status
Best Practices
- Asset Correlation: Only group highly correlated assets (e.g., stablecoins, LSTs)
- Risk Parameters: Set conservative LTV/liquidation thresholds based on historical price volatility
- Collateral Limits: Use
max_reserves_as_collateralto limit risk from too many collateral types - Isolation: Use elevation groups to isolate risky assets from the main lending pool
- Monitoring: Track debt levels per elevation group to identify concentration risk
Advanced: Debt Tracking Across Groups
Reserves maintain separate debt counters for each elevation group:- Per-group borrow limits: Limit exposure to specific elevation groups
- Risk isolation: Track how much is borrowed in vs out of elevation groups
- Utilization monitoring: Understand which groups are driving reserve utilization
Errors
InvalidElevationGroup:- Elevation group ID doesn’t exist
- ID must be 1-32
- Attempting to set ID 0 (reserved)
- Invalid configuration parameters
- Reserve requires elevation group membership
- Enable
disable_usage_as_coll_outside_emode
- Borrowing would exceed group’s limits
- Check available capacity in the group