Anatomy of an elevation group
Per-reserve eMode opt-in
A reserve only appears in the groups it explicitly opts into.- SDK
- API
- Kamino CLI
Configure an elevation group via SDK
Elevation groups live on the market’sLendingMarket struct. Reserves opt in via their ReserveConfig.elevationGroups array. Both updates use the standard market and reserve update flows.1
Initialize KaminoManager and fetch the market
2
Define the group on the market
3
Opt each reserve into the group
For each reserve participating in the group, fetch its config, set its
elevationGroups array, and apply via updateReserveIxs.Worked example: stablecoin group
A market with USDC, USDT, USDS reserves wants stables-only positions to enjoy 95% LTV with a 96% liquidation threshold and a 1% max liquidator bonus. Group definition (in market config):request-elevation-group, deposits any combination of USDC, USDT, USDS, and borrows USDC. Their position runs at the group’s 95% LTV (overriding each reserve’s default LTV).
Worked example: SOL + LST group
A market with SOL, mSOL, jitoSOL, INF wants LST holders to borrow SOL at 90% LTV. Group definition:disable_usage_as_coll_outside_emode: 1 so these only function as collateral inside the group.
SOL reserve: also opt into group 1 (a borrower can deposit SOL alongside LSTs as collateral and still borrow SOL).
Pausing a group
Setallow_new_loans: 0 on the group definition. Existing positions continue to operate; their parameters stay relaxed; they can repay and exit. Used for incident response on a specific group without halting the whole market.
Checklist before enabling
Reference
- Risk parameters — default per-reserve LTV, threshold, borrow factor
- Reserve config reference —
elevation_groupsfield shape - Market config reference —
ElevationGroupstruct shape