A research post-mortem of Main Street Finance's June 2026 collapse — and why the design, not the trigger, is the story.
By Mihai Popa · July 3, 2026
---
Between June 20 and 22, 2026, msUSD went from $1.00 to six cents. The headlines blamed a proof-of-reserves dispute: the issuer's transparency dashboard went dark, the verification firm walked, holders ran. That's all true, and it's also not the story.
I've spent the last two days reconstructing this thing — press coverage, the surviving due-diligence record, the issuer's own statements, and direct reads of the contracts involved. Here's the thesis I ended up with, and I'll show the receipts as we go:
msUSD didn't die because a verifier quit. It died because it was architected so that a run, once started, could not be stopped — and so that running first paid better than anything else you could do. The verifier quitting just picked the date.
A note on how to read this. I tag every claim by how I know it: (on-chain) means it was read directly from the contracts (the exact commands are in the "Receipts" section — run them yourself); (primary) means a primary document (the issuer's own posts, the verifier's statement, a forum filing); (reported) means press/analytics, consistent across sources where noted; *(single-source)* means exactly one source — usually the Telos Consilium due-diligence report — quoted accurately but uncorroborated; (allegation) means asserted, not established. And a warning about evidence decay: MainStreet's own strategy page (`mainstreet.finance/strategies/msY`) is already a 404 with no Wayback snapshot, and the site is stripped to a landing page. The design record survives mostly through third parties.
One more thing before we start, because coverage keeps garbling three dollar figures: ~$4M is the pre-depeg redemption buffer; $8M+ is what the issuer moved to the minter after the crash (primary — their own post; on-chain settlement unverified); $8.5M is the redemption rush at Altura, a different protocol entirely.
TL;DR
- msUSD (~74M supply) fell to ~$0.29 in 24h and touched ~$0.06; it trades around $0.28 as of this writing (July 3; unchanged through July 9) — a bounce off the low, still ~72% below peg. Redemption is dead and the lending markets are frozen: the peg has not recovered, and neither has the mechanism (reported).
- The only USDC actually available to redeemers was ~$4M — about 5% of supply — paid out first-come-first-served at par until ~$4,000 remained (reported). The "insurance fund" was held in msUSD itself (single-source) — which is self-insurance in the most literal and least useful sense: the fund depegs with the very thing it exists to insure. In the one state of the world where you need it, it's worth what everything else is worth — not much. It could cancel liability on paper; it could never pay a single redeemer out.
- Run-defenses existed on paper: coverage-ratio triggers, a pro-rata haircut mechanism. None were implemented as automatic logic. What existed were discretionary admin functions behind an anonymous 3-of-4 multisig with no timelock — and on all the evidence I've seen, nobody pulled those levers in time (single-source: Telos DD).
- The Morpho lending markets that accepted msY (the collateral behind msUSD) priced it off a RedStone feed literally named
MSY_FUNDAMENTAL/USD— a NAV feed, book value by construction. It froze at $1.06396777 on June 20 and has stale-reverted ever since. Zero liquidations, ever (on-chain — Receipts A.1). - Both msY lending markets — 86% and 91.5% LLTV — point at the same oracle contract. One stalled feed disabled liquidations across the entire collateral complex at once (on-chain).
- ~$18M of third-party depositor money via one curated vault is trapped in the frozen 86% market — and the trap compounds: ~$22.7M at the July 3 snapshot at roughly 12,470% APY (yes, really — I cross-checked the units against actual accrual, then ~+$290k/day), ~$25.6M by July 9 with the ratchet at ~298,000% APY (~$560k/day), against collateral marked at ~35% of the debt (on-chain/API — see Receipts A.4 and A.6).
- A co-founder was listed as CRO at Tangible — whose USDR stablecoin died in a liquid-reserve run in 2023, same failure class (primary — Arbitrum forum filing; he disputes the depth of the role).
- Whether there's an actual hole in the assets, or this was a pure run on money-good-but-illiquid collateral, is still unresolved. Nothing public distinguishes the two. That itself is the tell to underwrite against.
The cast
The issuer. Main St Finance Ltd — the entity name is confirmed by its own Terms of Use (primary); the BVI incorporation is team-asserted and relayed by the Telos DD, never registry-verified (BVI has no free public registry) (single-source). Founders: Jaron Abbott (Harvard math training, CFA, prior roles reported at Barclays, Citibank, Silver Point) and Xin Fan (quant dev, MS Statistics) (single-source).
About Abbott: a March 2024 grant application on the Arbitrum Foundation forum lists him as "former CRO at Cryptic Capital Management and CRO at Tangible" (primary — I'll take a forum filing over a bio). Tangible issued USDR, which collapsed on October 11, 2023 in the same failure class as msUSD: a redemption run drained its liquid reserves within hours and the token halved (reported). Abbott's on-record position is that he did "some risk analytics work" and "was not involved in that design" (single-source). I'm presenting this as a disclosure/risk-history flag — a failure mode professionally proximate to a founder, unmentioned in MainStreet's materials — not as proof anyone knowingly rebuilt it. But it belongs in the record.
The product stack. Three tokens: msY, an ERC-4626 vault share representing NAV exposure to what the issuer describes as a market-neutral CME box-spread strategy yielding ~12% (issuer-asserted; the execution and clearing counterparties behind it were never verified); msUSD, the stablecoin, "redeemable 1:1 for USDC subject to Coverage Ratio constraints" per docs quoted by Telos; and smsUSD, staked msUSD (single-source for structure). Box spreads, if real, are the key texture here: money-good at expiry, awkward to exit early — a built-in gap between book value and what you can actually sell for today.
The credit rails. Two Morpho Blue markets on Ethereum took msY as collateral against USDC (on-chain — Receipts A):
- The main one (
0x23a7d0ff…49c8, created April 13, 2026): 86% LLTV, supplied almost entirely by a single curated vault — AlphaPing's "Alpha USDC Delta V2," marketed as a delta-neutral USDC strategy, holding ~$17.7M of third-party depositor money with a ~$19.4M cap pointed at this market. It is the only vault supplying it (on-chain/API). - A second one (
0xb317d11c…7e8d): 91.5% LLTV, ~$3.96M — an extraordinarily aggressive parameter for NAV-marked, illiquid collateral. Who created and seeded it is unknown; the Telos addendum's wallet-cluster findings gesture at non-organic activity (allegation).
Both markets use the same oracle contract. Hold that thought.
The borrowers. Leveraged loopers — msY → borrow USDC → buy more msY. We know they existed because the issuer said so itself mid-crisis ("elevated borrowing rates as leveraged loopers rush to unwind positions" (primary)). How big the loop share was, and who ran the loops, was never established — the $22.7M borrowed against a supply worth ~$18M on secondary markets at July 3 prices, plus Telos's report of exchange-funded single-purpose wallets and an "alpha wallet" active across MainStreet venues (allegation), both point toward "large and concentrated," but that's inference, not fact.
The growth. TVL went from ~$7–8M to $22M+ in about six weeks, "episodic, driven by large allocators" (single-source), and reached ~$80M by mid-June ($81.9–82.0M June 10–16 per DeFiLlama) *(reported)*. Telos's June 20 warning update — published on depeg day, before mentioning any depeg — described coordinated-looking wallet clusters across Morpho and Pendle and apparent "TVL deal" behavior, and concluded the risk of "fraud, reserve shortfall, non-organic TVL or rug-like behavior" was material (allegation, relayed from unnamed reviewers).
The design: what was promised vs. what was shipped
This is the core of the piece. Everything below was documented before the collapse, mostly in the Telos DD (which is single-source for most of it — flagged once here rather than at every line).
Redemption, as built. KYC'd users only, US persons excluded. Two-step request/claim: you request, your msUSD is burned immediately, and a time-delayed claim is created. Settlement could require "position unwinds, asset conversion, and strategy liquidity" (Pharos) — i.e., your exit was downstream of off-chain strategy liquidity. Service order: first-come-first-served, at par, until the money ran out. Think about the burn-on-request detail for a second: if the protocol freezes between your request and your claim, you've destroyed your token and hold an IOU. The mechanism punishes the *second* wave of runners without deterring the first.
The buffer that wasn't. ~$4M of redeemable USDC against 74M tokens. In the days before the collapse, ~$4M of redemptions went out the door, leaving roughly $4,000 — figures from Herd co-founder Andrew Hong's analysis, via incrypted; MainStreet's rebuttal disputed the solvency framing but never these numbers (reported, single secondary rendering).
The protocol's designated "insurance fund"? Held in msUSD. Its mechanism, per Telos: a burnAsset function that burns fund-held msUSD so the coverage ratio "matches the NAV." Let me be precise about what that is: a real mechanism — burning your own liability cancels it and spreads the loss evenly across remaining holders. But it's loss allocation, not loss absorption. It cannot fund a single dollar of par exit. In a run, it defends the ratio while doing nothing about the queue at the door. And the issuer's own crisis statement invoked this fund as its loss-absorption limit.
Depth on secondary markets was no backstop either: Telos's DeFiLlama analysis found selling $1M of msY returned ~$354k USDC, with size beyond ~$300–400k not materially increasing proceeds. (That figure is msY depth, not msUSD — but msY is what a liquidator would have had to sell, so it's the number that matters.)
Stop triggers: specced, never shipped. The documentation described a soft trigger (coverage below 99.75% for 24h) and a hard trigger (below 99.50%) for deploying the insurance fund. Neither was implemented. An "at-CR" redemption mode — everyone redeems pro-rata at the coverage ratio, which kills the first-mover advantage entirely — was described but "not yet implemented … as deterministic on-chain logic." Telos's pre-collapse warning, verbatim: "the bank-run incentive structure … remains a live risk surface during any under-coverage episode."
What existed instead was a toolbox of discretionary admin functions: redemption on/off toggles, cap settings, setCooldownDuration ("increase the redemption cooldown period to allow for the m2m loss to recover"), burnAsset, and setCoverageRatio — an on-demand haircut for exiting users. Note what that last one means: a discretionary version of the at-CR mechanism did exist. The failure isn't that loss-sharing tools were absent. It's that every one of them waited on a human decision — specifically, a 3-of-4 Gnosis Safe with undisclosed signers and no timelock — and no evidence shows any of them exercised before the buffer was gone.
Wallet limits: none. Caps were protocol-level only. A protocol-level cap without per-wallet limits doesn't slow a run; it just decides how much the fastest actor extracts.
The oracle: book value by construction. This is my favorite finding, because you can hold it in your hand. The Morpho markets priced msY off a RedStone feed whose ID — readable in the revert data of the oracle contract itself — is MSY_FUNDAMENTAL/USD. "Fundamental" means NAV. The feed's last accepted update was June 20 at 11:49:11 UTC, at $1.06396777 (above par — consistent with an accrued-NAV feed). Every price() call since then reverts with a staleness error (on-chain — Receipts A.1).
So as msY's market price collapsed toward ten cents, the credit system's last accepted liquidation mark stayed $1.0639 — and once the feed went stale, price() began reverting outright, disabling every liquidation path that depends on it. Zero liquidations fired. The market seized at 100% utilization — supply equals borrow to the unit in raw contract state (on-chain, A.3) — and has been pinned there since.
Two precisions worth keeping. First, Morpho market oracles are immutable at the market level ("once a market is deployed, its oracle address cannot be modified" — Morpho docs), but immutability fixes the address, not the feed behind it: RedStone or the adapter owner could have resumed publishing and didn't. Both legs compounded — nobody could swap it, and the provider didn't restart it. Second, this wasn't spot-price oracle manipulation, and it's only partly oracle "failure": a NAV feed reported NAV as designed, then stalled when its NAV source vanished. The underwriting error was upstream — accepting an issuer-derived book value as a liquidation price at 86% and 91.5% LLTV.
Three days in June
- Since April — public grumbling about reserve verification (reported).
- June 10–16 — TVL ~$82M; June 20: $76.1M (DeFiLlama) (reported).
- June 20, 11:49 UTC — the RedStone feed posts what turns out to be its final update: $1.06396777 (on-chain).
- June 20–22, the trigger cluster — the proof-of-reserves dashboard goes dark ("an infrastructure and reporting issue, not a solvency issue," per the team), and verifier Accountable terminates its agreement: "MainStreet was unable to meet our verification standards" (primary — Accountable's own post). I'd love to give you a clean ordering of those two events, but the tidy "dashboard first, then termination" sequence doesn't survive fact-checking — treat them as a cluster with contested order. Telos adds — uncorroborated but undisputed by Accountable — that MainStreet had shut down the verifier's instance access shortly after onboarding and resisted granular disclosure at ~$80M TVL (single-source).
- June 20, through the day — the run: ~$4M of redemptions to near-zero, then the buffer's gone, redemption arbitrage is dead, and the DEX price goes into freefall — ~$0.12 by mid-day (reported: Protos), ~$0.29 within 24h, $0.0618 low on June 21. msY collapses 70–85% to $0.097. The 86% Morpho market hits 100% utilization (on-chain).
- June 20, 20:33 UTC — roughly six hours after the collapse was underway, the issuer posts its statement (full transcript in Receipts B; it's worth reading whole). Four things stand out: it claims full backing; it announces the oracle will pause as an expected consequence of the dashboard outage — the issuer knew the feed would stall before it did; it confirms the loopers; and it commits, mid-crisis, to hold box positions to expiry rather than realize mark-to-market losses beyond the insurance fund. Book over market, stated as policy, while the market was setting the price (primary).
- June 21–22 — contagion (next section). Pharos reclassifies msUSD as "a frozen collapse case rather than an active redeemable dollar" (reported).
- June 20 → July 3 — the freeze compounds. Stored state: supply = borrow = $22,457,696.17, last accrued July 2 (on- chain). The API shows ~$22.75M by July 3 as the adaptive rate ratchet — thirteen days at 100% utilization — reaches a reported
borrowApyof 124.7 as a decimal fraction, i.e. ~12,470% APY, adding ~$290k/day to debt against collateral marked ~43% of it. Morpho's accounting still showsbadDebt= 0 and no warnings — which tells you the stale oracle, not economics, is what prevents loss recognition (on-chain + API — see Receipts A.4). - Since July 2 — nothing: no audit, no venue-level reconciliation, no confirmed new PoR provider (intent reported), no Morpho resolution, no redemption. The price has bounced to the ~$0.28–0.30 range — still roughly 70% below peg, and nothing underneath it has been fixed.
- July 9 — re-checked before publication. The oracle still reverts with the byte-identical frozen payload. The 86% market's debt: $24,641,234 in stored contract state (last accrued July 7), ~$25.63M on the API against ~$9.05M of collateral (~35% of debt), with the adaptive ratchet now at a reported
borrowApyof 2,979.96 as a decimal fraction — ~298,000% APY, adding ~$560k/day. The 91.5% market: ~$4.15M at ~1,090% APY. msUSD trades $0.28–0.29; supply frozen at 74,207,581 (on-chain + API — Receipts A.6).
So what actually caused this?
Separate three layers.
The trigger (explains the timing). For a token whose collateral you can't verify on-chain, the attestation is the peg. When the attestation layer failed — dashboard dark, verifier out — there was nothing between "trust me" and "run." That's it. That's all the trigger explains.
The structure (explains the magnitude). A depeg like this needs two things at once: a book marked above the market-clearing price, and exit capacity far below exit demand. Either alone is survivable. msUSD shipped both, deliberately:
- A ~5% par buffer paid out FCFS doesn't mitigate a run — it subsidizes one. It guarantees the first movers a riskless exit financed by everyone behind them. Every redemption raised the payoff to being next out the door.
- No automatic gate, haircut, or pro-rata mode existed to convert the stampede into orderly loss-sharing — and the discretionary versions that did exist sat unexercised behind the multisig.
- The lending markets couldn't clear either, because their liquidation price was the issuer's book. Redemption arbitrage exhausted, liquidations impossible: the secondary price had no floor left. Pure price discovery on a trust vacuum.
- And the empirical latency of "discretionary": the defensive $8M reached the minter after the buffer was empty and the price had collapsed.
My verdict, tagged as the assessment it is: the causal weight sits in the design. Given the trust-based peg, the FCFS crumb of a buffer, no automatic under-coverage mechanism, and book-value oracles at 86–91.5% LLTV, a severe confidence shock — this one or another — would very likely have produced this class of outcome. The part I'll state as certain, because the evidence supports it flatly: once the run began, no automatic mechanism existed to stop it, and no discretionary one did. This design didn't just tolerate a run. It rewarded one.
The unresolved layer (aggravators). Three things I can't settle:
- Is there an actual hole? Box spreads held to expiry are money-good — if the book is real. The issuer says fully backed (falsifiable, unproven); Accountable says MainStreet failed to prove reserves when given latitude; Telos assesses material fraud/shortfall risk (allegation). Everything verifiable on-chain — buffer drain, frozen feed, 100% utilization — is consistent with both a run on sound collateral and a shortfall being papered over. The refusal to permit venue-level verification at $80M TVL is the strongest circumstantial point against the benign reading. It is not proof.
- Insider front-running? A pseudonymous observer (@YouAreMyYield, via Protos) inferred it from the six-hour gap between the collapse and the issuer's statement (allegation). The wallet-level evidence lives in Webacy's redemption-velocity forensics: two smart-contract wallets ( 0xc94a…3200 and 0xc8f8…ece4, a 54/46 split), both activated on June 15 by a single operator EOA ( 0xce57…69bd), redeemed ~$8M — about 11% of supply — at par over June 15–20 while the price sat flat at $0.9995 (reported — Webacy's on-chain forensics; not independently reproduced here). Their window and the ~$4M pre-depeg redemption figure reconcile on dates: DeFiLlama supply shows ~$4.1M of contraction on June 17–18 and ~$7.9M across June 16–21. So the exits were concentrated, coordinated, and early — that much is now documented. What remains an allegation is the word insider: nothing attributes those wallets to the team. Their piece is the detection half of this story — the run was legible in supply data days before it was visible in price — and this piece is the design half: why, once detected, nothing could stop it. Worth saying either way: in an FCFS design, the window between private awareness and public disclosure is structurally the insider-extraction window, whoever used it.
- Non-organic TVL? If Telos's exchange-funded clusters and "TVL deals" are right, the depositor base was concentrated, informed, and fast — the worst possible holder distribution to put in front of a sequential redemption queue.
The contagion was a freeze, not a loss
AlphaPing's depositors. The ~$18M in Alpha USDC Delta V2 — third-party money in a vault marketed as delta-neutral USDC — can neither withdraw (100% utilization, $0 free liquidity) nor be made whole by liquidation (oracle at book). Notice what transmitted the damage: not a default, a freeze. And the freeze compounds — impaired debt was growing ~$290k/day at the ratcheted rate as of July 3, while recognized bad debt stays zero. Whether that accrued interest is ever paid, written off, or renegotiated depends entirely on the endgame; "impaired but unrecognized" is the accurate current state, not "lost."
Altura. Within days, a separate protocol running a ~30%-yield USDT vault processed $8.5M of redemptions in 24 hours, paused, and wound down; its AVLT token fell ~14% intraday ($1.09 → $0.93; you'll also see ~11% quoted — sampling-window artifact), market cap $39M → $26M (reported: Protos, The Block, crypto.news). Here's the instructive part: Altura explicitly denied any exposure — "we have never had any exposure to Mainstreet or any of its underlying investment strategies" (reported — direct quote). The contagion channel was pure sentiment aimed at a structurally similar target: liquid on-chain liabilities against slower off-chain assets ("some positions can return capital quickly, while others need standard settlement and redemption periods" — their own disclosure). Depositors went looking for the next msUSD and found the same race. Combined damage across msUSD and AVLT market caps: ~$69M (reported: Protos).
This keeps happening
Stream Finance xUSD, November 2025. On November 4, 2025, Stream disclosed a $93M loss at an external fund manager; xUSD fell ~77% to ~$0.26 in a day, freezing ~$160M of deposits with ~$285M of interconnected debt (reported: BlockEden; loss and depeg mechanics corroborated by CCN). The rails failed the same way: lending protocols (Euler, Morpho, Silo, Gearbox) kept xUSD oracle prices at or above $1.00, no liquidations fired as the market fell toward $0.23, markets hit 100% utilization with rates spiking (reported: BlockEden). One source-level discrepancy I'm preserving rather than smoothing: Tiger Research describes the oracle as frozen at $1.26 rather than hardcoded at $1.00 — doesn't change the mechanism (book-side mark held above a collapsing market), but it means the exact oracle behavior varied by venue, so don't quote it more precisely than "held above market."
The comparison is the strongest single piece of evidence for the thesis. xUSD had an admitted asset-side hole at trigger time. msUSD had a trust shock with the asset side still unresolved. Same class of outcome anyway: book-marked collateral, 100% utilization, no timely liquidations, trapped lenders. When an admitted loss and a mere confidence wobble produce the same end- state, the end-state is a property of the oracle-and-redemption architecture, not the asset event. KuCoin's flash desk called msUSD the fourth hardcoded/stale-oracle failure in 14 months (reported). This is the failure pattern of a product class, not a one-off.
Tangible USDR, October 2023. Same failure class — liquid-reserve redemption run, hours to empty, token halved, redemptions still incomplete years later (reported) — relevant here through the personnel link above.
If you lend against NAV-marked collateral
The takeaways, written from the lender's seat (the AlphaPing-depositor seat, not the issuer's):
- Underwrite the oracle's marking regime before the issuer's balance sheet. The feed name told the entire story:
MSY_FUNDAMENTAL/USD. If the collateral's oracle can't print a market-clearing price under stress, assume liquidation value ≈ 0 and that the position freezes instead of closing. A "fundamental" feed at 86% LLTV is an unhedged short put on issuerhonesty. - Ask who can un-freeze the feed. Immutability fixes the oracle address, not the publisher's behavior. This failure needed both: an unswappable oracle and a provider with no obligation to keep publishing once its source vanished. The feed's operational dependencies are market parameters — treat them that way.
- A par buffer smaller than runnable demand is a run subsidy. Sequential service below 100% liquid coverage raises run probability: it pays the fastest and bills the rest. Pro-rata/at-CR redemption, binding gates, or per-wallet limits are what separate survivable structures from this one.
- Discretionary controls are not controls in a run. An admin toggle behind an anonymous, non-timelocked multisig has unknowable latency and alignment. msUSD's empirical answer: the cavalry arrived after the buffer died. Only pre-committed, automatic logic counts in the stress path.
- Specced-but-unimplemented safeguards are a red flag, not a comfort. The docs described coverage triggers and at-CR redemption; the chain had neither. Verify deployed behavior, not documentation intentions.
- Attestation-based pegs fail off-chain first. Where the verifier is the peg, verifier-relationship health is a leading indicator — here it gave a two-month warning (concerns from April, then the dashboard, then the walk-out). And assume the privately-informed are already ahead of you in the FCFS queue.
- Freeze is its own contagion channel — and it compounds. 100%-utilization lockups transmit stress with zero defaults, while adaptive IRMs ratchet to absurd rates (~12,470% APY by day 13 here, ~298,000% by day 19) on debt that may never pay, and the market prints badDebt = 0 throughout. Cap capital-frozen-given-stress, not just loss-given- default, and treat a zero-bad-debt readout on a stale-oracle market as meaningless.
- Exit-liquidity coverage is the binding metric. 74M runnable supply vs. ~$4M redeemable USDC plus ~$300–400k of real collateral-leg depth: under 6% total exit capacity before contagion demand. For NAV-marked collateral, compute (liquid buffer + true secondary depth of the collateral leg) / runnable supply — and stress it at 99.9%.
- Concentration on both sides is a silent assumption. One curated vault was the only supplier of a $20M+ market; the borrow side was (per the issuer) loopers. That's not a money market. That's a bilateral credit deal wearing a money-market costume.
What I still don't know
- The solvency test. Do the box positions actually settle at par at expiry? Does anyone ever get venue-level reconciliation? This is the discriminating evidence between "run on good collateral" and "papered-over hole."
- Loop share and borrower identity — and whether Telos's "alpha wallet"/exchange-funded clusters map to team-linked addresses, which would also bear on the front-running allegation — as would attribution of the two redeeming wallets in Webacy's forensics.
- The Morpho endgame. The feed stale-reverts, the address is immutable, and as of July 3 collateral covered ~43% of debt compounding at ~12,470% APY. Does RedStone resume — and at what mark? Resuming at the old $1.0639 NAV level would re-enable liquidations only for positions whose accrued debt has outgrown that mark; resuming at anything near market price would mean mass liquidation at fire-sale values. Does the borrower repay? Negotiated unwind? Or do the vault depositors eat a socialized write-off?
- Who created and seeded the 91.5% market, and what diligence AlphaPing did before concentrating a "delta-neutral" vault into the 86% one.
- The $8M+ minter transfer — did it settle on-chain, and where did it go? Plus whatever new PoR arrangement materializes beyond reported intent.
---
Receipts A — reproduce the on-chain claims yourself
Everything here ran on 2026-07-03 (~13:05 UTC, chain head block 25,452,181) with Foundry cast against the public RPC https://ethereum-rpc.publicnode.com. Four commands, no API keys.
A reproduction note: these were live reads at that block. The oracle revert (A.1) and the market parameters (A.2, A.5 — immutable by design) reproduce identically on a live read today; the stored market state (A.3, A.5) moves whenever anyone interacts with the market. To reproduce the exact stored-state values shown here, add --block 25452181 to the command — which requires an archive RPC, as the publicnode endpoint above rejects historical state calls without a token.
A.1 The frozen NAV feed
$ cast call 0xB0b6Fc449CcF81Ff4129A86ddc814412E3Cd9Aa4 "price()" --rpc-url https://ethereum-rpc.publicnode.com
Error: execution reverted, data:
0x4f319ffe
4d53595f46554e44414d454e54414c2f55534400000000000000000000000000
000000000000000000000000000000000000000000000000000001 9ee4dcdbe0
00000000000000000000000000000000000000000000000000000000 6a367e37
00000000000000000000000000000000000000000000000000000000 06577c69
Decoding (certain unless tagged): 0x4f319ffe is an unidentified custom error selector. Word 1 is ASCII MSY_FUNDAMENTAL/USD — the feed prices msY as a "fundamental" (NAV) value. 0x6a367e37 = 1,781,956,151 = 2026-06-20 11:49:11 UTC, the last accepted update. 0x06577c69 = 106,396,777 at 8 decimals = $1.06396777, the frozen mark. 0x019ee4dcdbe0 = 1,781,956,140,000 — (likely) the RedStone data timestamp in milliseconds, 11 seconds before the block that stored it.
A.2 The 86% market's parameters
$ cast call 0xBBBBBbbBBb9cC5e90e3b3Af64bdAF62C37EEFFCb \
"idToMarketParams(bytes32)(address,address,address,address,uint256)" \
0x23a7d0ff682b323363fb8ba58327ed87001f6306e09b7fd7413bbe4698e749c8 \
--rpc-url https://ethereum-rpc.publicnode.com
0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 # loan = USDC
0x890A5122Aa1dA30fEC4286DE7904Ff808F0bd74A # collateral = msY
0xB0b6Fc449CcF81Ff4129A86ddc814412E3Cd9Aa4 # oracle (A.1)
0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC # IRM (Adaptive Curve IRM, likely)
860000000000000000 # lltv = 86%
A.3 The 86% market's stored state
$ cast call 0xBBBBBbbBBb9cC5e90e3b3Af64bdAF62C37EEFFCb \
"market(bytes32)(uint128,uint128,uint128,uint128,uint128,uint128)" \
0x23a7d0ff682b323363fb8ba58327ed87001f6306e09b7fd7413bbe4698e749c8 \
--rpc-url https://ethereum-rpc.publicnode.com
22457696165571 # totalSupplyAssets = $22,457,696.17 (USDC, 6dp)
20293832059275482837 # totalSupplyShares
22457696165571 # totalBorrowAssets — equals supply exactly: 100% utilization to the unit
20253014234406047853 # totalBorrowShares
1783000823 # lastUpdate = 2026-07-02 14:00:23 UTC
0 # fee
A.4 Live accrual and valuation (Morpho GraphQL API — *not* raw chain state)
POST https://blue-api.morpho.org/graphql
{ markets(where: { uniqueKey_in: ["0x23a7d0ff...49c8"] }) { items {
lltv state { utilization supplyAssetsUsd borrowAssetsUsd collateralAssetsUsd borrowApy timestamp }
badDebt { usd } realizedBadDebt { usd } warnings { type level } } } }
→ utilization 1.0 · supplyAssetsUsd = borrowAssetsUsd = 22,745,158.53
collateralAssetsUsd 9,882,525.52 (~43% of debt)
borrowApy 124.699 ← DECIMAL FRACTION → ~12,470% APY
timestamp 1783083911 (2026-07-03 13:05:11 UTC) · badDebt $0 · realizedBadDebt $0 · warnings []
The unit cross-check that confirmed the APY interpretation: stored principal $22,457,696 (A.3) grew to $22,745,159 in 23.1 hours = +1.28% ≈ +1.33%/day. A 124.699 fraction APY implies ln(125.699)/365 ≈ 1.32%/day — match. A 124.7% APY would imply ~0.22%/day, off by 6×. That's ~$290k/day accruing to trapped principal.
Caveat on A.4: unlike A.1–A.3, these are live API-derived values — the USD fields depend on Morpho's price inputs and drift between queries even at the same state.timestamp (a repeat query ~30 minutes later returned supply $22,743,716.48 and collateral $9,535,803.45 at the identical timestamp). Treat them as time-stamped snapshots; the fixed anchors are A.1–A.3.
A.5 The second market — and the shared oracle
Market ID 0xb317d11c2bc2c0c8e6ea3c6517731cf667c86f2c716624be50319a6d32a97e8d (all values read directly on-chain / from the API):
$ cast call 0xBBBB…FFCb "idToMarketParams(bytes32)(…)" 0xb317d11c…7e8d --rpc-url …
loan USDC · collateral msY
oracle 0xB0b6Fc449CcF81Ff4129A86ddc814412E3Cd9Aa4 ← SAME contract as A.1/A.2
IRM 0x870a…00BC · lltv 915000000000000000 (91.5%)
$ cast call 0xBBBB…FFCb "market(bytes32)(…)" 0xb317d11c…7e8d --rpc-url …
totalSupplyAssets = totalBorrowAssets = 3,964,813.178039 USDC # 100% utilization to the unit
lastUpdate = 1783035143 (2026-07-02 23:32 UTC) · fee = 0
API snapshot: supply = borrow $3,973,981.53; collateral $1,380,349.30 (~35% of debt); borrowApy 3.689 fraction ≈ 369% APY; badDebt $0.
The punchline: one oracle contract served both msY markets. A single stalled feed disabled liquidations across the entire msY collateral complex — at 86% and 91.5% LLTV — simultaneously.
A.6 Update — the freeze, six days on
Re-run on 2026-07-09 (~12:50 UTC, chain head block 25,496,334), same commands as A.1–A.3/A.5, live reads:
- A.1 unchanged: price() reverts with the byte-identical payload — feed
MSY_FUNDAMENTAL/USD, last accepted update June 20 11:49 UTC, $1.06396777. - 86% market stored state: totalSupplyAssets = totalBorrowAssets = 24,641,234.334823 USDC — still 100% utilization to the unit; lastUpdate 1783457819 (2026-07-07 16:57 UTC, the most recent accrual event).
- API snapshot (same drift caveats as A.4): supply = borrow $25,626,770.83; collateral $9,051,765.64 (~35% of debt);
borrowApy2,979.958 as a decimal fraction ≈ ~298,000% APY. Unit cross-check, same method as A.4: $22,745,159 (July 3, 13:05 UTC) → $25,626,771 (July 9, 12:45 UTC) = +12.7% over 6.0 days ≈ +2.0%/day average while the ratchet was still climbing — consistent with the fraction reading, and ~$560k/day at the endpoint rate. - 91.5% market: stored state untouched since July 2 (no interaction, so no accrual event); API supply = borrow $4,148,221, collateral $1,310,283 (~32% of debt), borrowApy 10.90 fraction ≈ ~1,090% APY.
- msUSD: $0.283 (DeFiLlama) / $0.289 (CoinGecko); circulating supply still 74,207,581 — frozen since June 22.
Receipts B — the issuer's crisis statement, in full
Posted Sat Jun 20, 20:33:53 UTC 2026 from @Main_St_Finance (org-verified, 1,639 followers), ~6 hours after the collapse was underway. Retrieved 2026-07-03 via the fxtwitter mirror
( api.fxtwitter.com/Main_St_Finance/status/2068432169140400252; X blocks direct fetch); timestamp snowflake-decoded and mirror-confirmed. Engagement at retrieval: 46 replies, ~50.8k views.
Mainstreet Update — Morpho, Proof of Reserves & Liquidity
We want to address the current situation around the Mainstreet Morpho market and provide clarity.
First and most importantly: Mainstreet remains fully backed.
The recent shutdown of our third-party proof-of-reserves dashboard does not reflect any loss of assets or deterioration in portfolio quality. This is an infrastructure and reporting issue, not a solvency issue.
As a result of the dashboard going offline, the oracle supporting the Morpho market is expected to pause within the next 24 hours. This has created understandable concern and triggered elevated borrowing rates as leveraged loopers rush to unwind positions.
We are actively responding on multiple fronts:
Engaging alternative proof-of-reserves providers to restore independent verification as quickly as possible.
Continuing to unwind box spread positions and redeploy liquidity into the minter / Morpho ecosystem.
Preparing to act as liquidity provider and liquidator of last resort if necessary to prevent disorderly market conditions.
Over the past several days, we have already unwound our shortest-dated box positions and released free cash, with more than $8 million in USDC already transferred to the minter to support liquidity and assist with unwinds.
Mainstreet's core portfolio consists primarily of box spreads. These are structurally low-volatility positions designed to converge to fair value at expiry, making them highly predictable from a NAV perspective when held to maturity.
However, box spreads are not always frictionless to exit early.
Selling before expiry may involve:
Transaction fees Wider bid/ask spreads Temporary market-maker discounts Liquidity-dependent haircuts based on expiry and position size
This means that while our portfolio remains fully backed, converting positions into immediate liquidity depends on prevailing market depth and market-maker appetite.
Our priority is clear: protect NAV while maximizing liquidity for the protocol.
We are willing to accept elevated fees and modest execution costs to accelerate liquidity release, supported by the protocol insurance fund. However, we will not realize losses beyond the insurance fund purely to force immediate exits. If market pricing becomes materially irrational, we will allow positions to continue toward expiry and realize full value at settlement, as outlined in our risk disclosures and discussions with key partners.
If borrowing rates continue to rise and liquidations occur, Mainstreet is prepared to step in as liquidator of last resort. As additional USDC is freed from box maturities and unwinds, part of that capital may be deployed to absorb and liquidate stressed Morpho positions to minimize bad debt risk.
Weekend liquidity is currently limited, and market-maker quotes are materially less favorable than during normal trading hours, which temporarily slows execution. We expect to have a clearer picture over the coming days and will continue providing updates as progress is made.
We understand this is a stressful situation and sincerely appreciate the community's patience and trust.
Our commitment remains unchanged: protect user funds, preserve NAV, and restore normal market conditions as quickly and responsibly as possible.
Read it again knowing what happened next: the oracle pause is announced as *expected* (they knew the feed would die); the loopers are confirmed from the issuer's own mouth; the hold-to-expiry line is the book-over-market policy stated explicitly; and "liquidator of last resort" anticipates liquidations that the frozen oracle then made impossible.
Method note
Every load-bearing claim in this piece was checked against independent sources where they exist, and tagged where they don't. Two claims that circulate in coverage did not survive that check and are treated accordingly in the text: the supposed FalconX/Marex/CME execution chain (unverified — only the issuer's own "box positions" characterization stands) and the clean "dashboard shutdown, then verifier termination" ordering (contested). The on-chain core was read directly from the contracts at block 25,452,181 (Receipts A). On-chain figures are a 2026-07-03 snapshot of a live, compounding situation; press price percentages vary by sampling window across outlets.
Sources
On-chain / primary
- Morpho Blue 86% market: https://app.morpho.org/ethereum/market/0x23a7d0ff682b323363fb8ba58327ed87001f6306e09b7fd7413bbe4698e749c8 (params & state also read directly via `cast` — Receipts A)
- Oracle contract
0xB0b6Fc449CcF81Ff4129A86ddc814412E3Cd9Aa4—price()revert payload (Receipts A.1) - Morpho docs, oracle immutability: https://docs.morpho.org/learn/concepts/oracle/
- MainStreet crisis statement: https://x.com/Main_St_Finance/status/2068432169140400252 (transcript: Receipts B)
- Accountable termination: https://x.com/AccountableData/status/2068317918031761747
- re.al LTIPP application (Abbott, "CRO at Tangible"), 2024-03-04: https://forum.arbitrum.foundation/t/re-al-ltipp-application-final/22083
- Main St Finance Ltd Terms of Use: https://mainstreet.finance/tos.pdf
Preserved design documentation
- Telos Consilium, MainStreet: Comprehensive Due Diligence (~Feb/Mar 2026; WARNING addendum June 20, 2026): https://telosc.com/research/mainstreet-dd — single-source for most design claims; formally retracted by its own author; its counterparty-chain claim did not check out and is excluded above
- Pharos, msUSD risk profile: https://pharos.watch/stablecoin/msusd-main-street/
- mainstreet.finance (stripped;
/strategies/msY404s, no Wayback snapshot as of 2026-07-03)
Press / analytics
- Webacy (wallet-level redemption forensics; two-wallet / operator-EOA attribution): https://www.webacy.com/blog/msusd-depeg-redemption-velocity-risk
- incrypted (Hong's buffer figures; oracle-freeze reporting — note it attributes the frozen feed to msUSD, the on-chain read shows it prices msY): https://incrypted.com/en/msusd-stablecoin-loses-dollar-peg-after-split-reserve-verification-provider/
- Protos ($69M combined damage; insider-allegation relay): https://protos.com/latest-defi-yield-vault-drama-wipes-out-69m-of-msusd-and-avlt-market-cap-1/
- Crypto Briefing (msY collapse, AlphaPing vault): https://cryptobriefing.com/morpho-blue-vault-msy-collapse-loss/
- The Block (Altura): https://www.theblock.co/post/405477
- crypto.news: https://crypto.news/mainstreet-defends-msusd-backing-after-85-price-drop/ and https://crypto.news/altura-shuts-stablecoin-vault-after-8-5m-redemption-rush/
- DeFiLlama (TVL series): https://defillama.com/stablecoin/main-street-usd
- KuCoin News: https://www.kucoin.com/news/flash/mainstreet-responds-to-msusd-depeg-assets-still-fully-backed and https://www.kucoin.com/news/flash/defi-hardcoded-oracle-vulnerability-repeats-for-fourth-time-in-14-months
- Phemex (new-PoR intent): https://phemex.com/news/article/mainstreet-to-integrate-new-proofofreserves-amid-msusd-depegging-concerns-90168
- CoinGecko: https://www.coingecko.com/en/coins/main-street-yield and https://www.coingecko.com/en/coins/main-street-usd
- Yahoo Finance: https://finance.yahoo.com/markets/crypto/articles/main-street-msusd-stablecoin-loses-201216552.html
Stream Finance xUSD comparison
- BlockEden, Anatomy of a $285M DeFi Contagion: https://blockeden.xyz/blog/2025/11/08/m-defi-contagion/
- CCN, Stream Finance's xUSD Depeg Explained: https://www.ccn.com/education/crypto/why-xusd-depegged-stream-finance-stablecoin-crisis-explained/
- Tiger Research, Collapse of the DeFi Jenga: https://reports.tiger-research.com/p/collapse-of-the-defi-jenga-the-stream-eng


