OctoLend Whitepaper
What, Why and how OctoLend

Introduction
OctoLend is a curated lending protocol on Stellar Soroban composed of three modular pieces:
- Earn Vault (Vault V1): a permissionless, non-custodial vault that aggregates yield from Stellar protocols and issues a composable SAC share token.
- Lending Market: isolated, single-asset lending pools where LPs supply liquidity, borrowers post collateral (including delegated collateral), and interest/repayment/liquidation are handled on-chain.
- Interest Rate Model (IRM): a configurable, utilization-aware controller that prices debt, compounds interest, and exposes a transparent debt token price for accounting and liquidations.
Together, these components let curators launch yield products, enable borrowers to access predictable credit, and give depositors a simple path to on-chain returns—without centralized custody.
Why OctoLend?
Vault-Based Architecture → Modular & Composable
OctoLend is built around programmable vaults — the Earn Vault and the Market Vault. This modular architecture enables curators to optimize risk and return for liquidity providers by allocating across different lending markets, while the Earn Vault remains fully composable with the broader Stellar DeFi ecosystem. The result is a flexible and transparent framework that supports diverse yield strategies and institutional integration.
Isolated Lending Markets → Better Risk Management
Each OctoLend Market is a self-contained lending pool pairing one collateral asset with one loan asset. Markets are isolated (risks remain contained within each pool) and immutable (parameters cannot be altered after deployment). This ensures predictable behavior, limits systemic contagion, and gives lenders and borrowers clear, quantifiable exposure. Creating a new OctoLend Market is fully permissionless.
Configurable Interest Rate Model → Higher Capital Efficiency
Each Market can choose from a range of Interest Rate Model (IRM) profiles — such as fixed, dynamic-kink, or PI-stabilized — and set parameters at deployment. This allows rates to adapt to utilization in real time, tighten spreads under normal conditions, and escalate predictably under stress. The outcome is greater capital efficiency, enabling higher borrowing capacity without compromising liquidity safety.
Collateral Delegation → Decentralized Underwriting
A dedicated Collateral Vault allows curators to delegate first-loss collateral to trusted borrowers under predefined on-chain policies (e.g., minimum collateral ratio, allocation caps, and fee parameters). This separates capital provision from credit selection, decentralizing the underwriting process and unlocking new use cases for institutional and RWA-backed lending.
Reward Layer → Incentivized Participation
OctoLend supports multiple forms of rewards — including the native OCTO token, stablecoins, or other fungible assets — to boost APY for lenders and reduce effective borrowing costs. Reward accounting is handled off-chain for efficiency, while on-chain distribution and claims are executed via a Merkle tree contract, ensuring transparent, verifiable, and gas-efficient reward delivery.
Earn Vault (Vault V1)
What it is
A Vault holds one base asset (e.g., USDC) and issues a share token representing proportional ownership of total value. Curators deploy/manage vaults via the Untangled Curator App, allocating capital across Stellar protocols like OctoLend itself. Users deposit once for diversified exposure and redeem via epoch-based (asynchronous) withdrawals. Vaults are immutable and controlled by multisig/MPC (e.g., LOBSTR Vault, Fireblocks).
Key properties
- Soroban-based standard: open, audited contracts.
- Composable shares: SAC tokens, wallet/DeFi compatible.
- Non-custodial treasury: curator-controlled; Untangled does not custody funds.
- Flexible strategy: combine DeFi and RWA yields.
- Async withdrawals: deposits instant; redemptions processed per epoch.
- Transparency: NAV, allocations, and share price are on-chain; valuation logic is curator-run off-chain.
How it works
- Curation & strategy: curator selects protocols and allocates via the treasury wallet.
- Valuation: distributor updates share price from off-chain NAV (reflecting earnings/fees).
- User flows: users mint shares on deposit; submit withdraw requests and are settled post-epoch.
Roles
- Issuer: deploys SAC share token, defines permissions.
- Distributor: updates share price, processes redemptions.
- Curator/Treasury: executes strategy, settles epochs, manages allocations.
At a glance
- Permissionless: any curator can deploy.
- Non-custodial & immutable.
- Composable SAC shares.
- Audited & open source (Veridise).
Markets (Lending)
What it is
A Lending Market is a single-asset credit engine. It accepts deposits of one asset, issues market shares to LPs, holds borrower collateral (and delegated collateral from a Collateral Vault), mints/burns debt tokens to track borrower debts, and orchestrates interest, withdrawals, and liquidations. Each market is self-contained: its parameters, oracle, and IRM are bound to that instance.
Purpose
- Isolated, immutable lending pools with predictable risk.
- Support both posted collateral and delegated collateral.
- Price debt deterministically via the market’s IRM instance.
Core components
- Underlying asset (supply side): LPs deposit; borrowers receive this token.
- Debt token: synthetic unit of account; valued by debt_token_price from the IRM.
- Oracle (SEP-40 style): price & decimals for the collateral asset; used for LTV and liquidation.
- Liquidation LTV (LLTV): threshold at which a position becomes liquidatable.
- Interest Rate Model: computes instantaneous rate, compounding, and debt price.
- Treasury: custody account for the underlying asset; borrows pull from Treasury, repayments push back.
- Collateral Vault (optional): delegates collateral to named borrowers; increases effective collateral.
User flows
- Supply/Withdraw (LPs): deposit underlying and receive market shares; withdraw subject to liquidity.
- Borrow/Repay: capacity is determined by collateral value (posted + delegated) vs LLTV; borrows transfer underlying from Treasury to borrower; repayments return funds to Treasury and burn debt tokens.
Access control
- Admin: can pause/unpause; manage roles.
- Treasury: funding endpoint for borrows/repayments.
- Pause state: blocks state-changing ops; reads remain available.
Interest Rate Model (IRM)
What it is
A utilization-aware controller that (i) returns an instantaneous annualized borrow rate, (ii) compounds total debt assets over time, and (iii) provides a debt price (value per debt share) used across accounting and liquidations. The model stabilizes around an optimal utilization and escalates above a critical utilization with a time-decaying “stress memory,” while damping rates at low utilization.
Goals
- Keep markets liquid and predictable.
- Encourage repayments/fresh supply at high utilization.
- Avoid punitive rates when usage is low.
- Adapt quickly during stress, then decay back.
What it controls
- Current (annualized) borrow rate.
- Compounded growth of total debt assets between accruals.
- Debt price for valuing borrower debt positions.
Key parameters (set once per market)
- u_opt, u_crit, u_low — utilization targets/bounds.
- k_lin, k_i, k_crit, k_low — slopes/gains for baseline, integral, penalty, and low-util dampener.
- beta — stress memory adaptation speed.
- r_i, t_crit — internal state (baseline rate, stress memory).
Lifecycle
- Bound to a market at deployment; configuration is immutable.
- Accrual updates internal state, advances timestamp, and compounds total debt assets.
- Exposes current rate, compounded factor, and debt price for real-time monitoring.
Profiles (at market creation)
- Dynamic kink with PI controller
- Dynamic kink (linear)
- Fixed (constant rate across utilizations)
Liquidations
A position is liquidatable when:
borrowed_value > collateral_value × (LLTV / 10_000)
where:
borrowed_value = borrowed_debt_tokens × debt_token_price
collateral_value = (posted_collateral + delegated_collateral) × oracle_price
Flow
- Liquidator repays up to the protocol-computed available-to-liquidate amount (value terms).
- Liquidator receives collateral worth repay × (1 + bonus_bps/10_000) at the oracle price.
- Seizure order: borrower’s own collateral first; if insufficient, pull the shortfall from delegated collateral (via the Collateral Vault).
- Debt tokens are burned by the repaid amount; borrower balances update.
- If delegated collateral is seized, an event is emitted for the Collateral Vault to reconcile.
- Partial liquidation is supported, enabling gradual deleveraging and reduced market impact.
Collateral Delegation
Overview
The Collateral Vault supplies a programmable credit-enhancement layer. Curators pool collateral, delegate it to trusted borrowers, and allocate portions to specific lending markets—without rehypothecating assets.
Three accounting layers
- Deposits: vault assets → vault shares.
- Delegations: borrower-specific credit lines.
- Allocations: delegated amounts currently in use in a given market.
Receiver policy (per borrower)
- max_allocation_rate — cap vs borrower’s posted collateral in the linked market.
- min_collateral — minimum borrower collateral to activate delegation.
- delegation_fee_bps — annual fee on allocated amount; accrues linearly over time.
Capacity & safety
- Remaining capacity = total_assets − total_delegated − total_allocated.
- No rehypothecation; strict custody and on-chain auditability.
- Asynchronous withdrawals (epochs) mitigate sudden drains.
Fees
Types
- Borrow Interest (IRM): interest accrues continuously on debt; compounded into total debt assets and reflected in debt token price.
- Delegation Fee (Collateral Vault): per-borrower BPS on allocated amounts; accrues linearly; payable via
pay_delegation_fee(). Unpaid fees can be forfeited on default. - Market Fee (Lending Market): portion of interest routed to protocol reserves/curators per market policy.
- Liquidation bonus: Not a fee, but a parameterized bps incentive paid in extra collateral to liquidators.
Transparency
On-chain getters expose totals, rates, and parameters (e.g., get_total_debt_assets, get_price for debt tokens, get_total_fees_accrued, get_reserve_factor).
Immutability
Fee parameters are set at deployment and cannot change, preserving predictability. Each market/vault is isolated; fee flows do not affect others.
Rewards
OctoLend can support additional reward streams (e.g., OCTO, stables, other FTs) to boost LP APY and reduce borrower costs. Accounting occurs off-chain, with on-chain distribution/claim via a Merkle tree contract on Stellar.