Skip to main content

Documentation Index

Fetch the complete documentation index at: https://kamino.com/docs/llms.txt

Use this file to discover all available pages before exploring further.

What is Multiply?

Multiply creates leveraged positions in a single atomic transaction by automating the looping process through flash loans. Instead of manually executing 8-10 separate deposit-borrow-swap cycles, Multiply collapses the entire leverage-building process into one transaction that either succeeds completely or reverts with no state changes.

Borrow and Multiply SDK Methods

MethodOperationWhen to Use
getDepositWithLeverageIxsOpen position or add collateralCreating or adding to a leveraged position
buildRepayTxnsRepay with wallet fundsReducing debt using USDC, SOL, etc. from wallet
buildWithdrawTxnsWithdraw collateralWithdrawing collateral after debt is repaid
getWithdrawWithLeverageIxsDeleverage and withdrawSell collateral to repay debt and receive remaining value in wallet
getRepayWithCollIxsRepay debt with collateralSell collateral to repay debt without withdrawing (value stays in position)
Multiply operations use MultiplyObligation. Standard borrow operations use VanillaObligation. The obligation type determines which PDA is derived for your position.

Borrow and Multiply: Rust Crate Helpers

The Rust klend-interface crate exposes the lending primitives and flash loans, but does not include leveraged combo helpers.
HelperOperationWhen to Use
helpers::flash::flash_loanAtomic flash borrow + repay pairBuilding any flash-loan-based flow
ObligationContext.repayRepay with wallet fundsReducing debt using USDC, SOL, etc. from wallet
ObligationContext.withdrawWithdraw collateralWithdrawing collateral after debt is repaid
Leveraged combo operations (getDepositWithLeverageIxs, getWithdrawWithLeverageIxs, getRepayWithCollIxs) are not available in the Rust crate — they bundle flash loans with KSwap routing, which only the TypeScript SDK builds.

SDK vs API vs Rust Crate: What’s Available

Understanding which operations are reachable from the SDK, the API, and the Rust crate is critical for building Multiply integrations.
OperationSDKAPIRust CrateNotes
Flash LoansAvailableNot availableAvailableAtomic transactions — SDK or Rust crate
Multiply Deposit (with KSwap)RequiredNot availableNot availableLeveraged positions with swap routing — SDK only
Standard Borrow OperationsAvailableAvailableAvailableDeposit, borrow, repay, withdraw across SDK / API / Rust
Position DataAvailableAvailableAvailableRead obligation data via any path
Market Reserve DataAvailableAvailableLimitedAPYs, utilization, liquidity via SDK or API

Flash Loans

A flash loan is an uncollateralized loan that must be borrowed and fully repaid within the same transaction block. This atomic property makes flash loans risk-free for the protocol.

Flash Loan Properties

PropertyDescription
Collateral RequiredNone — uncollateralized
Repayment WindowSame transaction block
Failure BehaviorEntire transaction reverts (no state changes)
Fee0.001% per transaction
Risk to ProtocolZero — atomicity guarantees repayment or reversion
If a flash loan cannot be repaid — due to slippage, insufficient liquidity, or any other failure — the entire transaction reverts. No intermediate state is committed to the blockchain.

Looping: Manual vs Atomic

Looping is the process of repeatedly depositing collateral, borrowing against it, and reinvesting the borrowed funds to amplify exposure. The method determines risk, cost, and execution complexity.

Comparison Table

AspectManual LoopingAtomic Looping (Multiply)
Transaction Count8-10 separate transactions1 atomic transaction
Price ExposureExposed to price changes between each stepNo exposure — all steps execute atomically
Slippage RiskSlippage on each swap individuallySingle consolidated slippage check
Gas CostsHigher — multiple transactionsLower — single transaction
Execution RiskHigh — any step can fail independentlyLow — all-or-nothing execution
Time to CompleteMinutes (dependent on block confirmations)Single block (~400ms on Solana)
ComplexityRequires manual coordination of stepsFully automated
Manual looping exposes you to market price movements between transactions. If the collateral asset price drops or borrow rates spike mid-loop, you may end up with a worse position than intended — or fail to complete the loop entirely.

The Multiply Transaction Flow

Multiply executes leverage creation in a precise sequence of steps within a single atomic transaction.
1

Flash Borrow

Protocol borrows the required debt token amount (e.g., SOL) via flash loan. No collateral is required.
2

Swap to Collateral

Flash-borrowed funds are swapped into the target collateral asset (e.g., SOL → JitoSOL) using Kamino Swap (KSwap) with multi-DEX routing for optimal execution.
3

Deposit Collateral

The full collateral amount (user deposit + swapped amount) is deposited into Kamino Lend as collateral.
4

Borrow Against Collateral

With collateral deposited, the protocol borrows the debt token against the collateral position.
5

Repay Flash Loan

Borrowed funds are used to repay the flash loan plus the 0.001% fee.
6

Position Established

Net result: Leveraged position with amplified collateral exposure and outstanding debt balance recorded on Kamino Lend.
All steps execute in a single transaction. If any step fails (slippage exceeds tolerance, insufficient liquidity, etc.), the entire transaction reverts and no position is created.

eMode (Elevation Mode)

eMode enables significantly higher leverage for correlated asset pairs by raising the maximum permitted LTV ratio.

How eMode Works

Standard lending markets limit LTV to protect against price divergence between collateral and debt. When both assets are highly correlated (e.g., JitoSOL and SOL), price divergence risk is minimal — both assets move together. eMode reflects this reduced risk by permitting higher LTV ratios.

eMode Leverage Comparison

ModeAsset PairMax LTVMax LeverageUse Case
StandardSOL / USDC75%4xUncorrelated assets
eMode (Main)mSOL, bSOL, JupSOL / SOL~87%~7.7xCorrelated LST/SOL pairs
eMode (Jito)JitoSOL / SOL90%10xJitoSOL-specific correlation
No eModeJLP / USDC67%~3.2xUncorrelated (JLP is basket of assets)
Higher LTV from eMode means a smaller buffer between your operating LTV and liquidation threshold. Operating near maximum eMode leverage requires continuous monitoring of the yield spread (collateral yield minus borrow rate).

Why Correlation Matters

Correlated pairs (LST/SOL): When SOL price moves, both JitoSOL and SOL debt move proportionally. Your LTV ratio stays relatively stable regardless of SOL’s USD price. Uncorrelated pairs (JLP/USDC): JLP value fluctuates with crypto markets while USDC stays flat. Price drops in SOL/ETH/BTC directly increase your LTV, creating liquidation risk independent of borrow rates.