Docs / Market
Inside Ordeo
Where ORDEO trades and how the router uses it
Before graduation ORDEO trades on a Pons bonding curve; after it, in a Uniswap v4 pool set up by Pons. The router buys and sells on whichever of the two is live.
On this page
Curve phase
After launch, ORDEO is paired with ETH on a bonding curve run by Pons. The curve has buy(quoteIn, minTokensOut, recipient) and sell(tokensIn, minQuoteOut, recipient); its price rises as tokens are bought. The router uses the curve while the Pons factory reports the curve phase and the curve is neither graduated() nor readyToGraduate(). A buy that would fill the curve past its graduation allocation is filled up to it, and the unused ETH comes back; the router hands that refund to you in the same transaction.
Graduation
When the curve reaches its graduation threshold, Pons migrates the liquidity to a Uniswap v4 pool. The factory records the phase of each launch: 0 curve, 1 swept, 2 pool, 3 rescued. Between the moment the curve is full and the moment the pool is open, there is nowhere to trade, and the router’s buy and sell revert with TradingPaused. Notes are untouched; you can still unshield and hold public ORDEO meanwhile.
The v4 pool and the meme hook
After graduation the router trades in the Pons pool with this key:
currency0 = ETH (address zero) currency1 = the token fee = poolFee from the factory's launch record tickSpacing = tickSpacing from the launch record hooks = the Pons meme hook (factory.memeHook())
The router swaps an exact input through the v4 PoolManager’s callback, without a price limit of its own. Slippage protection comes from the minimum checked after the swap: minTokensOut on a buy, minEthOut on a sale.
How the router buys
buy(ownerHash, minTokensOut, encryptedNote)buys with all the attached ETH and shields the result into one new note. It returns the tokens bought and the leaf index.buyAndDonate(minTokensOut)does the same buy and donates everything to the vault. The harvester uses it; anyone may.- Both revert without ETH (
ZeroAmount), without a minimum (NoMinimumOut) and when fewer tokens arrive than the minimum (Slippage). - The router adds no fee of its own and holds nothing between transactions. It accepts ETH only while it is trading; any other ETH sent to it reverts (
UnexpectedEth).
How the router sells, and why the terms are binding
A sale proof is an unshield with these properties, checked by the router before anything moves:
- Recipient and relayer are both the router, and the relayer fee is at least one unit.
- The asset is the token.
- The second encrypted output is not a note but the sale terms: the 16-byte magic
ORDEO-SALE-v1followed byabi.encode(ethRecipient, minEthOut, deadline, submitter, submitterFee), 176 bytes in all. - The deadline has not passed, and the caller is the named submitter (a zero submitter lets anyone land it).
The router unshields to itself, pays the submitter its ORDEO fee, sells the rest on the live venue, checks minEthOut and pays the ETH out to ethRecipient. If the v4 pool could not take the whole amount, the unsold part goes to ethRecipient as public ORDEO. Because the terms sit inside a ciphertext the proof binds, nobody can change the payout address, the minimum, the deadline or the submitter without breaking the proof.
Which trades pay holders
Every trade on the Pons curve or pool pays a fee, and the creator share of it goes out to whichever address holds the creator fee recipient role; for ORDEO that will be the splitter. The exact rates are fixed by Pons at launch and shown on the site once the token exists.
So the trades that pay holders are those on the Pons curve, in the Pons v4 pool with the meme hook, and through any aggregator or router whose route passes through one of those two. A trade in some other pool that someone creates without the Pons hook pays nothing to Ordeo.