PerpFun
Connect wallet

The single pool

Every coin has exactly one market, and the entire float is in it.


Why one

A coin split across several venues has no price. Trackers pick one of them, usually the wrong one, and show a number nobody could actually trade at. Holders read a market cap that does not survive contact with a sell.

We had this problem and fixed it by removing the option. There is one pool. A price you read is the price the whole float sits behind, because there is nowhere else for it to be.

It also removes a class of failure that fragmented launches never escape: liquidity that has to be managed between venues, rebalanced, topped up, and that fails exactly when volume arrives. There is nothing to manage here.

Single-sided, and what that means

The position holds only the coin, spread from the opening price upward. No dollars are deposited at launch, which is why launching costs nothing.

As buyers arrive they walk up the curve, and the dollars they pay in accumulate in the pool. The position is the coin's order book and its treasury at the same time: what buyers put in is what sellers can take out, and there is no third place for it to go.

The 1% tier, and why not more

Uniswap V3's fee tiers are fixed by its factory. On this chain only 0.01%, 0.05%, 0.3% and 1% are enabled, and we do not own the factory to add another. 1% is the maximum available and the one every coin uses.

There are two ways to charge more, and we took neither:

  • a transfer tax on the token, which makes swaps through the standard router revert and gets the coin flagged by every scanner — it would cost us the one property we care most about, that any bot can trade the coin;
  • a Uniswap V4 dynamic-fee hook, which works, and which bots cannot read. V4 is the venue we left for that reason.

1% split 70/30 is the honest maximum here.

The opening price

Set exactly rather than approximately. A V3 pool's raw price is token1-per-token0 in smallest units, so the gap between an 18-decimal coin and a 6-decimal stablecoin is part of the price, not a rounding detail — a factor of a trillion:

sqrtPriceX96 = floor( sqrt( P · 2^192 / (10^18 · 10^(18 − dq)) ) )

The square root is taken over the whole expression, not applied afterwards. And the pool is initialised precisely on the range's lower bound, which is what makes a position of pure coin valid with no counterparty.

Depth where it is used

A reference pool backing a tracker does not spread its capital across all possible prices. Most of it sits in a tight band around the tracker's NAV, with a full-range floor underneath so no price can escape the book.

The gain is not marginal. For a band bounded by Pa and Pb, capital efficiency against a full-range position is:

E = 1 / ( 1 − (Pa/Pb)^(1/4) )

A ±2% band is worth roughly fifty times the same money spread across the whole curve; a ±10% band, about eleven times. That is what makes serious depth affordable exactly where trades actually happen.