If your protocol has a revenue page on DefiLlama, someone has probably linked it in a deck. If that page has been showing $0 for a week, nobody told you.
We pulled all 3,069 protocol fee listings from DefiLlama's public API on 26 October 2026 and compared each one against its own history. The result is uncomfortable:
- 411 protocols published non-zero fees at some point in the last 12 months and exactly
0on each of the last 7 days. - 80 protocols on Base hold at least $300,000 of TVL and appear in neither the fee overview nor the DEX-volume overview. No revenue line at all.
- The measured aggregate of the missing fee flow is $3,333,964 per day.
Before you quote that last number anywhere, read the next section. It is the reason this audit is worth reading and most "we found 411 broken adapters" posts are not.
The part where we were wrong
We hand-checked the ten largest and most recent breaks. We ran each adapter through its own harness in DefiLlama/dimension-adapters, then hit the protocol's data source directly.
Ten out of ten were not adapter bugs. The source genuinely reported zero:
- USD AI (Arbitrum, $266M TVL) — no
FeePaidevent in two days. The protocol collected nothing. The adapter was correct. - Theo Straddle Vaults (Base) —
pricePerShareunchanged for 96 hours. Nothing to fix.
A mass "fix 411 adapters" campaign would have opened 411 PRs against data that was already right, and would have been a public accusation against $266M protocols based on a parser artefact. That is the failure mode this space is full of.
So the audit ships two numbers, and only one of them is a work queue:
| Number | What it is |
|---|---|
| $3,333,964/day | aggregate measured hole across all 411 rows, including dead protocols |
| $699,504/day across 56 protocols | same measurement, restricted to protocols that still hold ≥$300k TVL |
| $23,735/day across 18 protocols | broke in the last 30 days and still holds TVL — the actionable set |
Where the breaks actually are
Days dark, for the 411 silent feeds:
0-30d ######################################## 74 30-90d #################################################################### 130 90-180d ############################################################ 102 180-365d ############################################################# 105 TVL at the break tells a blunter story:
| TVL band | Protocols |
|---|---|
| under $50k | 332 |
| $50k–$300k | 23 |
| $300k–$1M | 21 |
| $1M–$10M | 25 |
| over $10M | 10 |
Most silent feeds belong to protocols with negligible TVL. They are dead listings, not broken pipelines, and treating them as a fix queue is how you waste a month. The top of the list by raw $/day is almost entirely this:
| Protocol | Chain | TVL | Last published | Days dark | Fees/day before |
|---|---|---|---|---|---|
| Avalon USDa | Ethereum | $3 | 2025-11-07 | 352 | $559,748 |
| Lava | Arbitrum | $0 | 2025-12-26 | 303 | $459,262 |
| Pyth Pro | Solana | $0 | 2026-09-08 | 47 | $291,779 |
| USD AI | Arbitrum | $266,198,319 | 2026-10-18 | 7 | $258,434 |
| Kaito Capital Launchpad | Base | $0 | 2026-01-26 | 272 | $154,803 |
| Impermax V2 | ZKsync Era | $530,455 | 2026-01-24 | 274 | $85,106 |
| Equilibria | BSC | $11,214,028 | 2026-03-25 | 214 | $78,003 |
Two protocols with a combined TVL of $3 are at the top of a list ordered by "fees per day". That is what a naive sort gives you.
The more interesting half: 80 Base protocols with no fee page
Of 908 protocols with Base TVL, 80 have at least $300k and appear in neither overview (bridges and CEXs excluded). A protocol with TVL and no fee page gets no revenue line, no revenue ranking, and is absent from every fee-based yield comparison. For a fee-charging product, that is not a cosmetic gap.
The top of that list is not small:
| Protocol | Base TVL | Category |
|---|---|---|
| Spark Savings | $1,600,605,788 | Yield |
| Anemoy Capital | $329,988,170 | RWA |
| Team Finance | $61,639,998 | Token Locker |
| ZEROBASE CeDeFi | $60,795,107 | Basis Trading |
| Gami Labs | $58,410,645 | Risk Curators |
| Brickken | $42,430,974 | RWA |
A $1.6B savings protocol with no fee adapter on the chain it is biggest on. That is either a deliberate choice or an oversight, and it is worth knowing which.
Reproduce any single row in two commands
The whole audit is a public script, so you do not have to trust a table in a blog post.
DefiLlama's own summary endpoint, for any slug:
curl -s 'https://api.llama.fi/summary/fees/wbtc?dataType=dailyFees' | jq '.total7d' The adapter harness, from a clone of DefiLlama/dimension-adapters:
npx ts-node --transpile-only cli/testAdapter.ts fees/wbtc Then the rule that decides everything:
- harness prints real numbers, API prints zero → publish-side or chain-mapping problem, not an adapter problem;
- both print zero → check the source before you write a single line. Usually the protocol simply stopped charging;
- harness throws or returns nothing → now you have an adapter bug, and now a PR is justified.
The scripts, the raw CSVs and the evidence log are public: github.com/9xj89gzrtw-hue/defillama-fee-feed-audit.
Check your own protocol
I built a free search over all 491 rows — 411 silent feeds plus the 80 Base protocols with no adapter. Type a name or a chain; it returns status, the last day the feed published, and the measured $/day that went missing.
The free tier deliberately withholds the part that is work: the root-cause class, the exact adapter file, the reproduction commands, and the priority ranking. Those are in a $29 pack, paid in USDC on Base and verified on-chain. There is also a $99 tier where the patch gets written and the PR opened with harness output before and after.
Two things I will not do, and you should hold me to them:
- No cold DMs pairing a defect with a wallet address. That pattern reads as extortion, it gets accounts banned, and it is not how anyone gets paid here. The payment follows a merged, visible contribution.
- No promise that a maintainer merges anything. The patch and the proof are what is for sale; maintainer time is not mine to sell. If the source genuinely returns zero, the job is refused and refunded.
The audit is a snapshot, not a feed. Feeds recover, protocols die, and a row that was true on 26 October may be wrong today. Re-run the script before you quote a number at anyone — including mine.
Tip jar / custom data bounties
If this saved you a day of digging, the address is the same one the store uses, any amount, USDC on Base:
0x72Aa6edDE71B94f6b99c8e52EdC02B5C75F74d1a
I also take scoped data work — DefiLlama fee/revenue adapters, per-wallet on-chain ledgers with reconciliation, custom parsers with tests. Open an issue with the word quote on the audit repo and we scope it in public, which protects both sides better than any DM.
