Morpho Blue lets anyone create a lending market. Nobody has to agree to service one. Liquidation is permissionless, which is usually described as a strength, and it is, but permissionless also means optional. No party is contractually obliged to show up when a position goes underwater. Whether anyone does is an empirical question, and it is answerable, because every liquidation is an event on a public chain.
So we counted. Every liquidation on every Morpho Blue market on every chain, for the ninety days ending 2026-08-09T00:07:27Z. That is 23,171 events across 461 markets on 12 chains, done by 672 distinct liquidator addresses.
In 247 of those 461 markets, or 53.6 percent, exactly one address ever did the liquidating. Not one liquidation. One liquidator. In 201 of them there was a single event, so the market has been served exactly once. In the other 46 there were repeated liquidations and the same address handled every one of them; the busiest is a wsNET/USDG market that was liquidated 25 separate times by one address and never by anyone else.
We have not seen this measured anywhere, which is most of why we are publishing it. The rest of why is the exposure figure people will want to attach to it, which is where this measurement gets genuinely dangerous, and which is the next section.
The number that does not survive the data
Sum the open borrow across single-liquidator markets and the total is $4,373,413,580. That is the figure that makes this finding sound urgent, it is the one a reader running this query for the first time will get, and it is the one that will get quoted. It is not a measure of exposure.
$4,041,998,773 of it is a single market: a K/USDC market on Arbitrum, market id 0xfdb8221e. Three things are true about it at once, and any one of them disqualifies it.
- Morpho cannot price its collateral. The K token returns a null price and the market carries Morpho's own unrecognized_collateral_asset warning. With no collateral price, no position in it has a computable health factor, so there is nothing a liquidator could act on even in principle.
- Morpho flags it bad_debt_unrealized at RED, with $3,282,911,406 of unrealized bad debt. It is not an exposure. It is a loss waiting to be written off.
- Its borrow APY reads 297,996 percent. It has been pinned at 100.0000 percent utilization since it was created on 2025-05-07, with about one millionth of a dollar of liquidity left in it, so Morpho's adaptive rate curve has been ratcheting for fifteen months against a debt nobody can repay. The nominal borrow was about $1.0M in June 2025, $592M a year later, $2.20B on July 12 and $4.04B now. It roughly doubles every thirty days. That is not lending. That is compound interest running in an empty room.
So we wrote down an exclusion rule before we looked at what it did to the total. A market's open borrow counts as live exposure only if Morpho can price its collateral and Morpho does not flag it bad_debt_unrealized at RED. That removes 98 markets. The defensible figure for open borrow in single-liquidator markets is $327,657,848, thirteen times smaller than the naive sum. The rule is the deliverable here, not the number: any figure of this size about somebody else's protocol gets re-derived from scratch before it goes on a page, and this is what that step is for.
The corrected figure is smaller and more interesting. $322,107,565 of that $328M sits in just 21 markets, 98 percent of it. Of the 172 counted single-liquidator markets, 125 still carry any open borrow at all, and the median of those 125 is $1,056; take all 172 and the median falls to $9, because 47 of them have been fully repaid and carry nothing. Either way this is a distribution with a real head and an enormous tail of dust, and the head is where the question lives.
The head of the distribution
These are the largest markets that survive the rule. Every one of them is a live market belonging to somebody else, priced collateral, no bad-debt flag, and in the ninety days measured exactly one address ever liquidated in it.
| Chain | Market | Open borrow | LLTV | Liquidations in 90d |
|---|---|---|---|---|
| Ethereum | kBTC / PYUSD | $94,288,672 | 86.0% | 1 |
| Ethereum | weETH / RLUSD | $79,581,618 | 86.0% | 1 |
| Ethereum | sUSDS / USDT | $34,390,887 | 96.5% | 1 |
| Ethereum | sUSDe / PYUSD | $22,008,683 | 91.5% | 1 |
| HyperEVM | kHYPE / WHYPE | $14,473,716 | 86.0% | 1 |
| Ethereum | weETH / WETH | $13,889,609 | 94.5% | 1 |
Read the top row literally. A market with roughly $94 million of open borrow, an 86 percent liquidation threshold, and one liquidation in a quarter, performed by one address. That is not a claim that the market is unsafe. It is a claim about a dependency: the observed servicing history of that market is one address, and nothing on chain obliges that address to be there next time.
The hypothesis this refutes, for the second time
The reason to measure coverage is presumably that thin coverage is dangerous, and the way you would show that is bad debt. We tested it on August 7, it failed, and we wrote the failure down rather than quietly reframing it. This re-verification confirms it and makes the failure sharper.
First, bad debt in this window is tiny. Across all 23,171 liquidations, total socialized bad debt is $1,218,124 against $158,775,809 repaid. That is a 0.77 percent loss rate on liquidated volume. Morpho's liquidation machinery, thin coverage and all, mostly works.
Second, and this is the part that kills the thesis, the bad debt that does exist is dust. The median affected market took $3.42. Of 94 markets with any bad debt at all, 79 took under $100 and only 2 took more than $10,000. An incidence count that treats three dollars and a million dollars as the same event is not measuring risk, it is measuring rounding.
Apply any materiality floor and the relationship does not merely vanish, it inverts:
| Distinct liquidators | Markets | Took any bad debt | Took $100 or more |
|---|---|---|---|
| 1 | 247 | 26% | 2% |
| 2 to 3 | 114 | 16% | 2% |
| 4 to 9 | 77 | 10% | 5% |
| 10 or more | 23 | 22% | 13% |
Material bad debt rises with liquidator count. Single-liquidator markets, which are 53.6 percent of all liquidated markets, hold 0.1 percent of the bad debt in this window.
The explanation is not mysterious and it is why the metric cannot be used the naive way. Coverage is endogenous. Liquidators are not distributed across markets by a safety fairy; they show up where there is money and where there is stress. A market that attracted 164 distinct liquidators attracted them by being large and volatile, and large and volatile is what produces bad debt. Liquidator count proxies activity. It does not proxy safety, and anyone who builds a risk score on it has built a score that rewards being quiet.
What the number is actually good for
Having failed as a solvency predictor, coverage survives as something narrower and, we think, more honest: a continuity input. The question it answers is not "is this market safe" but "what is the observed servicing history here, and what happens if that stops".
Concentration is the same story one level down. Of the 125 markets that saw five or more liquidations, the median market had 40 percent of its events taken by its single busiest address, and in 16 of them one address took 80 percent or more. Multiple liquidators on the roster does not mean multiple liquidators doing the work.
None of this is an accusation against Morpho, whose data made every line of it computable and whose own API supplied the warnings that killed our headline. Permissionless liquidation with concentrated servicing is a structural property of open lending, not a defect somebody introduced. It is simply not measured, and things that are not measured get assumed.
Rebuild it yourself
The whole point of a claim like this is that you should not have to believe us. Everything here comes from Morpho's public GraphQL endpoint at https://blue-api.morpho.org/graphql, no key required.
The census is one query, paginated. Walk the ninety-day window in fixed timestamp slices, drain each slice, and deduplicate on the triple of chain id, transaction hash and log index:
query($skip:Int!, $since:Int!, $until:Int!) {
marketTransactions(
first: 500, skip: $skip,
orderBy: Timestamp, orderDirection: Asc,
where: { type_in: [Liquidation],
timestamp_gte: $since, timestamp_lte: $until }
) {
items {
chain { id } txHash logIndex timestamp
data { ... on MarketTransactionLiquidationData {
liquidator repaidAssets seizedAssets badDebtAssets } }
market { marketId lltv
loanAsset { symbol decimals priceUsd }
collateralAsset { symbol decimals priceUsd }
state { borrowAssetsUsd supplyAssetsUsd } }
}
pageInfo { count countTotal }
}
}
Group by the pair of chain id and market id, count distinct liquidator values per group, and you have the coverage distribution. Then pull each market's warnings, badDebt and collateralAsset.price from the markets query and apply the exclusion rule above, or the K/USDC market will hand you our original mistake.
Three things that will bite you. The market state embedded in a transaction row is a live read at query time, not the state at the moment of the liquidation, so treat open borrow as "now" and the events as "the window". And if you page a single descending cursor with a skip offset you can silently lose rows; we ran it both ways specifically to check, once with a descending skip cursor and once with ascending timestamp slices, and the two agree at 23,239 and 23,171 events one day of window-slide apart.
The third is the one most likely to cost you a wrong answer, and it is undocumented. This endpoint returns short pages: ask for first: 500 and you can get 498 back while pageInfo.countTotal for that slice says 665. A drainer that stops when a page comes back shorter than the page size, which is the ordinary and normally correct way to write one, stops 167 rows early and reports a clean success. Page on countTotal, and stop only on an empty page, never on a short one. We surfaced this on 2026-08-11 on a slice containing a liquidation cascade, and it showed up as a hard failure only because the script asserts that every slice drained against its own reported total. Write that assertion. Without it this is a silent undercount, which is the class of error this entire piece is about.
The full dataset is here, one row per liquidated market, 461 rows, with the exclusion reason on every excluded row:
- morpho-liquidator-coverage-2026-08-08.csv, 461 rows
- morpho-liquidator-coverage-2026-08-08.json, the summary figures above
Both are dated in the filename because they are a snapshot, not a live board. The window moves, the open-borrow figures move, and the file will not. If you want a number that maintains itself, that is what our honesty index is, and it ranks us worst on it.
Re-run three days later, by a third implementation
On 2026-08-11 the census was run again from scratch, on a window slid forward by two days, by a third independent implementation of the drainer. This is the run that found the short-page trap above. Nothing in the article below has been rewritten to match it: the figures throughout this piece remain the ones measured for the window ending 2026-08-09, because a dated measurement that gets quietly re-dated is not a measurement. This is what the same method returns on a later window.
| Measure | Window to 2026-08-09 | Window to 2026-08-11 |
|---|---|---|
| Markets with a liquidation | 461 | 451 |
| Liquidation events | 23,171 | 23,079 |
| Distinct liquidators | 672 | 674 |
| Single-liquidator markets | 247 of 461, 53.6% | 237 of 451, 52.5% |
| Open borrow, exclusion rule applied | $327,657,848 | $324,840,372 |
| Share of that held by markets over $1M | 98% | 98% |
The structural finding is stable: about half of all liquidated Morpho markets have been served by exactly one address, and the defensible exposure figure moved by less than one percent across three days and three separate implementations. The excluded Arbitrum K/USDC market, meanwhile, went from $4.04 billion of nominal borrow to $4.31 billion in those same three days without a single transaction, which is the clearest possible confirmation that excluding it was right. It is still compounding, and it is still nothing.
Why the exclusion rule is the real deliverable
The four billion dollar version of this finding is not fabricated. It comes out of real API responses, Morpho genuinely reports that market as carrying four billion dollars of borrow, and it is far more shareable than $328 million. It is also meaningless, and almost nobody who quotes it will check. The distance between a number that is sourced and a number that means something is the entire job, and on a permissionless venue where anyone can create a market, that distance is where most published figures go wrong.
So the rule matters more than either number, and it is stated here so it can be applied rather than trusted: price the collateral, drop the RED bad-debt flags, and write the rule down before looking at what it does to the total. We also keep a public log of things we measured and then declined to do, including the first run of the bad-debt hypothesis that failed here. A measurement outfit that only publishes the measurements that came out interesting is a marketing outfit with a spreadsheet. So: the structural finding stands, 53.6 percent of liquidated Morpho markets have been served by exactly one address; the exposure figure most readers will attach to it overstates by more than an order of magnitude and here is the one that survives; and the risk story everyone would want it to tell is not there in the data.