Let the price come down to the buyer.
A pool prices your sale against its own depth. Sell one share of something thin and you pay the fee; sell a hundred and you walk the book down and pay for every tick you cross. An auction can do what a pool cannot: start above what the pool would give you, and ask the whole chain — once a second — whether anybody wants it yet.
Name the price you would love and the price you would still take. The number falls between them, second by second, and the first person who thinks it is cheap enough takes it — all of it or part of it. If nobody does, it rests at your floor until you take it back.
A constant-product or concentrated-liquidity pool gives you a price computed from its own reserves. Sell into it and you consume the liquidity nearest the price and then the liquidity behind that, each tick worse than the last. The pool is not negotiating; it is reading a curve. Nothing about that curve knows that someone three blocks from now would have paid you more.
It starts at a number you choose — usually above the pool — and comes down on a published schedule that anybody can compute. Every second it is a slightly better deal for a buyer. The first buyer to think it is worth taking, takes it. Nobody has to be watching when you post it; the price does the asking.
A price that changes with the clock cannot be a signed order: the number in the signature would be stale a second later, and a thousand re-signings is not a product. It has to be a contract that is asked what the price is now, that holds the shares so the buyer is never raced, and that settles both sides in the same transaction.
This is the premise, and it was measured before anything was built — because if the pools here are deep, nobody needs an auction and this site should not exist. For every tokenized stock with a USDG pool, Uniswap's own quoters were asked what selling $1,000, $5,000, $25,000, $100,000, $250,000 of it would pay, through the venue that pays best. The cost of size is each quote against that same pool's execution at the smallest size — not against a mid nobody can trade at, and not against the oracle, which would be answering a different question. Measured at block 68,280,321, Sep 20, 2026.
| Stock | $5,000 | $25,000 | $100,000 | $250,000 | Best pool |
|---|---|---|---|---|---|
| COST | 6 | — | — | — | v4 0.09% |
| EWY | — | — | — | — | v4 0.50% |
| NBIS | 116 | 657 | — | — | v4 0.99% |
| NET | 46 | 269 | — | — | v4 0.95% |
| NU | 54 | — | — | — | v4 0.80% |
| PLTR | 45 | — | — | — | v4 0.15% |
| RBLX | 20 | — | — | — | v4 0.10% |
| RDDT | 20 | 120 | — | — | v4 0.29% |
| RKLB | 113 | — | — | — | v4 0.90% |
| SOUN | — | — | — | — | v4 4.00% |
| TTWO | 43 | — | — | — | v4 0.20% |
| ASML | 882 | 8,176 | 9,544 | 9,818 | v3 0.30% |
| IBM | 38 | 5,333 | 8,826 | 9,530 | v4 0.15% |
| RIVN | 25 | 5,035 | 8,759 | 9,503 | v3 0.30% |
| AVGO | 70 | 3,032 | 8,258 | 9,303 | v3 0.30% |
| TSLA | 77 | 2,371 | 8,093 | 9,237 | v3 0.05% |
| JNJ | 19 | 912 | 7,728 | 9,091 | v3 0.30% |
| NFLX | 13 | 119 | 6,284 | 8,513 | v3 0.30% |
| USAR | 44 | 271 | 6,123 | 8,449 | v3 0.30% |
| MRNA | 29 | 176 | 5,611 | 8,245 | v3 0.30% |
| LULU | 18 | 159 | 5,521 | 8,208 | v3 0.30% |
| GME | 2 | 39 | 5,399 | 8,160 | v3 0.05% |
| QUBT | 19 | 137 | 1,905 | 6,762 | v3 0.30% |
| CRCL | 45 | 302 | 1,407 | 5,899 | v4 0.24% |
| ORCL | 33 | 193 | 759 | 5,646 | v4 1.00% |
| SNDK | 19 | 115 | 490 | 1,635 | v4 1.00% |
| INTC | 26 | 131 | 432 | 4,038 | v3 0.30% |
| DELL | 15 | 92 | 380 | 1,658 | v3 1.00% |
| BABA | 10 | 61 | 360 | 5,858 | v3 0.30% |
| DJT | 6 | 35 | 315 | 4,618 | v4 0.21% |
| LLY | 7 | 46 | 300 | 5,746 | v3 0.05% |
| META | 8 | 51 | 295 | 5,937 | v3 0.30% |
| AMD | 16 | 91 | 293 | 2,808 | v3 0.30% |
| TSM | 10 | 58 | 232 | 3,140 | v4 0.75% |
| COIN | 9 | 54 | 227 | 569 | v4 1.00% |
| AMC | 8 | 49 | 214 | — | v4 0.10% |
| MSTR | 6 | 36 | 150 | 376 | v4 0.25% |
| SLV | 4 | 23 | 95 | 303 | v3 0.30% |
| MU | 3 | 17 | 87 | 279 | v3 0.30% |
| MSFT | 3 | 15 | 68 | 232 | v3 0.30% |
| SPY | 2 | 9 | 48 | 999 | v3 0.05% |
| AMZN | 2 | 10 | 43 | 123 | v3 0.30% |
| AAPL | 1 | 6 | 41 | 186 | v3 0.05% |
| GOOGL | 1 | 8 | 39 | 106 | v3 0.05% |
| HIMS | 1 | 5 | 26 | 76 | v3 0.30% |
| USO | 1 | 6 | 23 | 57 | v3 0.30% |
| GLD | 1 | 4 | 18 | 53 | v3 0.05% |
| SPCX | 1 | 4 | 16 | 43 | v3 0.05% |
| SGOV | 0 | 2 | 10 | 5,995 | v3 0.05% |
| QQQ | 0 | 2 | 8 | 19 | v3 0.05% |
| NVDA | 0 | 1 | 3 | 11 | v3 0.05% |
Basis points lost against the same pool’s execution at $1,000; — means the pool would not quote that size at all. Measured at block 68,280,321 by tools/probe-depth.mjs. | |||||
It does not hold everywhere, and the page would be lying if it printed only the median. The deep names are fine: selling $100,000 of NVDA costs 3 bp, which is less than the gas argument for waiting. If you are selling one of those, use a pool and close this tab. Of the 51 stocks measured, 11 cost under 50 bp at that size. The rest is what this is for.
Even at the smallest size, most of these pools trade below Robinhood's own feed — a median basis of 59 bp below against the oracle. So the starting price of a sale does not have to be optimistic to beat the pool. It can start at the feed and still be the best bid on the chain for a while. That is a fact about this chain today and not a promise about tomorrow.
How many shares, what the whole lot is worth at the start, and what it is worth at the floor. Plus how long the fall takes. The app suggests a start just above Robinhood's feed and a floor just under it, and shows what the pool would pay for the same size right now so you can see whether the floor is worth having.
Not an allowance — the shares themselves. An auction a seller can pull out from under a bidder is not an auction: the buyer would pay the gas and get a revert. The cost of that decision is that this contract holds tokens, and it has not been audited, which is said plainly on every page that offers it. You can take the unsold remainder back at any moment.
Linearly from the start to the floor over the span you chose. Anybody can compute it; nobody can change it. A buyer taking part of the lot pays that fraction of the asking price, rounded up. There is no fee: the contract takes nothing, and never holds a dollar.
When the fall is over the price does not vanish — it stops. From then on the sale is a plain limit order at your floor, standing until somebody takes it or you cancel. A sale that expired would leave the shares stuck in a contract waiting for you to notice.
One contract, 5,008
bytes of it: contracts/EbbAuction.sol. No owner, no pause, no upgrade path, no
admin key and no fee. It never asks what anything is worth — it only counts seconds. It is
deployed through the CREATE2 factory that is already on this chain, so its address is a
function of its own bytecode and anybody can check that the contract this site points at
is the one in the repository.
0xd9eD398Df254AeBa02e7bAde89F68b6C57c5b516
The stock tokens and the price feeds are Robinhood's. The pools this site quotes against are Uniswap's, read and never traded through. The dollar is Paxos's USDG. The CREATE2 factory is Arachnid's, the one Foundry uses. We hold no key with anything in it: the first person who wants a sale sends the deploy transaction from their own wallet, and from then on the contract is there for everybody.
tools/, and
unlike most of what this family of sites has shipped, it holds tokens. What has been
done instead is written down and reproducible:
23/23 properties
executed against the real contract on this chain,
26/28
deliberate breaks each caught by the property named for it, and a fuzzer that found what the
properties could not. All of it is on the docs page, including the
breaks that got through.
properties executed against the real contract on Robinhood Chain, at block 68,790,632
deliberate breaks, each caught by the property named for it — and 2 declared survivors, with reasons
broken builds caught by the fuzz invariant named for them, over 6 random sequences
colour pairs proved against the photograph before the stylesheet was written
Every one of those numbers is produced by a tool in this repository and written into
data/; the page carries no hand-typed figure and the build refuses to fill one
that is missing. The docs page says what each check is, and what
escaped it.