Live on Robinhood Chain · block

Ebb

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.

Partial fills No fee Cancel any time
$100k of the median stock 300 bp lost to the pool, against what the same pool pays for $1,000
The worst of them 9,544 bp on ASML, which is most of the money
Our contract 5,008 bytes, no owner, no fee, no upgrade

A pool cannot wait, and cannot ask.

What a pool does with size

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.

What a falling-price sale does

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.

Why it has to be a contract

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.

What size actually costs on this chain

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,000Best pool
COST6v4 0.09%
EWYv4 0.50%
NBIS116657v4 0.99%
NET46269v4 0.95%
NU54v4 0.80%
PLTR45v4 0.15%
RBLX20v4 0.10%
RDDT20120v4 0.29%
RKLB113v4 0.90%
SOUNv4 4.00%
TTWO43v4 0.20%
ASML8828,1769,5449,818v3 0.30%
IBM385,3338,8269,530v4 0.15%
RIVN255,0358,7599,503v3 0.30%
AVGO703,0328,2589,303v3 0.30%
TSLA772,3718,0939,237v3 0.05%
JNJ199127,7289,091v3 0.30%
NFLX131196,2848,513v3 0.30%
USAR442716,1238,449v3 0.30%
MRNA291765,6118,245v3 0.30%
LULU181595,5218,208v3 0.30%
GME2395,3998,160v3 0.05%
QUBT191371,9056,762v3 0.30%
CRCL453021,4075,899v4 0.24%
ORCL331937595,646v4 1.00%
SNDK191154901,635v4 1.00%
INTC261314324,038v3 0.30%
DELL15923801,658v3 1.00%
BABA10613605,858v3 0.30%
DJT6353154,618v4 0.21%
LLY7463005,746v3 0.05%
META8512955,937v3 0.30%
AMD16912932,808v3 0.30%
TSM10582323,140v4 0.75%
COIN954227569v4 1.00%
AMC849214v4 0.10%
MSTR636150376v4 0.25%
SLV42395303v3 0.30%
MU31787279v3 0.30%
MSFT31568232v3 0.30%
SPY2948999v3 0.05%
AMZN21043123v3 0.30%
AAPL1641186v3 0.05%
GOOGL1839106v3 0.05%
HIMS152676v3 0.30%
USO162357v3 0.30%
GLD141853v3 0.05%
SPCX141643v3 0.05%
SGOV02105,995v3 0.05%
QQQ02819v3 0.05%
NVDA01311v3 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.

And here is the argument against this product

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.

The second thing the scan found

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 a sale works

  1. You set three numbers

    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.

  2. The shares go into the contract

    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.

  3. The price falls, second by second

    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.

  4. It rests at your floor

    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.

What this is made of, and what it is not

Ours

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

Not ours

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.

This contract is not audited. It is 5,008 bytes that nobody has reviewed but the person who wrote it and the checks in 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.

What has been checked

23/23

properties executed against the real contract on Robinhood Chain, at block 68,790,632

26/28

deliberate breaks, each caught by the property named for it — and 2 declared survivors, with reasons

7/7

broken builds caught by the fuzz invariant named for them, over 6 random sequences

81/81

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.