For the complete documentation index, see llms.txt. This page is also available as Markdown.

How Leverage Works

Opening a leveraged position is a single signed transaction. Everything below happens inside it — there is no moment where you hold a half-built position, and nothing to babysit between steps.

Status: testnet preview. Addresses and flows on this page are live on Stellar testnet only. Isolated per-user positions are deployed and were verified on testnet on 10 Oct 2026, including a liquidation of one position that left a second position unchanged.

The one-transaction open

Why a flash loan matters: without it, reaching the same leverage means looping supply → borrow → swap → supply several times. Each pass adds less leverage, costs more in fees, and leaves you liquidatable between passes. Blend's flash loan runs the health check once, at the end, so the position is never observably unhealthy while it is being built.

What protects the transaction

Guard
Where
What it does

Health floor + leverage cap

Your position

After every open or withdrawal, recomputes Blend's health factor for the resulting position; below 1.40, or above the leverage cap, the transaction reverts

Slippage bounds

Zapper

The swap and the deposit must produce at least the amounts you quoted, or the whole transaction reverts

Health check

Blend

The final position must be solvent, or the whole transaction reverts

Live quote

Interface

The expected LP output is computed from the pool's current reserves before you sign

Because all of it is one transaction, a failure anywhere means nothing happened — you keep your LP and pay only the network fee.

How your position is tracked

Every depositor gets an isolated position — nothing is pooled:

  • On XOXNO, the position is your own XOXNO account (an account NFT you own) in the Aquarius-LP risk group.

  • On Blend, a small position contract is deployed for you, holding your own Blend position.

Your collateral and debt are simply what that position holds on the lending venue, read live. Its health factor is yours alone: if it is liquidated, only your position loses collateral, and nobody else's position can affect yours.

WhaleHub's keeper (the market manager) can do exactly one thing to your position: deleverage it, and only while its health factor is below the trigger (1.15). The result must be safer than before, and the collateral it sells must fetch at least 98% of its oracle value. It cannot withdraw, borrow or add leverage, and every token it frees goes back to your position or to you. You can revoke it at any time (set_manager_enabled(false)).

Closing a position

Unwinding is repay + withdraw, and works partially or in full:

You can either bring the asset to repay with (repay_and_withdraw; any over-repayment is refunded to you), or deleverage out of the position itself: it withdraws a slice of LP, unzaps it into the borrow asset and repays (deleverage). Each deleverage step keeps the position above 1.0 in between, so a large unwind is a few steps.

If a position goes underwater

Liquidation happens on Blend, not in the vault. When collateral value falls too far against the debt, anyone can start a Blend auction on the position, and the winning liquidator unwinds it atomically: win the auction, withdraw the LP through Aquarius into its two assets, swap one leg, repay the borrow.

WhaleHub runs a liquidation bot so auctions clear from day one, and publishes an MIT-licensed reference liquidator so anyone else can run one too. Neither holds any special permission — a liquidator can only do what any other participant could do.

The interface shows a live health factor on every open position, with alerts as it approaches the liquidation boundary.

Testnet addresses

Contract
Address

Position factory (Blend v2.1 market)

CBARZ5ZSADUSORF4FQTQLYQYV7LEB6UWCG3NUMCRSI627PSI4IZRHZIJ

Zapper

CAHW6JOB7SMCJEFKCB5XPM534D2XOFJHREGAY3VNP3KTMVUY4QQ7F3OA

Blend v2.1 pool (mainnet parameters: LP c 0.60, borrow l 0.75)

CBZJBZM5LRDSS7U34OSUYWAB3LMQCW25VBHYI43NX76UVE26EN6KYT7P

Position wasm (current)

aac57d10e60b2f53e00330313e6c9bee85e7755cc3268f829e40c38f2a29a215

Earlier Blend v2 market

factory CBO2A5SY…CGTY, pool CDSFGJOQ…BVTW4

Earlier pooled prototype (retired)

vault CC2JF2VP…X2PFH, zapper CCUDFI62…OHT2

Your position's address is deterministic (factory.get_position(owner)). Its pool, zapper and tokens are fixed when it is created. Its code changes only if you call upgrade(hash) on it, naming the wasm hash you reviewed.

If a liquidation auction starts on your position, Blend blocks every other action until it ends. You can still cure it in one step with repay_and_clear(amount): repay enough to bring health above 1.0 and the auction is deleted. Full engineering detail, including verification transactions, is in the technical reference.

Last updated