Weekly Intel #9 — the facilitator number was wrong, and what that taught me
A stale address list made relays look like they were shrinking. A deterministic rule shows the middle of the market is growing — and three checks I ran before believing it.
I previously wrote, in plain terms, that facilitator-mediated x402 payments were shrinking — down about 30%. That was wrong. The decline wasn’t a market signal. It was an artifact of how I was counting.
The short version: I was using a hand-maintained list of facilitator addresses. It had 61 entries, and only 21 of them showed up in the window I was measuring. That list silently missed most of the real relays. When I replaced it with a rule that doesn’t depend on a list, the story flipped.
A facilitator, defined deterministically, is an address that initiates payments on behalf of others — the transaction initiator isn’t the wallet that holds the money, and that serves a meaningful number of distinct payers over the window. The “served a lot of payers” cut is what separates real public relays from one-off smart-contract wallets moving their own funds. The 289 addresses that clear 1,000 distinct payers have a self-pay rate of 0.0% in this window. With rare exceptions they only ever move other people’s money. That’s the signature of a relay, and it’s why this holds up better than a hand-picked list.
Those 289 facilitators handled at least 8,285,949 Base micro-band USDC transactions in the window. That’s about 31.3% of raw micro-band transaction count, not dollar volume. I say “at least” on purpose: rows where the initiator field is empty can’t be attributed, so the real number sits above this floor, not below it. On the clean side, after removing wash-flagged rows, it’s 3,710,121.
The old list found 4,007,902 transactions across its 21 matched addresses. Worse, only 12 of those 21 actually clear the 1,000-payer bar. So the old method was wrong in two directions at once: it counted some addresses that aren’t facilitators, and it missed roughly 277 that are. The 21 it did track happened to be a shrinking subset of large relays, which is exactly how a shrinking slice masqueraded as a shrinking market.
Here’s the part that matters more than any single number. The corrected trend is sensitive to where you draw the facilitator line, and I’m going to show you the whole curve instead of picking the flattering point. Comparing the first mature week (April 27 to May 3) with the last (May 25 to 31):
at 100 or more distinct payers: about +30%
at 1,000 or more distinct payers: about +17%
at 5,000 or more distinct payers: about -7%
The 100-payer line is the widest and noisiest definition, with more addresses and more room for error, so I don’t rest the whole story on it. The direction holds at the 1,000 line too.
If I only showed the 1,000 line, I’d say mediated activity is up. If I only showed the 5,000 line, I’d make the biggest relays look flat to down. If I used the old hand list, I’d reproduce the false “down 30%.” None of those is honest alone. The honest read: the mid-tier of the relay market is expanding, while the very largest relays are flat. The population is broadening. The top isn’t carrying the growth.
Before I believed my own corrected number, I tried to break it three ways.
First, coverage. If the tracker started attributing more initiators late in the window, growth could be fake — I’d just be seeing more, not more happening. Across the mature weeks the empty-initiator rate held steady, under 4%, and was if anything slightly higher in the later week, which means the growth is understated rather than inflated. This same check is why this issue stops at May 31 and doesn’t include the first week of June: that week’s empty-initiator rate is sitting near 11%, which means it isn’t fully indexed yet. Publishing it would invent a top-tier spike that’s really just immature data. So I left it out.
Second, threshold sensitivity. This is the one that didn’t fully clear, which is why you’re getting a curve and not a headline. The finding is real, but it’s one number per definition, not one number.
Third, late joiners. If the growth came from relays that only switched on near the end, that’s “new relays appeared,” not “settlement grew.” It cleared: 273 of the 289 were already active before early May, and that early-only subset still grows about 12.5%. New relays add to it; they don’t manufacture it.
The same week, a different number didn’t survive that process. I tried to measure triangular wash trading — payments that loop A to B to C and back, a pattern neither my filter nor the public dashboards catch. A naive pass suggested about 1% of the clean micro-stream sits on those loops. Then I looked at the addresses driving it. The top two account for 43% of the total, and each receives thousands of transactions from exactly one payer. That’s a bot hammering one endpoint, not money circling a ring. So I’m not publishing a wash number this week. The loop count is an upper bound on suspects, not a measurement, and I won’t dress it up as one.
That’s the actual point of this issue. An observability layer that can’t catch its own measurement errors isn’t worth much. Going forward, every number I put on smartflowproai.com comes with a recipe you can run and a few honest ways to prove it wrong. The earlier facilitator claim didn’t get that treatment. This one did — the list was wrong, the method caught it, and the corrected signal is better for it.
