Every swap inside the app passes through a single address — 0x00000000…4e3010e2. It is the most revealing point in the whole setup: it shows what is actually bought and sold, how many parties do it, and what the app turns over. Below is a 30-day window, recalculated daily.
Bars are token arrivals per day, the line is how many distinct addresses sent them. Two scales on purpose: the quantities differ several-fold, and on a shared scale the line would lie flat on the floor.
Each token is valued at its most liquid pair. What cannot be valued is not guessed at — the share covered sits in the card above, so this sum cannot be read as the full turnover.
The top tokens by number of arrivals. The "senders" column matters more than the count: one address shuttling a token back and forth, and a hundred different people, are two different things that look identical by volume.
These are not users but settlement contracts through which a swap is executed: aggregators route the trade across pools and hand the result to the router. Not all of them carry a label — we attach one only where the address is identified, not guessed.
A symbol on-chain is protected by nothing: the author of the contract picks it, and no one forbids collisions. In our window more than two hundred symbols belong to several different contracts at once.
This is not theory. The first measurement added up by symbol, and "UNI" showed a turnover of $14.85 million that does not exist: the real UNI came to $2,540. The rest belonged to one-day forgeries carrying the same name. So everything here is counted by contract address, with the symbol serving only as a display label — and every row opens its address in the explorer.
The router receives both what the user hands over and what comes back from the pool. The two can only be told apart by the matching movement inside the same transaction, and that is not done here. The number of arrivals measures activity, not volume bought.
The "sending addresses" column holds pool and aggregator contracts. How many live users sit behind them cannot be seen on-chain: one person on one trade may touch several pools, and the reverse happens too.
Not every token has a price: one-day issues have no liquidity at all. Those rows are marked "no price" and stay out of the sum — giving them a zero would understate the turnover invisibly.
Recalculated daily. Served as /api/router.json. Reading proceeds in windows of exactly one day: with four-day windows every single one hit the Etherscan ceiling of 10,000 records — silently, without a single error. Prices are requested one address per call for the same reason: the source returns no more than 30 pairs per response, no matter how many addresses were asked about.