Overview
Most perpetual DEXes depend on an external price oracle (Chainlink, Pyth, internal TWAPs) to mark positions, trigger liquidations, and settle PnL. Atomic does not.
The price that opens your position is the price you pay against on-chain liquidity. The price that liquidates your position is the price the keeper executes against the same liquidity. There is no separate feed that could disagree with reality.
Oracle manipulation and oracle pause are two of the most common attack vectors in perpetual DEXes. Removing the oracle entirely removes both - and several second-order issues like funding-rate manipulation that depend on oracle marks.
How marks work
Every operation that needs a price queries the DEX aggregator (KyberSwap or 0x), which in turn quotes against the actual on-chain liquidity available across Uniswap V3 / Curve / etc. on Arbitrum.
The mark used at:
- Open - the aggregator's executed price for the swap into the position.
- Close - the aggregator's executed price for the swap out.
- Liquidation check - the aggregator's quoted price at the moment the keeper polls.
- TP / SL trigger check - same as liquidation check.
There is no smoothed average, no time-weighted price, no externally-fetched value. The mark is whatever the on-chain market says it is at the moment of the call.
The trade-off
Oracle-free pricing is not free. The cost shows up as slippage on large or illiquid trades.
If the on-chain market is thin or fragmented, a leveraged trade can move the price meaningfully against itself - exactly the same property that makes oracle-based perps susceptible to manipulation, but here it appears as honest price impact rather than as a manipulable feed.
Atomic mitigates this by:
- Aggregator routing. KyberSwap and 0x split orders across multiple pools, capturing the best available depth.
- Conservative listing. Markets are only added when Uniswap V3 Arbitrum holds enough depth to absorb leveraged size and liquidations without distorting price. See Trading pairs.
- Per-market leverage limits. Longer-tail tokens cap at lower leverage, so a single liquidation cannot move the market against itself.
What this means in practice
For most retail-size trades on blue-chip markets (ETH, BTC), oracle-free pricing is invisible - you get a fill very close to the displayed price, with normal slippage in the 5–30 bps range.
For larger size or longer-tail markets, slippage becomes the relevant constraint. The order panel previews slippage before you sign; if the impact is too high, the trade either fills wider than expected or fails (depending on maxSlippage).
On an oracle-based perp, low displayed slippage and a wide on-chain spread can coexist - the protocol shows you the oracle mark, not the actual fill. On Atomic, the slippage shown in the order panel is the slippage you will actually pay. There is no abstraction layer.
What an oracle would buy you
In exchange for the slippage trade-off, an oracle-based design offers:
- Stable marks during low liquidity. The oracle keeps quoting even if on-chain liquidity dries up.
- Funding-rate-based perpetuals. Synthetic positions referenced to an oracle, decoupled from spot liquidity.
- Lower price impact for large trades. The oracle hides liquidity reality.
Atomic explicitly does not want any of these. Stable marks during low liquidity is a security risk, not a feature; funding rates introduce a different cost basis; hidden price impact ends in surprise on the close. The oracle-free design accepts visible slippage as the price of provable settlement.
Comparison with oracle-based designs
| Property | Oracle-based perp | Atomic (oracle-free) |
|---|---|---|
| Price source | External feed (Chainlink, Pyth, internal TWAP) | On-chain DEX liquidity |
| Manipulation surface | Feed itself (and the markets it samples) | Direct DEX liquidity (which is the cost basis anyway) |
| Funding rate | Yes | No |
| Slippage on large trades | Hidden behind oracle mark | Visible in the order panel |
| Liquidation trigger | Oracle price crosses threshold | On-chain price crosses threshold (same price keeper executes at) |
When the design might surprise you
- Air-gap between two markets. If ETH on Atomic shows a price that diverges briefly from CEX ETH price, that gap is real on-chain liquidity at that moment, not a stale feed. It will close when arbitrage flow returns.
- Wider slippage during volatility. Same as any spot DEX trade - the order panel will preview it; you can lower size or accept the fill.
- No "oracle protection" on liquidations. A wick to the liquidation price closes the position. The 88% threshold and the keeper bounty incentivize fast execution at the actual price, not at a smoothed oracle.