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
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
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