|
ClearTrace
DEX Weekly
October 15, 2026 · Attribution: Ethereum, Base, Arbitrum, Optimism
|
|
1 · Lead finding
The quote gap we publish was never a comparison, and the control it implied was not there
On October 13 we corrected a sentence from the October 1 issue. It was the second correction to that one paragraph in two weeks: the first, on October 8, had the sign of a gap backwards. This one matters more, because the fault is in the instrument rather than in the wording.
The sentence said that four of the six venues in its table sat at or under 1.00 bps at every size, and that OKX was the exception. Three of them did, and there were three exceptions rather than one. The sentence was also short by a venue on its own arithmetic, since four plus one exception accounts for five of six.
The second fault is structural. Those figures were published as a comparison against the Uniswap default route, and they are not one. The metric subtracts the baseline's own quote gap in each matched window, and that baseline sits at zero because the route being simulated is the route that was quoted: our simulator posts the stored quote object back to Uniswap's swap endpoint (app/quote_realized.py:1049). On the committed sample, 59.4% of Uniswap's Ethereum rows are exact zeros, and the rows that are not zero carry a median and a 90th-percentile absolute value of 0.0000 bps, with a 99th percentile of 2.99 and a maximum of 25.72. Measured on Ethereum at the October 1 cutoff, across ten venues and four size cohorts, the largest divergence between the differenced figure and the raw one is 0.0193 bps, and that bound is on the cohort medians rather than on any single window.
What the subtraction was meant to do is cancel the market movement common to both venues between the moment a quote is read and the moment it is simulated. A baseline that is zero on three rows in five, and worth under 0.02 bps to the windowed median, cancels almost none of it, so in practice the quote gap has never carried a drift control, for any venue. The simulation also ran at tag latest (app/quote_realized.py:1412) and wrote no block to the row, so no row captured before this week can be asked which state it saw.
That left two live explanations for a figure such as OKX's, whose quote gap, as published on October 1, rises with size from +1.89 bps at $1,000 to +10.22 bps at $1M. A positive gap is a simulated fill below the venue's own quote, so either the quote overstated what its route would deliver, or the market moved underneath the measurement. The scale is readable against a venue whose fee is known: ParaSwap read +1.00 bps at all four sizes in that same table, which is its published 1 bp fee. These are quote-gap figures and not the realized comparison in section 3, which measures a different thing and is the only one of the two that carries a price level.
Since October 13 each row pins a named block and carries three timestamps, for the quote, the swap request and the simulation. 3,895 rows now carry them, and the exposure window of our own measurement is a measured quantity for the first time: on Ethereum it runs to a median of 0.90 seconds and a 99th percentile of 4.56, with 99.94% of 1,547 rows inside twelve seconds, which is one block.
Two limits on that. It bounds how much of a quote gap could be drift rather than quoting, and it does not settle it: a venue can compute a quote against a state older than the request we timed, and the rows captured before October 13 carry no block and cannot be re-asked. It also says nothing about section 3, whose realized figures match a venue against the baseline inside a 30-minute window, a far looser bound than the seconds described here; those cells carry whatever moved inside those windows, and the block now recorded on each row is what will let that be measured rather than asserted. No figure already published moves: on the Ethereum cohorts where that bound was measured, each cell stands as the venue's own quote gap rather than as a comparison against Uniswap.
|
2 · Who carried the flow The contracts behind this week's volume, named where we can name themAttribution volume by the contract that carried the trade, per chain, for the attribution window written on the date shown (the refresh is weekly, usually a Monday, and a missed one is forced on the next sync). A name is printed only when our labeling has one; the rest is in the totals and in the count below each table. Ethereum, window written 2026-10-12: $5.58B across 3,671 contracts. | Contract | Volume | % of chain |
|---|
| Wintermute (CEX-DEX Searcher) (0x51c728…502a7f) | $443.7M | 7.9% | | MEV Searcher (Atomic Arb) (0x000000…0f594e) | $434.2M | 7.8% | | Automated Trading Contract (0xbdb3ba…df47b6) | $246.4M | 4.4% | | safe_test: Safe_v_4_1 | $241.4M | 4.3% | | mevrevolutionx.eth (0x410144…0ea4a3) | $235.2M | 4.2% |
20 unnamed contracts over $5M carried $420.5M (7.5% of the chain); 28 contracts carrying $364.8M are withheld under a publication freeze and included in the total. Base, window written 2026-10-12: $6.55B across 4,734 contracts. 36 unnamed contracts over $5M carried $517.0M (7.9% of the chain); 3 contracts carrying $82.1M are withheld under a publication freeze and included in the total. Arbitrum, window written 2026-10-12: $748.8M across 750 contracts. | Contract | Volume | % of chain |
|---|
| Market Maker (Wintermute-linked) (0x93c30e…aedd17) | $317.4M | 42.4% | | Automated Trading Contract (0x96daa0…caab73) | $98.3M | 13.1% | | Anonymous Vault Router (Safe 0xe296…5658) (0x278d85…6ef8d2) | $64.1M | 8.6% | | kyber: MetaAggregationRouterV2 | $27.7M | 3.7% | | UniversalRouter (0x2d0141…c4fe65) | $16.4M | 2.2% |
1 unnamed contract over $5M carried $20.1M (2.7% of the chain); 3 contracts carrying $26.5M are withheld under a publication freeze and included in the total. Optimism, window written 2026-10-12: $121.7M across 205 contracts. | Contract | Volume | % of chain |
|---|
| Velodrome Slipstream LP Rebalancer (Bot) (0x5e6adb…9937b9) | $24.3M | 19.9% | | Wintermute-linked Market Maker (Bot) (0x1ef354…d539e9) | $11.3M | 9.3% | | gnosis_safe: SafeL2_v1_3_0 | $11.3M | 9.2% | | Automated Trading Contract (0xae629b…b40b3f) | $9.6M | 7.9% | | kyber: MetaAggregationRouterV2 | $6.7M | 5.5% |
1 unnamed contract over $5M carried $5.6M (4.6% of the chain); 3 contracts carrying $6.3M are withheld under a publication freeze and included in the total. Percentages are of the chain's attribution total in the window; the five rows are the largest named carriers, not the whole. Entrants that persisted. A contract over $5M this window that was also in the previous attribution window and not in the one before. A contract seen in one window only is churn and is not listed. | Chain | Contract | This window | Previous |
|---|
| Ethereum | 7702 Delegated EOA (0x6ef6…76c9) (0x50560a…faab6a) | $7.7M | $1.9M in the window of 2026-10-05 | | Ethereum | 7702 Delegated EOA (0xb24c02…88a77c) | $5.2M | $1.8M in the window of 2026-10-05 | | Base | Wintermute (CEX-DEX Searcher) (0x51c728…502a7f) | $382.4M | $38.0M in the window of 2026-10-05 | | Base | JitBotBaseV3 (0x202461…b2125e) | $6.7M | $4.6M in the window of 2026-10-05 |
Unnamed entrants, by chain: Ethereum: 2 unnamed, $17.7M; Base: 9 unnamed, $120.5M. Their addresses are in the issue manifest and the labeling queue. Named this week. Labels dated inside the seven days to 2026-10-15, on contracts carrying at least $1M in the current window, that were not already in the seed of the previous ATTRIBUTION window. A label the labeler merely revisited is not new and is not listed. | Chain | Contract named | Volume | How, when |
|---|
| Ethereum | sstone.eth (0xc2fdb7…b5e18b) | $1.8M | deployer, 2026-10-14 | | Ethereum | PendleV2FarmV3 (0xe9e44c…b5c71a) | $1.4M | Sourcify, 2026-10-14 | | Optimism | SwapRouter (0xba3aee…5041ca) | $1.2M | Sourcify, 2026-10-14 | | Base | Bundler (0xf45588…31357c) | $1.1M | Sourcify, 2026-10-14 |
A further 4 contracts carrying $8.2M received a role label (proxy shape, delegated EOA, bot, bucket) rather than a name; they count as attributed in coverage and are not listed as names. | 3 · Execution scoreboard Realized fill against the Uniswap default, and who revertsEach venue's realized output against the same trade routed through the Uniswap default, on Ethereum, matched on pair, size cohort and 30-minute window. This is the realized comparison, not the quote gap: a quote gap measures a venue against its own quote and carries no price level. Median basis points of realized output against the Uniswap default route. Positive means the taker receives more than the default route delivers, negative less. A cell is printed only when rated: at least 30 matched windows spanning at least 7 days and not stale; n/a otherwise. 880 to 3,479 matched windows per printed cell. Sample captured 2026-06-23 to 2026-10-15, 83,240 successful Ethereum captures. Venues under a publication freeze or wound down are not shown. Router revert rates, Ethereum, 7 days. Every router we measure that we may name, best first. RFQ and intent venues are not routers (the user does not submit the swap), and a venue whose execution model is unclassified is not compared either. 2 routers with fewer than 10 reverted user transactions in the window are not listed: that few events is not a rate. User revert rate is the revert rate over senders whose own transactions to these routers succeeded at least 90% of the time over the window. It is a threshold on each sender's own outcomes, not a classification of who the sender is. Data written 2026-10-14. The highest rate across the full measured population on this chain, named here or not, is 1.69%. Largest sandwiched trades, 7 days. From Dune's curated sandwich table. Totals count victims of at least $1,000; the unfloored figure is printed beside each so the floor's effect is visible. | Chain | Attacks | Victim volume | Attacks, no floor | Volume, no floor |
|---|
| Ethereum | 1,372 | $47.1M | 8,013 | $48.5M | | Base | 6,130 | $17.9M | 1,458,671 | $667.6M | | Optimism | 44 | $0.2M | 447 | $0.2M | | Arbitrum | 8 | $0.1M | 28 | $0.1M |
The largest victims in the window. | Chain | Venue | Pair | Victim size | Date |
|---|
| Ethereum | Uniswap | USDC-USDG | $1.6M | 2026-10-13 | | Ethereum | Uniswap | PYUSD-USDS | $1.1M | 2026-10-09 | | Ethereum | Uniswap | PYUSD-USDS | $1.1M | 2026-10-08 | | Ethereum | Uniswap | PYUSD-USDS | $1.0M | 2026-10-12 | | Ethereum | Uniswap | PYUSD-USDS | $1.0M | 2026-10-09 | | Ethereum | Uniswap | RLUSD-USDS | $1.0M | 2026-10-14 |
Across the four chains: 7,554 attacks for $65.3M with the floor, 1,467,159 for $716.5M without it. The gap is almost entirely sub-$1,000 rows on Base that the detector books as sandwiches; whether those are one operator or many is not something this table can say. The floor makes the VOLUME describe MEV rather than that pattern; it does less for the count. 69% of the floored count is still one pair, USDC-XDP on Base (5,236 of 7,554), so read the count as that pair plus a market rather than as a market. Dune's detector is curated, not ours, and its false-positive rate is not bounded here. Written 2026-10-14. | 4 · Fees, declared and undeclared What we have reproduced, what DefiLlama reports, and what gas costsOnly a fee we have reproduced from our own quote sample is called a fee here. A flat shortfall we have not reproduced is a parameter we have not attributed, and section 3 labels it that way. Explicit fees we have reproduced. | Venue | Fee | Where it is taken | Verified |
|---|
| Bebop | ~100 bps on self-execution PMMv3 routes, disclosed as protocolFeeUsd and already deducted from the quoted buy amount; JAMv2 routes carry none, and bebop_best_route picks JAM whenever it is offered | netted inside the quote before it is returned | 2026-08-06 | | CoW Swap | gas-cost fee taken from the sell token before routing, disclosed as quote.feeAmount; size-dependent in bps, not a fixed percentage | taken from the sell token before routing | 2026-09-08 | | LI.FI | flat 25 bps of the sell amount, a 'LIFI Fixed Fee' taken before routing under the default lifi-api integrator, on every same-chain swap | taken from the sell token before routing | 2026-09-03 | | OpenOcean | 1 bp on stables, 10 bps on volatile pairs, to a named collector address | taken from the output token, visible as a skim | 2026-07-31 | | ParaSwap | flat 1 bp on every major pair, to a named collector address | taken from the output token, visible as a skim | 2026-07-31 |
Protocol fees, 30 days, as DefiLlama reports them. | Protocol | Category | 30d fees | Take rate |
|---|
| PumpSwap | DEX | $118.5M | 14.6% | | Uniswap V4 | DEX | $81.6M | 0.0% | | Meteora DLMM | DEX | $45.2M | 10.0% | | Uniswap V3 | DEX | $42.8M | 23.8% | | Raydium AMM | DEX | $24.9M | 15.2% | | PancakeSwap AMM V3 | DEX | $10.5M | 32.4% | | OKX Swap | Aggregator | $3.7M | 0.0% | | Jupiter Aggregator | Aggregator | $2.9M | 100.0% | | CoWSwap | Aggregator | $2.1M | 56.0% |
DefiLlama's figures and DefiLlama's categories, fetched 2026-10-14; take rate is the share of fees DefiLlama books as protocol revenue. Shown for context; nothing here is reproduced by us. Venues under a publication freeze or wound down are not shown. Gas as a fraction of a $10,000 trade. | Chain | Median gas | Scope | Rows |
|---|
| Ethereum | 0.13 bps | full | 27,741 | | Arbitrum | 0.03 bps | execution only, excludes the L1 data fee | 7,476 | | Base | 0.01 bps | execution only, excludes the L1 data fee | 9,168 | | Optimism | <0.01 bps | execution only, excludes the L1 data fee | 7,633 |
Median of realized gas valued in USD over the trade notional, for successful captures at the $10k cohort with a valued gas price. On the L2s the figure is a lower bound: it covers execution gas and not the L1 data fee. | 5 · Market context Share of volume, inside one category at a timeSeven days to 2026-10-14, with the change in points against the seven days to 2026-09-16. Each table is one category of one chain: the DEX category reads pool-level fills and the Aggregator category reads aggregator-routed fills, and because an aggregator's fills also appear at the pool, the two overlap and are never summed. Total volume; no organic-versus-bot split is published. Share of DEX-category volume, Arbitrum, 7 days to 2026-10-14 ($876.3M) Share of DEX-category volume, Base, 7 days to 2026-10-14 ($7.22B) Share of DEX-category volume, BNB Chain, 7 days to 2026-10-14 ($7.75B) | Venue | Share | 4-week change |
|---|
| PancakeSwap | 91.1% | +3.4 pts | | Uniswap | 5.3% | -1.8 pts | | Tessera V | 1.8% | +0.8 pts | | Metric | 1.7% | -0.9 pts | | Other | 0.1% | |
Share of DEX-category volume, Ethereum, 7 days to 2026-10-14 ($6.47B) | Venue | Share | 4-week change |
|---|
| Uniswap | 73.7% | +5.0 pts | | Fluid | 11.0% | +2.2 pts | | Curve | 5.8% | -2.4 pts | | Native | 2.3% | +0.1 pts | | Other | 7.2% | |
Share of DEX-category volume, Solana, 7 days to 2026-10-14 ($14.46B) | Venue | Share | 4-week change |
|---|
| Meteora | 25.9% | -0.7 pts | | PumpSwap | 14.2% | +1.2 pts | | BisonFi | 11.6% | +0.1 pts | | Orca Whirlpool | 9.7% | +1.1 pts | | Other | 38.6% | |
Share of Aggregator-category volume, Base, 7 days to 2026-10-14 ($493.0M) Share of Aggregator-category volume, Ethereum, 7 days to 2026-10-14 ($3.02B) | Venue | Share | 4-week change |
|---|
| KyberSwap | 20.4% | -3.3 pts | | CoW Swap | 20.1% | -2.9 pts | | 1inch | 14.9% | +3.6 pts | | Bebop | 7.9% | -1.6 pts | | Other | 36.7% | |
Source: dune_global_market, written 2026-10-14, which reads dex.trades for the DEX category and dex_aggregator.trades for the Aggregator category, both collapsed to one notional per transaction. Venue-days under $1M are not in the source. Optimism is not in this source; its attribution appears in section 2. Below the $250.0M floor for tabulating a chain and category, and so not shown: Arbitrum Aggregator ($157.9M); BNB Chain Aggregator ($166.6M). A venue under a publication freeze is counted in Other and not named; removing it from the denominator would misstate every other row. Dune backfilled Lista SmartSwap into Ethereum's base trades on 2026-10-09 (spellbook #9988), adding history that ran to 2026-09-19. Only one of the two windows compared here covers that period, so its denominator carries volume the other does not and part of the Ethereum change column is that asymmetry rather than the market. The venue has no volume in the current window. The same 2026-10-09 Lista SmartSwap backfill (spellbook #9988) reaches BNB, where it is larger: $1.73B of added history against $1.15B on Ethereum, over the same period ending 2026-09-19. Only one of the two windows compared here covers it, so it was 1.21% of this chain's volume in the earlier window and nothing in the current one, and part of the change column is that asymmetry rather than the market. Other absorbs rounding, so each table sums to 100.0. |
|
The dashboard carries the full attribution tables and the methodology notes set out the difference between the quote gap and the realized comparison, and what the user-only revert rate does and does not say.
|
|
ClearTrace · Cross-chain DEX attribution. The issue manifest committed beside this issue lists each venue, contract, share and rate figure with its source table, filter and as-of date. It does not carry every number printed here: chain and category totals, contract counts, withheld-row counts and the sample-window counts are in the sections and not the manifest. Sections 2 to 5 are generated from the data; section 1 is written.
|
|