paperps_Testnet

Paperps docs

Synthetic perpetuals settled fully on-chain against a protocol-owned pool. This is a public testnet: every balance is play money, and this page describes how it behaves today.

Overview

Every trade is a synthetic long or short against the protocol LP, priced at the oracle mid. There is no order book, no counterparty matching, no funding rate and no spread. The LP starts empty and is funded only by traders' realised losses; it pays traders' realised wins.

Opening a position

Pick a side, commit USDC margin and choose leverage from 1× to 1000×. The minimum margin is $1 per order, the value set at listing; the exchange refuses anything smaller. The position's notional is margin × leverage. Positions are discrete: you can hold many at once and each one closes on its own.

Trading is two-step. Placing an order locks its margin; the order then fills at the first price the oracle pushes after the block it was placed in, so a price you could already see is never the price you get. The fill can therefore differ slightly from the mid shown on the ticket. A close works the same way.

Order expiry

An order can be filled for at least 20 blocks and 20 seconds after it is placed, whichever ends later. If it has not filled by then it can be cancelled by anyone and its margin goes back to your balance; before that it cannot be cancelled, so nobody can watch the price arrive and walk away from it. A close that has not filled is cancelled the same way.

If a rule no longer holds at the moment an order fills, the order is refunded instead of failing the others. The reasons you can see:

Open-interest limitThis market has reached its limit on that side, or too much is open on that side overall, or you would hold more than one account may on one side. Try a smaller size or later.
Market pausedOpens are paused for the market or for everything. Closes still work.
Position below the minimumMargin under $1.
Insufficient balanceYour balance no longer covers the margin.
Price window passedThe oracle price needed to fill the order was no longer available.
Account can only closeThe account is restricted to closing positions.

Open-interest limits

Three limits apply to new opens on each side (long and short). Positions already open are never affected when a limit changes.

The ticket disables Place Trade with "Limited by OI cap" when the market cap would be crossed. The overall budget and the account share are checked when the order fills, so those refunds can arrive after you placed it.

Busts

A position busts when price moves against it by about 1/leverage minus the market's adverse bust spread (0.0476% on BTC, 0.0481% on ETH). At 1000× that is about 0.05% (the zero-equity move is 0.1%, then the spread is applied); at 100× about 0.95%; at 10× about 9.96%. On a bust the whole margin goes to the LP and mints FEESHARE.

Winning closes

Wins are paid in three steps:

  1. A 0.2 bp dead band is removed from the move; a smaller win pays nothing.
  2. An impact haircut scales the gain: scale = (1 − baseRate) / (1 + 1/(move·rateMult) + refNotional/(1e6·move·posMult)). Small moves on big size are cut hardest; scale never exceeds 90%.
  3. A 2% win fee comes off the scaled gain, split between stakers and the developer.

Losing closes

Losses are taken at face value, floored at your margin, with nothing extra charged. A 2% fee is carved from the LP's gain (waived while the payout queue is active), and every $1 lost mints FEESHARE.

Solvency and the payout queue

If the LP's free cash can't cover a win, the unpaid part joins a first-in-first-out queue and is paid from later losses through a permissionless harvest(). Queued balances are claims, not cash: they can be used as margin, and they settle strictly in order.

FEESHARE

FEESHARE is minted on realised losses and busts: a flat 100 FEESHARE per $1 lost while the tracked LP is under $2M. Above that, the rate follows a one-way high-water-mark ratchet: it only ever goes down, so early losses earn the most.

Staking

Staked FEESHARE earns USDC. A close fee of 2% of the adjusted PnL is charged and, by default, half of every fee goes to stakers (about 1% of settled trader PnL), plus everything in the LP above the $5M cap. Fees are pushed to stakers only while the payout queue is empty, and released over one day.

Deposits

On testnet, deposits come from Sepolia test tokens. The minimum deposit is $1.

  1. Create or unlock your trading wallet, then press Deposit. Your external wallet needs a little Sepolia ETH for gas, and test USDC (the deposit window has a button to get 1,000).
  2. Confirm the Sepolia transaction in your external wallet. This locks the test USDC in the Sepolia vault.
  3. You can close the tab once that Sepolia transaction is sent. The crediting happens on our servers, not in your browser: they pool the lock, mint USDC on the exchange chain and credit your account. The deposit shows as pending until it is credited, usually within a few minutes.
  4. Deposits above $1,000 wait for extra confirmation first, usually about 15 to 20 minutes. Your funds are safe in the meantime and show as pending.

Session keys

Enabling trading registers a session key with one wallet signature. It signs open and close intents silently, so trading needs no wallet pop-ups. It can never withdraw, stake or claim, but it can trade, so a stolen key could still lose the balance of the account through bad trades.

Arena

Arena is a game on top of the exchange: you trade as usual and your closed positions give you a class, a level, badges, a season ranking, duels and legions. It never touches your trading funds, except legions, and adds no extra bets. The full rules are in the Arena pages.

Fees at a glance

OpeningNone
Funding / spreadNone
Winning closeImpact haircut, then 2% of the scaled gain
Losing closeNothing extra (2% carved from LP gain)
Staker shareHalf of every fee (about 1% of settled PnL) + LP overflow above $5M
Minimum margin$1 per order
Unstake cooldown1 day

Risks

Start trading →

Docs — Paperps