ETH: DEX Trades by Protocol
Included with Plus.
The number of trades on each Ethereum DEX protocol each hour and day, stacked.
Why use it. Trade counts show usage rather than money: a venue with many small trades has a different clientele than one with a few very large ones. How to read it. Each band is one protocol; the top of the stack is the total. Compare with DEX Volume by Protocol: a band much wider in trades than in dollars is a venue of small trades, or of arbitrage bots.
Calculation. Venues on Ethereum mainnet: Uniswap v2, v3 and v4, SushiSwap v2, Curve (every pool in Curve's on-chain MetaRegistry), Balancer v1, v2 and v3, PancakeSwap v2 and v3, Fluid's DEX pools, Ekubo's Core contracts and Maverick v1 and v2. Pools are taken only from each protocol's own registries or creation events. On Balancer a swap against a pool's own LP token (a composable or boosted pool's deposit or withdrawal in disguise) is not counted. Not covered: orders filled outside these pools, such as off-chain market-maker quotes settled through 1inch, 0x and UniswapX fillers, and every other DEX and network. A trade is one transaction's swaps through one pool, netted, for every venue alike: two swaps through the same pool in one transaction count once, arbitrage and other automated trades count like any other. A swap's amounts come from the venue's own swap event, except Uniswap v2, Uniswap v3 and SushiSwap before 15 October 2026, which are read from the pools' own state as our node recorded it before and after every transaction (the same trades on the days checked). A trade is valued by the amount of its priced token that entered or left the pool: US-dollar stablecoins (USDC, USDT, DAI, USDS, PYUSD, FDUSD, USD1, RLUSD) at face value, wrapped or native ether at CryptoKeyhole's hourly ETH/USD price, Wrapped Bitcoin at its hourly BTC/USD price; the stablecoin side is used first, then ether, then Wrapped Bitcoin. Trades between two tokens neither of which is priced this way are counted as trades but carry no value, so the dollar figures slightly understate tokens traded only against each other (some Curve and Balancer pairs). Only finalized blocks are counted. Hourly values cover each completed UTC hour; the open day is a labelled partial, updated hourly, and replaced by the final value once the day closes. The history runs from the deepest hour for which every venue has been read back without a gap and moves further back as older blocks are read.