Methodology
Last updated 3 November 2026 · applies to the datasets selectable at the top of each page.
This version
This site is an independent continuation of Orderflow.art, built by Flashbots in 2023–2024 to show how Ethereum order flow travels from users and frontends through solvers, mempools, order flow auctions (OFAs) and builders, and where its liquidity comes from. It is maintained by Davide Barone and is not affiliated with or endorsed by Flashbots. The code is a fork of flashbots/Orderflow.art (commit 003d36e) and stays under the AGPL-3.0 licence; the source code of this version is distributed with it.
The pages, Sankey columns and metric definitions are the original ones. The original site read materialized results that are no longer refreshed, so here the public Flashbots SQL is re-run on Dune for every day shown. Changes needed to keep those queries working on today's data are listed as declared fixes; anything that goes beyond the original definitions is kept in a separate extended dataset.
Datasets
| Dataset | Days | Content |
|---|---|---|
| 2 Dec 2025 – 16 Feb 2026 · extended + OFA attribution + execution cost | 77 days | Extended dataset with the non-intent flow re-run day by day for OFA labels and execution cost (over the period). |
| 26 Jul 2025 – 16 Feb 2026 · extended | 206 complete UTC days | Original definitions + fixes + extensions (new routers, CoW app names, PMM venue labels). |
| Arbitrum · 3 Feb 2026 pilot · extended | 1 day | Port of the queries to Arbitrum: Flashbots-equivalent router list plus 17 named routers outside it (Relay, Li.Fi Permit2, Camelot, Squid, Zerion, ...), CoW app names (arbitrum_one), PMM venue labels for Native and Clipper. A pilot, not a period. |
Also computed but not shown in the selector for now: the same 206 days with the original definitions only (the extended dataset minus its flagged extensions) and 30 Jan 2024 with the original definitions, used for the comparison with orderflow.art (see Validation).
Why this period. It is the longest stretch in which every source is complete or has been repaired. From 17 February 2026 the public Flashbots Protect files shrink to about a third of their size, several March 2026 files are empty and no file exists after 27 May 2026, although the service still runs; the MEV-Share dataset ends on 31 March 2026. On 18–25 July 2025 the public mempool archive itself covers only 13–22 hours a day, and the Protect file of 30 June 2025 is missing. A shorter but complete period was preferred to a longer one with silent gaps.
How the data is computed
Eight public Flashbots views are re-run, one result per query and window:
| Sankey | Flow family | Flashbots query |
|---|---|---|
| Retail trade volume (orderflow) | Non-intent routes (aggregators, DEX routers, wallets, bots) | 3100173 |
| CoW Protocol | 3079764 | |
| UniswapX | 3076171, 3050748 | |
| 1inch Fusion | 3184593, 3178977 | |
| Retail liquidity impact (liquidity) | Non-intent routes | 3100226 |
| CoW Protocol | 3091267 | |
| UniswapX | 3077580 | |
| 1inch Fusion | 3179125 |
They use the Flashbots router and frontend list (3004150), PMM maker list (2812729), Mempool Dumpster (3145549), Flashbots Protect (3023136), MEV Blocker bundles, Hashflow trades (3099694) and builder labels (3184477), with Dune's Spellbook tables (dex.trades, dex_aggregator.trades, prices.usd, protocol tables).
- Each query runs on one week (CoW and UniswapX liquidity on windows of at most four days). The original “last 7 days” filters are replaced by explicit time bounds, also on large joins. The bounds do not change results, because a transaction's trades, events and block share its block time; this was checked by re-running the same window.
- Results are aggregated per UTC day and per Sankey path, meaning the six columns plus a pair group. Transaction and user counts are carried as once-per-transaction and once-per-user flags, so they add up across paths.
- Pairs: the ETH/BTC and peg pairs listed by the original site are kept. Other pairs are grouped as “Other ETH/BTC pairs”, “Other peg pairs” and “Other long-tail pairs”.
- Every query execution is listed with its Dune execution ID under “Declared gaps and sources” in the notice at the top of each page.
What the charts measure
- Orderflow Sankey: the width is the USD value of retail trades from the Flashbots SQL, priced with Dune prices. Columns: frontend → meta-aggregator → solver or router → mempool (public/private) → OFA → builder.
- Liquidity Sankey: columns frontend → meta-aggregator → solver → aggregator → liquidity source → PMM. The first stages carry each transaction's requested volume, counted once per transaction. Later stages carry the USD value of each liquidity leg, so they can exceed the input when a trade is routed through several legs.
- Frontends page:
- Volume is the sum of trade USD.
- Transactions are distinct transaction hashes.
- Users are distinct transaction senders per frontend. They are exact for a single day; over several days they are sums of daily or weekly counts, hence upper bounds.
- Median trade size is interpolated from six size buckets.
- Shares refer to the retail flow captured by the original Flashbots queries, not to all DEX volume on Ethereum. Searcher, market-maker and arbitrage transactions that do not go through the listed frontends, routers and intent protocols are not included.
Declared fixes (all datasets)
- Renamed Spellbook projects.
0x API→0x-API,1inch LOP/1inch Limit Order Protocol→1inch-LOP,paraswap→velora,CoW Protocol→cow_protocol,DODO→DODO X. Without this, those flows would silently drop out of the original filters. - CoW solvers. The solver list used by the CoW liquidity view keeps only solvers active today, so past solvers became “Unlabeled Solver” (74 M$ on 30 Jan 2024). All named solver addresses are used instead, as in the CoW orderflow view.
- 1inch Fusion resolver. Resolver
0x8571…a422never has a name inoneinch.swaps. It is labelled Rizzolver, as in the original data. - CoW liquidity settlements. Settlements are taken from
cow_protocol_ethereum.batchesinstead of “transactions sent to the settlement contract”. By February 2026, 43% of settlements went through solver contracts, and the original filter found only 45% of the CoW volume. On 2024 data the result is identical. - 1inch Fusion market maker. The resolver's own contract is now the transaction target, so the 1inch settlement contracts that forward the tokens are excluded from the maker lookup. This restores, for example, Wintermute's 16.0 M$ on 30 Jan 2024, as in the original.
- CoW frontends. In the original-definitions datasets every CoW order is shown under one label, “Cowswap Integrators”, as on the original dashboard. The published SQL would use Dune app names where they exist.
Extensions (extended dataset only)
- Routers missing from the Flashbots list: 0x Settler, OKX DexRouter v2, Odos v3, LI.FI Permit2 Proxy, Relay, LiquidMesh, SushiSwap RedSnwapper, Enso and Rango. Over the period they raise the non-intent volume from 87.9 to 106.8 billion USD (+21%). Every extended row is flagged, so the original-definitions dataset is exactly the extended one minus those rows.
- CoW app names. Since mid-2025, Dune has no app name for essentially any CoW order. Names come from the public CoW API instead (one request per appData hash), which names 98.1% of the CoW volume.
- Apps with at least 1% of CoW volume appear as “CoW · <app>”: CoW Swap, DefiLlama, Aave, CoW Swap-SafeApp and Safe Wallet Swaps.
- Smaller apps are grouped as “CoW · other apps”.
- Orders without any name keep the original label “Cowswap Integrators”.
- PMM labels at venue level for Native and Clipper, where the market maker itself is not visible on-chain.
OFA attribution from builder refunds (pilot, 3 Feb 2026)
The original OFA column can only name Flashbots Protect and MEV Blocker, the two services that publish their transactions. Other private routes (wallet RPCs and OFAs such as Servo, Blink or Nova) publish nothing per transaction, but many of them are paid back by the block builder: the builder refunds part of what the transaction paid it, in the same block and right after the bundle, to an address chosen by the service. Following a suggestion by Christoph Schlegel (Flashbots), this pilot finds those refunds and the transaction they belong to.
- Exact bundle match. A refund R that follows transaction T must satisfy
value(R) = p × reward(T) − gas_used(R) × base_fee, with p a whole percentage and reward(T) the priority fee plus direct coinbase transfers of T, to within 3 wei. This is the rule in Titan'seth_sendBundledocumentation. Titan, beaverbuild and Eureka pay the refund right after the bundle; Quasar and BuilderNet batch refunds at the end of the block, so T is searched among all earlier transactions of the block (the adjacent transaction wins when it matches, otherwise exactly one transaction must match). Share of in-block refunds matched on this day: BuilderNet 86%, Titan 91%, beaverbuild 85%, Quasar 88%, Eureka 81%. - Which transaction. When the refund is a share of the user's own fee (Servo, bloXroute and some unnamed recipients), T is the user transaction. When it is a share of a backrun's payment (Blink, Nova and others), the user transaction is the one before T, the backrun's target. The role is set per address from the data: a recipient is treated as backrun-paid when the transaction before T is almost never public, which holds for bundle mates but not for unrelated neighbours.
- BuilderNet delayed refunds. Servo's refunds in BuilderNet blocks are paid later; each one equals 90% of one transaction's priority fee, which identifies the transaction (public refund API of relay.flashbots.net).
- Labels are added only where the original column is empty; Protect and MEV Blocker keep priority. Intent families keep the original column.
- By sender (lower certainty). A refund exists only when the transaction paid a tip or was backrun, but the RPC is a wallet setting. A private transaction without a label gets
<label> · by senderwhen its sender has exact attributions to one label only on the day, it landed with a builder that label is seen paying, and the sender has at most 30 retail trades on the day (bots and relayers are left out). Senders are not fully consistent: the other transactions of senders with an exact label went 16.2 M$ through the public mempool and 12.6 M$ through Protect/MEV Blocker, against 18.7 M$ propagated; 4.2 M$ belong to senders seen with two or more labels and are not labelled. - Result on 3 Feb 2026: 66.8 M$ of the 313.8 M$ of private non-intent volume without a Protect/MEV Blocker label are attributed (21.3%): 48.1 M$ from exact refunds and 18.7 M$ by sender. The rest pays no refund to a listed address, or is refunded in ways this rule does not match.
| Label | Certainty | Volume | Addresses (exact refunds on the day) | Evidence |
|---|---|---|---|---|
| Servo | named (strong) | 21.9 M$ 3,148 tx + 6.6 M$ by sender | 0xf633…0bbb (735), 0x3391…6ce5 (217), 0x5da1…a408 (18) | Safe co-owned with Safes labelled MetaMask/Consensys; BuilderNet delayed refunds = exactly 90% of one transaction's priority fee; flow from MetaMask Swaps and OKX Wallet |
| Nova? (0x99e0…3589) | hypothesis | 16.0 M$ 243 tx + 7.3 M$ by sender | 0x99e0…3589 (347) | EOA receiving 90% backrun refunds in Titan, Quasar and BuilderNet blocks; no other public link. Nova is run by Gattaca (Titan's owner); its only published refund address is for Base. Hypothesis only |
| Blink (inferred) | inferred | 9.3 M$ 400 tx + 2.3 M$ by sender | 0x22cb…d729 (410), 0x7c17…1d36 (70), 0x6457…8003 (43), 0x87ee…cc60 (26), 0x2528…7999 (15), 0x9945…38cb (8), 0x8ddb…33af (7), 0xd285…4090 (6) and 1 more | Gemini deposit contract (creator Gemini: Contract 2 0x485b9a41…2d76) receiving 90% backrun refunds in Titan, Quasar and BuilderNet blocks, Blink's documented builder set; Blink's published kickback address 0x743be0db…9869 also pays into a Gemini deposit contract (0xb0b8b4cb…e634). Inferred, not confirmed by Blink |
| Other OFA refunds | unnamed | 0.5 M$ 120 tx + 2.2 M$ by sender | 0x6f84…20c0 (495), 0x9c1b…ce96 (291), 0x3b89…8a89 (284), 0x9791…24f9 (38), 0x6403…784d (35), 0xe6f2…2602 (32), 0x6bf9…823f (18), 0x9a44…b9dd (16) and 25 more | Third-party recipient of exact in-block builder refunds whose refunded transactions are private and mostly outside Protect/MEV Blocker; operator unknown |
| bloXroute | named (label) | 0.3 M$ 27 tx + 0.2 M$ by sender | 0x965d…141c (77) | Etherscan label «bloXroute: Builder 1»; receives 50% of the user transaction's priority fee |
| Kolibrio | named (ENS) | 0.1 M$ 12 tx | 0x1f48…d6e8 (68) | ENS kolibrio.eth (Kolibrio is an OFA); 90% backrun refunds |
Recipients left out on purpose:
- Refunded transactions are in the public mempool (builder rebate on public flow):
0x3ff8…f540,0x1e14…d1d7,0x3096…e69f,0x4157…c3e3,0xd0e3…672a,0x2947…947f,0xa8bf…9fb3,0xb92b…6bac,0x6244…7ec0,0x4cb5…9082,0x333b…5ace,0x1c75…0071,0xb679…e211,0xe77d…f6ec. - Backrun refunds whose target transactions are mostly public (64%):
0xbfcf…6511. - Safe receiving about 270 ETH a day of refunds on large non-retail flow: a private orderflow deal, not a retail OFA:
0x149b…14e5. - Refunded bundles mostly carry Protect/MEV Blocker transactions (already labelled by the original OFA column):
0xce91…093b,0xb666…000f,0x63ef…129f,0x875c…c763,0x0c61…3d1f. - Backrun refunds whose target transactions are mostly public (62%):
0xf96a…ca6a.
Related addresses: Blink's published searcher kickback address 0x743b…3869 (Base and Robinhood Chain docs; on Ethereum it receives builder refunds only from June 2026), the Gemini deposit contract it pays into (0xb0b8…e634), Nova's published Base refund address 0xfbfa…99fb (no Ethereum activity) and the forwarder 0xfeee…7ffc through which builders have paid refunds since about August 2026 (the recipient is in its calldata). Names marked inferred or hypothesis are not confirmed by the services.
Tested without result: BuilderNet's public fee-refund API pays one refund per bundle to the bundle's signer, so a service that signs its bundles with a fixed key should show up in the blocks where its refund address is paid. On 12,000 recent blocks (late October 2026, 1,649 built by BuilderNet) no signer is linked to the Blink or Nova addresses beyond its base rate, so signers do not name these services.
Execution cost along the paths (pilot, 3 Feb 2026)
Following a suggestion by Christoph Schlegel: the Sankey shows the realised trades, not what each party on the path keeps. This pilot estimates it for non-intent transactions (dataset «2 Dec 2025 – 16 Feb 2026», which includes this day): tick «Colour by execution cost» above the order flow Sankey to colour each link by its cost + gas (grey when less than 10% of the link's volume is measured), and hover a link for the split.
- Reference price. Binance spot 1-second prices (ETHUSDT, BTCUSDT, USDCUSDT, opening price of the block's second, from data.binance.vision); USDT is the numeraire, WBTC and cbBTC are valued as BTC.
- Cost. Value the sender gave minus value received, net per token over all transfers of the transaction, in bp of what was given. Only transactions where the sender moves just ETH/WETH, WBTC, cbBTC, USDC or USDT and receives at least half of what was given (bridges and partial fills are left out); the covered share of the volume is shown with every figure. Gas is reported apart (base fee burned, priority fee to the builder).
- Who keeps it (only on transactions where every token moved, by anyone, is priced): pools = net gain of the DEX pools the transaction traded with (LP fee plus price impact against the reference); fee recipients = addresses that only receive and get at most 5% of the input (frontend and integrator fees, positive slippage kept by the aggregator); other = every other address (routers, RFQ makers missing from
dex.trades). OFA refunds = what the builder paid the OFA address for the transaction, and backrun bids = what the backrun paid the builder, both from the exact refunds above. - Limits. A heuristic. Prices move within a second and the CEX–DEX basis enters the cost; intent families (CoW, UniswapX, Fusion), whose surplus and solver margins need other rules, are not covered yet; Servo's BuilderNet delayed refunds have no amount here.
Volume-weighted, all non-intent transactions: cost 18.3 bp, gas 0.8 bp, covered 39% of the volume. Sanity check: MetaMask Swaps shows fee recipients at 90.3 bp, against its published 87.5 bp fee; Blink and Nova kickbacks are 90% of the backrun bids.
| OFA | Volume | Covered | Cost (bp) | Pools | Fee recip. | Other | Gas | OFA refund | Backrun bid |
|---|---|---|---|---|---|---|---|---|---|
| Private, no OFA label | 247.0 M$ | 38% | 17.8 | 12.2 | 12.2 | 2 | 0.9 | – | – |
| Public mempool | 81.1 M$ | 44% | 12.5 | 9.7 | 4.4 | 9.6 | 0.5 | 3.3 | 4.9 |
| Flashbots Protect | 38.6 M$ | 42% | 21.9 | 13 | 5.3 | 5.1 | 0.8 | – | – |
| Servo | 21.9 M$ | 29% | 10.8 | 2.2 | 7.4 | 1.6 | 1.1 | 0.6 | 0 |
| Nova? (0x99e0…3589) | 16.0 M$ | 14% | 31.9 | 21.7 | 8.6 | 0.1 | 0.5 | 3.7 | 4.2 |
| Blink (inferred) | 9.3 M$ | 79% | 37.1 | 23.1 | 3.1 | 0.5 | 0.2 | 7.3 | 8.1 |
| Nova? (0x99e0…3589) · by sender | 7.3 M$ | 40% | 30.9 | 18.5 | 5.2 | 1.7 | 0.4 | – | – |
| Servo · by sender | 6.6 M$ | 75% | 17 | 18.1 | 8.2 | 1.1 | 0.5 | – | – |
| Flashbots Protect & MEV Blocker | 4.9 M$ | 21% | 3.4 | 0 | 4.4 | -0.2 | 0.1 | – | – |
| MEV Blocker | 4.8 M$ | 10% | 20.5 | 11.7 | 1.1 | 0.1 | 1 | – | – |
| Blink (inferred) · by sender | 2.3 M$ | 66% | 40.2 | 8.1 | 18.4 | 3.1 | 0.6 | – | – |
| Other OFA refunds · by sender | 2.2 M$ | 67% | 7.7 | 7.8 | 3.4 | 13.4 | 0.2 | – | – |
| Builder | Volume | Covered | Cost (bp) | Pools | Fee recip. | Other | Gas | OFA refund | Backrun bid |
|---|---|---|---|---|---|---|---|---|---|
| Titan | 259.0 M$ | 42% | 20 | 15.2 | 9 | 3.5 | 0.7 | 5 | 5.6 |
| BuilderNet | 102.5 M$ | 35% | 15.7 | 7.4 | 8.3 | 3.8 | 0.9 | 5.2 | 5.7 |
| Quasar | 60.0 M$ | 34% | 17 | 6.9 | 14 | 2.4 | 0.9 | 3.2 | 3.5 |
| bobTheBuilder | 8.3 M$ | 60% | 4.1 | 6.3 | 12.5 | 1.3 | 0.2 | – | – |
| Vanilla Validators | 4.0 M$ | 6% | 18.4 | -0.5 | 6.3 | 13.9 | 2.5 | – | – |
| beaverbuild | 3.7 M$ | 33% | 42.9 | 9.9 | 10.6 | 3 | 1.4 | 1.8 | 1.1 |
| Frontend (largest) | Volume | Covered | Cost (bp) | Pools | Fee recip. | Other | Gas | OFA refund | Backrun bid |
|---|---|---|---|---|---|---|---|---|---|
| Kyber Integrators | 93.2 M$ | 27% | 1.2 | 4.7 | 0.9 | 3.9 | 0.1 | 10.1 | 11.2 |
| 0x API Integrators | 63.7 M$ | 12% | 56.1 | 26.2 | 29.2 | 0.8 | 0.8 | 0.6 | 0.6 |
| OKX Wallet | 50.7 M$ | 80% | 1.7 | 0.6 | 0.7 | 0.6 | 0.4 | 5.2 | 5.8 |
| Paraswap Integrators | 47.0 M$ | 53% | 2.4 | 1.1 | 2.4 | 0.5 | 0.1 | 4.4 | 4.7 |
| Uniswap Website & Wallet: Default | 43.9 M$ | 54% | 36.8 | 35.9 | 1.4 | 0 | 0.9 | 4.4 | 4.9 |
| 1inch Integrators | 29.1 M$ | 46% | 18.8 | 11.5 | 10.9 | 2.7 | 0.6 | 8.3 | 9.2 |
| Li.Fi Integrators | 18.1 M$ | 17% | 67.3 | 11 | 43 | 36.3 | 2.9 | 8.2 | 9.1 |
| Curvefi Frontend | 10.8 M$ | 54% | 2.5 | 2.5 | 0 | 0 | 0 | 1 | 1.1 |
| Binance Wallet | 9.9 M$ | 56% | 0.8 | 0.2 | 0 | 0.2 | 0.4 | 1014.4 | 1130 |
| Tokenlon Integrators | 9.7 M$ | 67% | 36.3 | 7.6 | 0 | 29.1 | 0.3 | – | – |
| Odos Frontend | 9.0 M$ | 17% | -4.4 | 4.9 | 0.1 | 3.8 | 0.4 | 19.9 | 22.1 |
| Unknown: Uniswap V3 Router 1 | 8.9 M$ | 35% | 9.5 | 9.5 | 0 | 0 | 1.9 | 1.8 | 1.7 |
| MetaMask Swaps | 8.6 M$ | 58% | 103.5 | 9.7 | 90.3 | 4.1 | 6.9 | 2.3 | 0.1 |
| Relay Frontend | 6.5 M$ | 23% | 16.9 | 5 | 9.5 | 0.5 | 1.5 | 4 | 2.4 |
OFA attribution and execution cost over the period (2025-12-02 – 2026-02-16)
The same rules as the pilot, run day by day (77 days, one Dune query per day). Three things change with a longer window:
- Address list. Refund recipients appear and fade, so the classification is rerun on one sample day per week (the Tuesdays of 7 weeks, 30 Dec 2025 – 10 Feb 2026) and the window uses the union: 64 addresses, 30 excluded. An address enters when it qualifies on at least one sample day and is excluded on none; listing it on days without its refunds labels nothing. A weekly census of all in-block builder transfers shows whether a named address kept receiving refunds (a stop with no transfers means it ceased, not a data error).
- Servo is matched in SQL from all BuilderNet delayed refunds to its three Safes (same 90% rule, unique matches); on 3 Feb 2026 this reproduces the pilot exactly.
- Prices: Binance 1-second prices at every slot second of the window.
On 2025-12-02 no mempool data exists (not even in the public archive): exact refund labels are kept, «by sender» labels are dropped and the day is left out of the shares below.
Over the window, 4644.4 M$ of the 16437.6 M$ of private non-intent volume without a Protect/MEV Blocker label are attributed (28.3%): 2940.5 M$ from exact refunds, 1703.8 M$ by sender.
| Label (exact + by sender) | Volume |
|---|---|
| Servo | 1845.3 M$ |
| Nova? (0x99e0…3589) | 1815.8 M$ |
| Blink (inferred) | 621.0 M$ |
| Other OFA refunds | 326.5 M$ |
| bloXroute | 22.0 M$ |
| Kolibrio | 13.8 M$ |
| Named address | Label | wk 1 | wk 2 | wk 3 | wk 4 | wk 5 | wk 6 | wk 7 | ||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
0xf633…0bbb | Servo | 9,882 | 6,237 | 6,573 | 4,007 | 6,226 | 9,869 | 8,045 | 8,707 | 7,786 | 8,166 | 6,704 |
0x22cb…d729 | Blink (inferred) | 2,309 | 2,081 | 2,306 | 1,976 | 2,151 | 1,981 | 2,508 | 3,683 | 2,982 | 2,653 | 2,499 |
0x99e0…3589 | Nova? (0x99e0…3589) | 3,697 | 3,235 | 3,614 | 2,643 | 2,667 | 2,029 | 2,096 | 2,201 | 1,884 | 2,208 | 2,556 |
0x3391…6ce5 | Servo | 1,448 | 1,077 | 1,589 | 1,217 | 1,803 | 2,834 | 2,329 | 2,329 | 2,021 | 2,402 | 2,176 |
0x965d…141c | bloXroute | 2,030 | 2,236 | 1,257 | 1,444 | 1,047 | 939 | 718 | 1,246 | 597 | 560 | 419 |
0x1f48…d6e8 | Kolibrio | 381 | 350 | 552 | 361 | 506 | 471 | 493 | 489 | 408 | 442 | 205 |
0x5da1…a408 | Servo | 93 | 123 | 200 | 170 | 191 | 120 | 109 | 170 | 187 | 199 | 1,281 |
0x7c17…1d36 | Blink (inferred) | 154 | 227 | 454 | 534 | 442 | 269 | 161 | 88 | 80 | 210 | 54 |
0xfa51…aaaf | Blink (inferred) | 178 | 130 | 140 | 135 | 179 | 83 | 61 | 61 | 62 | 155 | 113 |
0x87ee…cc60 | Blink (inferred) | 173 | 120 | 170 | 148 | 143 | 93 | 83 | 182 | 194 | 153 | 105 |
0x6457…8003 | Blink (inferred) | 900 | 958 | 1,073 | 922 | 903 | 401 | 269 | 792 | 222 | 335 | 349 |
0xd285…4090 | Blink (inferred) | 144 | 112 | 420 | 756 | 95 | 162 | 104 | 158 | 47 | 42 | 72 |
0x8ddb…33af | Blink (inferred) | 212 | 272 | 222 | 208 | 177 | 65 | 30 | 36 | 70 | 54 | 42 |
0x9945…38cb | Blink (inferred) | 88 | 73 | 138 | 90 | 65 | 48 | 59 | 56 | 62 | 58 | 46 |
0x2528…7999 | Blink (inferred) | 475 | 167 | 424 | 245 | 239 | 81 | 38 | 41 | 20 | 55 | 26 |
0x2fb7…bd47 | Blink (inferred) | 0 | 0 | 47 | 0 | 30 | 38 | 39 | 30 | 25 | 35 | 0 |
0x81c6…bbfd | Blink (inferred) | 60 | 69 | 136 | 114 | 78 | 20 | 0 | 0 | 0 | 0 | 0 |
0xd6a6…ce4a | Blink (inferred) | 23 | 31 | 32 | 0 | 0 | 0 | 0 | 29 | 26 | 75 | 0 |
In-block transfers from builders to each named address per week (weeks start on Tuesday 2025-12-02); unnamed listed addresses qualifying per sample day: 12, 12, 15, 21, 15, 32, 14.
December weeks. The weeks of 2025-12-03, 2025-12-09, 2025-12-16, 2025-12-23 were added after the list was fixed and use it unchanged. Their sample days, classified afterwards as a check, show recipients that are not in the list: 2025-12-03: 0xc609…1d28 (98), 0xa114…8cd1 (52), 0x2c5f…0836 (17), 0x1e43…6564 (10), 0xb489…8d6c (7); 2025-12-09: 0xc609…1d28 (165), 0x5057…5786 (11), 0x722a…f305 (9), 0x13b2…5785 (7), 0x1e43…6564 (6), 0xb489…8d6c (6); 2025-12-16: 0xc609…1d28 (297), 0xe23b…9871 (8), 0xe88f…b996 (8), 0x2c5f…0836 (7), 0xfef3…4ade (6), 0xce8a…70e4 (5), 0xd9ba…309d (5); 2025-12-23: 0xf4a0…84f6 (11); attribution in those weeks is therefore a lower bound. The largest, 0xc609…1d28, receives refunds only in the weeks of 2, 9 and 16 December 2025 and none afterwards (it stopped, it is not a data gap).
| OFA · whole window | Volume | Covered | Cost (bp) | Pools | Fee recip. | Other | Gas | OFA refund | Backrun bid |
|---|---|---|---|---|---|---|---|---|---|
| Private, no OFA label | 11796.5 M$ | 30% | 16.5 | 5.6 | 13 | 2.7 | 1.2 | – | – |
| Public mempool | 4927.6 M$ | 33% | 21.9 | 17.4 | 4.5 | 10.8 | 0.6 | 3.6 | 4 |
| Flashbots Protect | 3500.3 M$ | 43% | 9 | 6.6 | 2.3 | 4.8 | 0.4 | – | – |
| Servo | 1382.6 M$ | 36% | 6.5 | 1.1 | 6.4 | 0.7 | 1 | 1.7 | 0 |
| Nova? (0x99e0…3589) | 978.3 M$ | 41% | 5.9 | 8 | 4.2 | 1.9 | 0.1 | 2 | 2.3 |
| Nova? (0x99e0…3589) · by sender | 837.4 M$ | 40% | 4.9 | 5.3 | 2.8 | 2.4 | 0.1 | – | – |
| Flashbots Protect & MEV Blocker | 830.0 M$ | 27% | -1.4 | -0.1 | 0.7 | 3.3 | 0.1 | – | – |
| Servo · by sender | 462.3 M$ | 62% | 8.2 | 3.2 | 8 | 0.8 | 0.6 | – | – |
| MEV Blocker | 448.5 M$ | 46% | 2.3 | 1.6 | 1 | 1.1 | 0.2 | – | – |
| Blink (inferred) | 377.3 M$ | 53% | 26.6 | 13.4 | 14.8 | 1.4 | 0.2 | 8.7 | 9.7 |
| Blink (inferred) · by sender | 242.3 M$ | 48% | 9.7 | 2.5 | 12 | 1.2 | 0.3 | – | – |
| Other OFA refunds | 172.9 M$ | 38% | 59.3 | 5.4 | 44.8 | 10.4 | 1.5 | 2.6 | 2.7 |
| Other OFA refunds · by sender | 152.4 M$ | 25% | 31.8 | 2.8 | 33.6 | 6.2 | 1.3 | – | – |
| bloXroute | 15.1 M$ | 13% | 3.2 | -1.6 | 9.2 | 3 | 0.6 | 0.3 | 0 |
| Kolibrio | 11.0 M$ | 7% | 6.2 | 1 | 8.1 | -0.2 | 1 | 5.8 | 6.5 |
| bloXroute · by sender | 6.9 M$ | 3% | 12.6 | 2.4 | 3.8 | 4.5 | 2.9 | – | – |
| Kolibrio · by sender | 2.5 M$ | 39% | -3.8 | -1.7 | 5.6 | -1.1 | 0.5 | – | – |
| Builder · whole window | Volume | Covered | Cost (bp) | Pools | Fee recip. | Other | Gas | OFA refund | Backrun bid |
|---|---|---|---|---|---|---|---|---|---|
| Titan | 12488.9 M$ | 36% | 15.3 | 7.7 | 9.1 | 4.5 | 0.8 | 3.4 | 3.8 |
| BuilderNet | 8465.5 M$ | 35% | 11.4 | 5.4 | 7.8 | 3.8 | 0.7 | 1.6 | 1.7 |
| Quasar | 3744.8 M$ | 31% | 12.4 | 4.4 | 9 | 3.9 | 0.7 | 1.7 | 1.8 |
| bobTheBuilder | 361.5 M$ | 46% | 41.6 | 44.6 | 4.8 | 2.2 | 0.2 | – | – |
| beaverbuild | 333.3 M$ | 40% | 16.1 | 10.9 | 11.2 | 4.4 | 0.7 | 2.6 | 1.2 |
| BTCS | 319.3 M$ | 34% | 29.4 | 29.1 | 7.4 | 7.3 | 0.3 | 14.9 | 16.6 |
| Vanilla Validators | 131.8 M$ | 27% | 10.8 | -0.1 | 5.3 | 10.6 | 1 | – | – |
| Eureka (eurekabuilder.xyz) | 96.1 M$ | 40% | 9.8 | 1.6 | 5.8 | 6.1 | 0.5 | 1.1 | 0 |
| shimmerblocks.com | 41.0 M$ | 15% | 16.8 | 7.6 | 4.2 | 11.7 | 1 | 165.8 | 184.2 |
| Nethermind v1.35.2 | 32.6 M$ | 17% | 14.6 | 2.1 | 8.8 | 13.2 | 0.7 | – | – |
| Nethermind v1.35.3 | 26.5 M$ | 21% | 12.4 | 2.6 | 4 | 9.3 | 0.8 | – | – |
| besu 25.11.0 | 18.7 M$ | 29% | 8.2 | 0.5 | 6.6 | 5.2 | 0.8 | – | – |
| Nethermind v1.36.0 | 18.3 M$ | 13% | 12.2 | 2 | 2.8 | 5.7 | 0.9 | – | – |
| besu 25.12-develop-6d109a6 | 8.5 M$ | 33% | 7.4 | 3 | 3.9 | 8.9 | 0.5 | – | – |
| reth/v1.9.3/linux | 8.5 M$ | 12% | 13.1 | 0.6 | 2.5 | 10.1 | 0.7 | – | – |
| Builder+ btcs.com | ethgas.com | 5.9 M$ | 47% | 0.4 | 34.5 | 19.9 | 9.4 | 0.2 | 9.1 | 10.1 |
| reth/v1.9.2/linux | 5.8 M$ | 12% | 12.8 | 1.9 | 4.3 | 6 | 1.7 | – | – |
| Nethermind v1.35.8 | 4.3 M$ | 17% | 18.1 | 2.5 | 2.6 | 15.3 | 1.1 | – | – |
| besu 25.12.0 | 3.8 M$ | 29% | 17.2 | 5.4 | 14.6 | 18 | 1 | – | – |
| Frontend (largest) · whole window | Volume | Covered | Cost (bp) | Pools | Fee recip. | Other | Gas | OFA refund | Backrun bid |
|---|---|---|---|---|---|---|---|---|---|
| Kyber Integrators | 5834.4 M$ | 29% | -0.6 | -0.2 | 0.4 | 3.2 | 0.1 | 0.5 | 0.5 |
| OKX Wallet | 2780.3 M$ | 67% | 2.8 | 1.1 | 1.1 | 0.3 | 0.5 | 1.1 | 1.1 |
| 0x API Integrators | 2522.8 M$ | 22% | 24.1 | 7.2 | 22.3 | 1.9 | 0.8 | 2.4 | 2.6 |
| Paraswap Integrators | 2380.8 M$ | 36% | 2.6 | 2.4 | 2.5 | 1.8 | 0.1 | 0.9 | 1 |
| Uniswap Website & Wallet: Default | 2345.3 M$ | 47% | 25.7 | 20.9 | 5 | 0 | 0.7 | 12.9 | 14.3 |
| 1inch Integrators | 1460.4 M$ | 40% | 20 | 8.4 | 13.4 | 3.6 | 0.6 | 5.3 | 5.8 |
| Odos Frontend | 1066.7 M$ | 19% | -2.2 | -0.5 | 0.2 | 2 | 0.2 | 3.7 | 4.1 |
| Li.Fi Integrators | 899.6 M$ | 19% | 54.4 | 8.8 | 26.9 | 29.3 | 1.9 | 2.3 | 2.5 |
| Tokenlon Integrators | 823.3 M$ | 64% | 34.5 | 10.5 | 0 | 24.1 | 0.3 | 1.4 | 1.5 |
| Binance Wallet | 775.0 M$ | 53% | 0 | 0.2 | 0 | 0.1 | 0.2 | 2.6 | 2.9 |
| Unknown: Uniswap V2 Router | 716.9 M$ | 0% | 65.8 | 65.8 | 0 | 0 | 9.7 | 27.1 | 29 |
| Curvefi Frontend | 692.4 M$ | 32% | 3.4 | 2 | 0 | 0 | 0.1 | 0.6 | 0.7 |
| Relay Frontend | 620.1 M$ | 42% | 12.7 | 1.3 | 10.7 | 0.7 | 0.7 | 3.5 | 3.3 |
| Unknown: Uniswap V3 Router 1 | 554.0 M$ | 27% | 4.7 | 4.7 | 0 | 0 | 1.6 | 11.1 | 12.1 |
Completeness and known gaps
Every gap is classified as an error in the data (the activity existed) or as something that no longer exists.
| Item | Status | Classification |
|---|---|---|
| Mempool, 17 days in Jul–Dec 2025 | Missing or partial in Dune's copy of Mempool Dumpster; loaded from the public archive, with the look-back days before the period (25 days, 24.5 M transactions). On ordinary days Dune's copy and the archive match row for row. | Upload error on Dune; repaired |
| Mempool, 19 Sep and 2 Dec 2025 | Absent from the public archive too; shown as "mempool unknown". A missing previous day affects at most 0.6% of the next day's public transactions. | Error at the source; not recoverable |
| OFA column | Only Flashbots Protect and MEV Blocker can be attributed with public data in the original definitions. Over the period, 82% of private non-intent volume has no OFA (42% on 30 Jan 2024). The volume of that flow, its frontend and its builder are known; the private route it used is not. The OFA attribution pilot names 21.3% of it on 3 Feb 2026 from builder refunds (exact or by sender). | Mostly not observable with public data |
| Flashbots Protect after 16 Feb 2026 | Public files shrink, then stop on 27 May 2026, while the service still runs. | Error at the source; outside the period |
| CoW app names (extended) | 1.9% of CoW volume stays unnamed: orders with empty metadata (no name exists), metadata without an app code, and hashes unknown to the CoW API. | Mostly no name exists; a small part missing at the source |
| Liquidity coverage | The liquidity input matches 98.6–100% of the orderflow volume of each family, every week. | Complete |
| Transaction search | Rows are aggregated per day and path, so the transaction-hash filter is not available. | Design choice |
Validation
Against the original site. For 30 January 2024 the full original Sankeys were downloaded from the orderflow.art API and compared link by link with this pipeline:
| Sankey | Original links / here | Share of original volume within 2% / 5% / 10% |
|---|---|---|
| Orderflow | 295 / 305 | 76.3% / 87.9% / 94.8% |
| Liquidity | 470 / 522 | 71.4% / 85.2% / 88.6% |
All remaining differences above 1 M$ have a named cause:
- labels updated since the snapshot: CoW solver Otex is now GlueX, UniswapX fillers are now labelled Flow Traders, and some builder labels changed;
- routers added to the Flashbots list after the snapshot: Pendle, Transit, Bitget;
- DEX models rebuilt in Spellbook: Curve −6.8 M$ in orderflow and −13 M$ in liquidity, Solidly +3.4 M$;
- revised Protect and Maestro datasets.
On every week of the period:
- every Sankey conserves volume (relative error below 10⁻¹³);
- liquidity input matches orderflow per family;
- daily series have no breaks;
- the pilot day 3 Feb 2026, extracted from its weekly run, matches the separate one-day runs: same transactions, same volume to within one part in a million.
Original methodology
The methodology of the original site, written by Flashbots, is still available on Notion, with the launch blog post. It describes the concepts and categories used here. Its statements about data sources and freshness refer to the original 2023–2024 deployment.