Skip to content
Clearing / Capacity and proration

Capacity and proration

Every cluster carries an impact ceiling. When demand exceeds what the venue can carry inside it, everyone is filled by the same ratio.

The impact ceiling

Thrown at a thin curve all at once, raw demand can move the price far past what anyone joined for. So every cluster carries ceilingBps: the most the clearing may move the venue's spot price, between 10 bps (0.1%) and 2,000 bps (20%). The opener sets it when the cluster is created and it can't change afterwards. Mandates carry their own ceiling too (see Mandates).

Capacity: maxEthForImpact

At clearing time the contract asks the venue for the largest gross ETH buy whose spot-price impact stays within the ceiling. For a constant-product curve with quote reserve q and ceiling I, the closed form is:

spot impact(Δ) = ((q + Δ) / q)² − 1
Δnet = q · (√(1 + I) − 1)
capacity = Δnet / (1 − venueFee) gross of the curve's own fee and creator tax

No oracle is involved. The adapter reads the reserves and fee rates straight off the curve in the same transaction as the buy. The API exposes the same number per market as capacityEth for a few common ceilings, so an agent can size an intent before joining.

Proration

If demand fits, everyone is filled in full. If it doesn't, every wallet is cut by the same ratio:

fillRatio = demand ≤ capacity ? 1 : capacity / demand
admitted[i] = joined[i] × fillRatio
Impact ceiling
Wallet A
0.67 / 3.60 ETH
Wallet B
0.45 / 2.40 ETH
Wallet C
0.22 / 1.20 ETH
Wallet D
0.15 / 0.80 ETH
Capacity
1.49 ETH
Fill ratio
18.6%
Admitted
1.49 ETH
Refunded
6.51 ETH
FigureIllustration: a curve with a 100 ETH quote reserve, venue fees ignored, four wallets asking 45/30/15/10% of demand. Raise demand past capacity and every bar is cut at the same ratio.

Nobody skims the room and nobody jumps the queue: a wallet that asked for twice as much gets twice as much, at the same ratio. In a mandate execution the rule differs in one disclosed way: the originator's own ETH is admitted first, and allocators share the room that remains by one common ratio.

Refunds and claims

The unadmitted part of each intent never touches the venue. After clearing, each participant calls claim once and receives both parts in one transaction:

tokens[i] = tokensOut × joined[i] / totalJoined
refund[i] = joined[i] × (1 − fillRatio)

Claims don't expire and don't depend on NoFomo: the app offers a button, the API builds the transaction (POST /api/v1/tx/claim), and any wallet can call the contract directly. In the API, Participant.tokensOut, refundEth and claimed show where each wallet stands.

Edge cases

SituationWhat happens
Nobody joinedThe cluster clears empty. Nothing to claim.
Only you joinedA cluster of one: a normal buy within the ceiling, at the price that buy gets.
The venue can no longer quote the market (graduated or emptied curve)The cluster settles at zero: fill ratio 0, no buy, every wallet claims its full escrow back.
The venue buy fails at clearing timeSame as above: settled at zero, full refunds. Escrow is never trapped.
Demand far above capacityEveryone gets a small fill and a large refund. The ceiling binds unconditionally.

Choosing a ceiling

A tight ceiling protects price but may prorate everyone heavily on a thin curve. A loose ceiling fills more but accepts more impact. The default the API uses when opening a cluster is 300 bps. Look at the market's capacityEth first: if expected demand is well inside capacity at your ceiling, the ceiling will not bind.

Cookie settings

Choose what we may store on this device. You can change this at any time from the footer.

  • Strictly necessary

    Needed for the site to work and to remember your choices here, and to keep a wallet connection you started. These can't be switched off.

  • Preferences

    Remember interface choices such as dismissed hints and layout settings. We don't set any preference storage today; this switch covers it if we add some.

  • Analytics

    Aggregate, privacy-respecting measurement of how pages are used, so we can improve them. No analytics run today, and none will run unless you allow them here.

Full list of every cookie and storage key: cookie policy.