FAQ
Anyone can create a market, borrow against its tokens or liquidate a loan that outgrows its collateral, with no listing or oracle required.
Updated Nov 9, 2026
General
What is Omnipair?
A Solana protocol where each market is one token pair that works as an exchange and a lending market at once. Traders swap against the reserves, liquidity providers earn swap fees and borrow interest, borrowers post one asset to borrow the other, and prices come from the market's own curve, with no oracle required; a market can opt into a price feed that guides the curve within set limits. See the introduction.
What is Dusk?
The name of the V2 program and architecture. Omnipair is the product; Dusk is the protocol version these docs describe. V2 vs V1 lists the differences.
Which network is it on?
Solana mainnet, as a beta with one market (VETO / META). The beta is use at your own risk. Addresses lists the programs.
Do I need a wallet?
Yes. Omnipair is non-custodial; a Solana wallet such as Phantom or Solflare signs every action and holds your tokens. The quick start walks through the first transactions.
Can anyone create a market?
Yes. Any pair of SPL or Token-2022 tokens with nine decimals or fewer: no approval, a 0.2 SOL fee and a first deposit. A Token-2022 mint may use only transfer fees, metadata, groups, interest-bearing or scaled UI amounts; mints with other extensions, such as transfer hooks, are refused.
The deployer is the initial operator and may appoint a manager; eligible changes require the full notice. See Launch a market.
Trading
How is a swap priced?
By the market's own curve: a constant-product tail plus optional concentrated bands around a centre. The app simulates the exact instruction to quote you. Trade.
What does a swap cost?
The base fee, plus divergence and volatility surcharges that only apply in stress, plus a launch premium on new markets, plus any token transfer fee. Dusk fees are capped at half of the trade. The curve and fees.
Why did my swap fail?
Most often the market moved past your slippage tolerance before the transaction landed, so the program reverted it. You paid only the network fee. Retry, or raise the tolerance if the market is thin.
Does borrowing move the price?
No. A borrow replaces cash with debt of the same size and leaves the live reserve unchanged. High utilization can, however, reduce the cash available for large swaps.
Borrowing
How much can I borrow?
Up to the borrow limit: your collateral's impact-aware value, times the market's collateral factor (at most 85%), less a 5% buffer. Large positions get a lower effective factor because the simulated sale moves the price. Borrow.
Why is my borrow capacity lower than the LTV suggests?
Because the value is a simulated sale, not a linear mark. A market's daily borrow budget can also be exhausted; the transaction then fails with DailyLimitExceeded until the bucket refills.
What is the health factor?
Your liquidation limit divided by your debt. Above 1.5 the app calls it healthy; below 1 the position can be liquidated.
Can I borrow the same asset I posted?
No. Each debt side is secured only by the position's collateral in the other asset.
Can someone else repay my position?
Yes. Anyone can repay a position or donate collateral to it from their own wallet, and sponsors can fund protection orders that top it up automatically. Repayment gives the payer no rights over the position.
Leverage
How does leverage work?
A position borrows inside the market, swaps the notional through the curve and holds the result as collateral, all in one instruction.
Margin rules cap a small position at 10× and lower the cap as the position grows against the market's depth and as its side gets crowded; the form shows your maximum, and you may choose less. 20× is only a program circuit breaker. Leverage.
What determines the liquidation price?
The position becomes liquidatable when its symmetric-EMA equity falls below its stored maintenance requirement. The app can estimate that price from the stored terms; accruing interest, transfer fees and integer rounding can move the exact boundary.
Who fills my take-profit and stop-loss?
Keepers, through the leverage-delegate program. An order authorises an attempt; execution needs a keeper to be running and the market to have depth at that moment. Keeper roles.
What does an order cost?
Swap fees on the close, a flat 10 bps protocol fee on the executed value, and the executor's incentive: 5% of the margin on a full close, or 5% of what is left after the debt on a partial close, paid from the proceeds.
Liquidity and hLP
What do liquidity providers earn?
Swap fees and borrow interest from the same market. Part of the fees compounds into reserves; the rest, and all realized interest, is claimable through yield accounts.
Junior LP takes a governed share of both, 50% by default, for taking losses first. Two-sided liquidity.
What is jrLP?
The junior tranche: srLP converted into a first-loss share. It absorbs the market's losses before srLP and takes the junior income share in return.
Entering is immediate; leaving takes a notice of seven to ten days and a two-day window to convert back. Senior and junior tranches.
Why can't I withdraw everything?
Only cash can leave the vault. If most of an asset is lent out, that side of your withdrawal waits until borrowers repay or positions are liquidated.
Is there a withdrawal fee?
No.
What is hLP?
A share of a vault that deposits one asset, funds the other side as debt and holds srLP, so you keep single-asset exposure with LP income minus a funding cost. Single-sided liquidity.
Can I burn srLP or hLP with my wallet?
Do not. The LP mints are Token-2022 tokens whose hooks keep yield accounting correct; a direct burn bypasses them, and burning an entire hLP supply is unrecoverable. Withdraw through the app.
Liquidations
How does a liquidation work?
The devnet interface uses atomic flash fills and a separately health-gated internal emergency path. Recovery protects principal first, followed by junior-first then senior funded-loss allocation; unpaid interest is canceled. Liquidations.
What does a liquidated borrower pay?
The solvent liquidation charge is fixed at 300 bps. Health-based discounts and caller rewards depend on the liquidation route; surplus proceeds return to the borrower. See Liquidations.
Can I run liquidations?
The protocol calls are permissionless. A flash buyer can pay with its own debt tokens or route the flashed collateral atomically; an internal emergency caller needs a fee-paying wallet. Available app controls depend on its deployed SDK/program version.
Governance
Who controls a market?
Its operator, initially the creator, or the optional manager for parameter settings. One pending bundle waits the maximum junior exit notice plus one nominal day before a seven-day execution window.
LP balances grant no core voting authority. Market operators.
Who controls the protocol?
The Omnipair futarchy authority on MetaDAO: revenue shares, recipients, referral listings and auction settings. The reduce-only switch is separate: an emergency key fixed in the program can turn it on for one market or for all of them.
Risk and security
Is Omnipair audited?
The V1 program was audited by Offside Labs and Ackee in February 2026. The V2 program is under active development and its audit status is on the security page.
What are the main risks?
Price impact in thin markets, liquidation after sharp moves, impermanent loss and bad debt for LPs, first for Junior LP and then for srLP, funding erosion for hLP, and the liveness of keepers and fillers. Liquidations and risk lists them by role.
Developers
How do I integrate?
Install @omnipair/dusk-sdk and follow the developer quick start. The program reference is generated from the same IDL the SDK ships.
How do I get historical data?
Through the indexer's REST API and the Dusk read API and streams.
Troubleshooting
The app shows dashes instead of numbers
The indexer snapshot it reads is stale or still loading. Wait a few seconds; the app refreshes on a timer and never fabricates a value.
A page says "deployment mismatch"
The indexer is serving a network, program or IDL that does not match this app build. Reload the app to get the latest build, or retry the indexer check. The browser does not download or hash the on-chain program; the indexer currently performs its own on-chain deployment checks.