SwapTradePoolsPortfolioDocs

Overview

Lotus is directional liquidity and yield-bearing orders for Stellar. One order, chosen once, waits in one of four places. Everything runs on Stellar testnet; nothing is on mainnet and nothing is audited.

What Lotus is

Lotus is two products that work together:

  1. The Lotus pool (lotus_pool, a Soroban contract): a range pool on a grid of price bins where the liquidity provider chooses a direction. A directional position only sells its inventory and only receives proceeds; nothing trades back. The USDC leg can optionally sit in a DeFindex vault that lends on Blend, so resting liquidity earns while it waits and is recalled just in time by the taker's own swap.
  2. The receipt tokens (lotus_vault, a Soroban contract, plus the classic assets lUSDCb and lUSDC): USDC deposited into a DeFindex vault comes back as a classic Stellar asset at 1:1. Classic assets can be quoted on the Stellar DEX (SDEX), and an SDEX offer never moves funds out of the account, so a limit order quoted in lUSDCb keeps earning Blend interest while it waits in the book. lUSDC is the unlent version: an instant buffer for orders close to the price and for working capital.

The market today is LBOND / USDC. LBOND is a simulated tokenized bond issued by the Lotus team with AUTH_REQUIRED, AUTH_REVOCABLE and clawback, to model a regulated real-world asset.

The problem

Depth is idle capital. A resting order earns nothing, and an AMM position forces the holder into round trips they do not want: buy low, get sold back the asset higher, hold whatever the market leaves. The holders who own the inventory and the cash, issuers and treasuries, are the ones who could provide depth and have the least reason to.

On Stellar, yield-bearing RWAs already exist (Ondo USDY, Etherfuse Stablebonds). The asset side of a bond pair earns while it sits; the quote side, USDC, does not. Lotus makes the USDC side earn too.

That gives large providers a reason to bring depth to Stellar: the same capital keeps its yield while it quotes. And the yield is better risk-adjusted than a generic lending vault's, because the Lotus curator knows the order behind every dollar: near-price capital stays unlent (lUSDC), capital that can wait is lent on Blend (lUSDCb). See Concepts.

One order, four places to wait

A liquidity provider creates one range limit order (sell LBOND across a price range, or USDC waiting to buy it) and chooses, at creation, where it waits:

Yield offEarn yield (USDC leg in DeFindex on Blend)
Lotus pooldirectional position on the idle pool, 1 signaturedirectional position on the vault-backed pool, 1 signature
Stellar DEXladder of offers quoted in USDC, 1 signatureladder quoted in the receipt lUSDCb, 1 signature (sell) or 2 (buy: deposit, then offers)

Each bin of the range becomes one SDEX offer at the same price and size, so the order is the same wherever it waits. The choice is made once, at creation: a live position is never migrated between venues. Details in Concepts.

How the pieces connect

                Stellar classic layer                         Soroban layer
  +---------------------------------------------+   +-------------------------------------+
  | SDEX order books                            |   | lotus_pool   directional bins       |
  |   LBOND / lUSDCb, USDC / lUSDCb, LBOND/USDC |   |              (optional two-way)     |
  | Classic assets: LBOND, USDC, lUSDCb         |   | lotus_vault  deposit / redeem /     |
  +----------------------^----------------------+   |              distribute, admin of   |
                         | mints / burns lUSDCb     |              the lUSDCb SAC         |
                         +--------------------------+ DeFindex vault --> Blend lending    |
                                                    +-------------------------------------+
  Bot (team accounts): market makers + arbitrageur, quotes and arbitrage across both venues

The pool and the SDEX are two venues for the same pair. They are linked on-chain only through shared assets and the DeFindex vault; prices are free to differ and an off-chain arbitrageur closes the gap.

Status and honest limitations

  • Testnet only. Network passphrase Test SDF Network ; September 2015. No mainnet deployment, no audit, no pause, no upgrade path.
  • Volume is our own. Trades on the Lotus markets come from accounts run by the Lotus team (two market makers and an arbitrageur). It is market-maker volume, not user volume. See Bots and volume.
  • LBOND is simulated. Its price follows a simulated US 10-year Treasury model; the only real input is the starting yield.
  • Yield is observed, not promised. Blend testnet supply interest is real, and its rate follows Blend's testnet utilization. Any APR the app shows is labelled "observed on testnet, not a forecast".
  • Known weaknesses of the receipt: yield is distributed by a keeper that mints to current holders, so a just-in-time depositor can capture a share it did not earn. The vault-backed pool does not have this problem (it accounts yield in vault shares).
  • Issuer trust. The LBOND issuer can revoke a trustline, including the pool's; a Bid LP's USDC could then be stuck until re-authorization.
  • Footprint race on the vault-backed pool: a transaction can fail with ExceededLimit when the shared vault changes by a stroop between simulation and inclusion; the app re-simulates and resends.

The full list is on the FAQ and in the repository README.

Where to go next