The protocol, explained
How Orbital works.
Trade stablecoins. Keep liquidity in your wallet. Get paid in USDC.
Orbital Swap brings those three things together. A liquidity provider defines the assets and trading rules in a strategy. Traders exchange against that strategy, and merchants use the same swap engine to accept payments in USDC.
The key idea: liquidity is a set of trading permissions over wallet-held tokens. Tokens move when a trade settles.
Wallet-held liquidity
Your wallet holds the assets.
The strategy sets the rules.
Publishing liquidity does not transfer your tokens into a pooled vault. You give Aqua a token allowance and publish an allocation that your Orbital strategy may trade.
Maker’s wallet
Holds the tokens.
Receives the swap input.
Trader’s wallet
Signs the swap.
Receives the output.
Aqua tracks the allocation; Orbital tracks the curve and principal. A trade also needs enough tokens in the maker’s actual wallet and enough allowance to move them. Spending tokens or reducing an allowance can therefore make a published strategy unavailable.
Custody still comes with permissions. An allowance authorizes transfers within its limit. Review the spender and amount before approving it.
The pricing idea
Liquidity, concentrated
around balance.
Stablecoins usually trade near a common value. Orbital lets a maker concentrate liquidity around that equal-price region, while keeping several assets in one trading system.
Think of a strategy’s reserves as a point on a curved surface. A swap adds one asset and removes another, moving the point. The curve determines how much output is available; it does not promise a fixed one-for-one exchange.
Choose your concentration
Tighter ticks focus more capital near equal prices.
Wider ticks cover a broader set of relative prices.
Conceptual view of nested boundaries, not a live price chart.These nested regions are called ticks. A strategy combines several ticks, including a full-range tick. When a trade reaches a boundary, the engine recalculates how the ticks combine before continuing.
A boundary changes a tick’s contribution to pricing. It does not automatically switch off the entire multi-asset strategy. Execution continues only when the engine can validate the remaining path and available backing.
A closer look at the curve
The starting geometric model for a single full-range tick is a sphere. With one coordinate per asset, its ideal frontier satisfies:
∑ (r − xi)2 = r2
r is the tick’s radius; xi is an asset’s geometric reserve. Concentrated ticks add a cap and virtual reserves, so these coordinates are not simply your wallet balances.
The engine combines interior and boundary ticks and uses conservative integer calculations to validate an output. Uncertain calculations are rejected. The original Orbital paper develops the geometric model; this app adapts it to independent maker-owned Aqua strategies.
For traders
From quote to settlement.
You choose an exact input amount. The app finds an eligible strategy, reads its current state, and asks what that input can buy. A quote is an observation; the signed transaction carries the limits that protect execution.
Choose assets and get a quote
Select what you want to sell and receive. Compare the quoted output, trading fee, and minimum received. The app searches the strategies it can inspect; a quote is not a promise of the best price everywhere.
Approve the input, if needed
A token approval lets the router spend the reviewed input amount. Approval is separate from the swap and does not execute the trade.
Review a fresh transaction
After approval, the app refreshes the quote. Check the recipient, network, deadline, minimum output, and gas estimate before confirming in your wallet.
Settle and read the receipt
The contracts charge the input fee, run the curve, and settle the transfers through Aqua. If the required checks fail, the transaction reverts. A confirmed receipt records what actually moved.
Understanding your quote
A fee, a price,
and your minimum.
The maker chooses a trading fee of 0.01%, 0.05%, or 0.10%. It is charged once on the gross input, even if the trade crosses several ticks. The remaining input is used to calculate output.
Example · 0.05% trading fee
- You send
- 100.00 USDC
- Maker’s fee
- 0.05 USDC
- Input to the curve
- 99.95 USDC
Price impact
The change in price caused by trading against a strategy’s finite inventory. A larger trade can move further along the curve.
Slippage tolerance
The amount of movement you allow between the quote and execution. It sets a minimum output; it is not an additional fee.
Network gas
The cost of executing onchain. On Arc Testnet, gas is paid in native USDC. Leave a balance for gas when choosing how much USDC to spend.
How fees and minimum output are rounded
Fees use parts per million and round upward in the input token’s smallest unit:
fee = ceil(gross input × fee ppm / 1,000,000)
net input = gross input − feeA fee that consumes the entire input is rejected. Minimum output rounds down in the output token’s smallest unit:
minimum = floor(quoted output × (10,000 − slippage bps) / 10,000)For example, a quote of 100 tokens with 0.10% slippage has a minimum of 99.90 tokens, subject to that token’s precision.
For liquidity providers
Publish the strategy.
Keep the custody.
Choose two to eight tokens from the deployment’s supported assets. On the current Arc deployment, you can select any pair of USDC, oUSD6 and oUSD18, or all three. Set equal starting amounts, a concentration profile and a fee; every pair in your basket can trade in both directions. Review the configuration before publishing it onchain.
Approval permits token transfers. Publishing advertises the allocation in Aqua. Activation validates the initial backing and commits the Orbital configuration. An active order’s assets, tick structure, and fee are immutable.
As swaps settle, you receive the gross input into your wallet and pay the output. Only the net input becomes curve principal. The fee is already yours in the wallet and is tracked separately; there is no extra fee-collection transaction.
To stop or change a strategy, retire it and dock its Aqua allocation. Retirement is terminal for that order. A new size or configuration requires a fresh order; docking removes the advertised allocation and transfers no tokens.
Concentration changes your exposure. A stablecoin can lose its peg, and trading can leave you holding more of a weakening asset. A concentration setting is not a guaranteed dollar floor or return.
Explore liquidityFor merchants and payers
Pay in a supported token.
Settle in USDC.
A merchant creates an invoice with a fixed USDC amount, an expiry, and up to three recipients. The payer can use USDC directly or swap another supported token into USDC as part of the payment.
The payment contract checks that the swap produces at least the amount due and meets the payer’s minimum. It distributes the invoice amount, refunds any excess USDC to the payer, and marks the invoice paid in the same transaction.
If the swap or a required recipient transfer fails, the payment reverts together. The invoice cannot be partially paid through this flow or successfully paid twice. Any required token approval happens before the payment transaction.
Explore paymentsThe pieces, connected
What runs underneath.
Orbital
The curve, concentration rules, strategy state, and validation of swap outputs.
Aqua
Wallet-based allocation accounting and the settlement machinery that moves authorized tokens.
SwapVM
The execution framework. Our custom router runs the fee and curve instructions in a fixed order.
Arc
The target network where transactions settle. This application uses the testnet.
Privy
Wallet connection and email-based wallet access. Your wallet handles transaction confirmation and signing.
The two custom SwapVM instructions
0x72OrbitalFeeIn
Charges the input fee once, runs the curve with net input, then restores gross input for settlement.
0x52OrbitalSwap
Calculates output and validates the supported tick path. Actual swaps commit state; quotes do not.
OrbitalFeeIn(configHash) → OrbitalSwap(configHash)Both instructions contain the same 32-byte configuration hash. The router validates the exact program, so extra instructions, repeated fees, or a mismatched configuration are rejected.
The contracts support 2–8 assets and up to 8 ticks per strategy, with a maximum of 16 crossings per swap. The app’s publication flow prepares a three-asset strategy. Execution is exact-input and must satisfy the configured validation limits.
The API and indexer help find strategies, prepare quotes, and display activity. Contract checks determine whether a transaction can settle.
A few useful answers
Before you begin.
Do I need a wallet to read or explore?
No. This guide and public strategy information are available without connecting. Connect a wallet when you want to publish, swap, create an invoice, or pay.
Why are approval and swap separate confirmations?
Approval changes how much a contract may spend. The swap is a separate transaction that actually exchanges assets. An existing sufficient allowance can remove the need for a new approval.
Connection permission is different again: it lets the app see an account. Reloading should restore an already-authorized wallet without asking for another connection.
Why can a quote become unavailable?
The strategy may have traded, been retired, or lost sufficient wallet balance or allowance. A deadline may have passed, or the engine may be unable to validate the proposed path. Refresh the quote and review the new result.
What happens if I close the tab after submitting?
A submitted transaction can still confirm onchain. The app saves public transaction information to recover receipts when you return. Check the transaction status before submitting another action.
Are these mainnet assets?
This is a testnet application. oUSD6 and oUSD18 are demo tokens with no redemption value, and testnet USDC is for testing. Use Demo Tokens for funding instructions.
Does keeping custody remove liquidity risk?
No. You retain wallet custody, but approved swaps change your inventory. Depegs, changing relative prices, token allowances, and contract execution all remain relevant. A successful test transaction is not an audit or a guarantee of future results.
Keep the vocabulary simple
A small glossary.
- Maker
- The wallet that owns and publishes a liquidity strategy.
- Taker
- The account executing a swap against that strategy.
- Strategy
- A registered set of assets, allocations, tick settings, and trading rules owned by one maker.
- Tick
- A liquidity component with its own radius and concentration boundary.
- Principal
- The token amounts assigned to the curve’s trading inventory, excluding accumulated fees.
- Allowance
- The amount a token holder permits a particular contract to transfer.
- Atomic settlement
- All required steps succeed together, or their onchain state changes revert together.
- Receipt
- The confirmed transaction result and events describing what happened onchain.
Keep exploring