Don’t trust the thread — run it. One test replays the real attack tx (vm.transact) and ~70.83 ETH leaves USM’s pool; another prices single vs 64-slice on the real contract and shows the ~2× gap.
https://t.co/WVApLa7Gjp
with extra visual https://t.co/YOfQioJ41x
Two takeaways:
• Redemption pricing must be path-independent — one defund(F) must equal N defund(F/N).
• Two-point averaging of a nonlinear price is wrong by design; a flash loan just splits the trade for you.
No one-line patch here — the pricing model itself is wrong.
The subtlety: nothing was manipulated. No price was pushed, no oracle moved.
The same FUM, chopped up, simply pays double — because the pricing measures impact from two endpoints instead of integrating the price over the whole redemption.
Σ defund(F/64) > defund(F)
The attack, in one tx:
• flash-loan 11,580 ETH (Morpho)
• fund USM → mint ~62.18M FUM
• defund it in 64 slices → 11,650.81 ETH out, each paid ~full price
• repay the loan, keep ~70.83 ETH
A single defund of the same FUM would’ve returned only ~5,825 ETH — a loss.
How far p2 falls is set by a debt-ratio “leverage,” reset every call
The 11,580 ETH deposit dwarfs the pool → debt ratio ≈ 0, so each 1/64 slice barely nudges it → p2 ≈ p0 → paid ~full price. Only a whole-pool burn craters p2 (~half)
Splitting stays in the no-impact zone
🧵 On Aug 9, 2026, a stablecoin lost ~70.83 ETH (~$136K) in one transaction — no oracle touched, no bug in any single line.
USM’s redemption pricing wasn’t “split-invariant”: redeeming in 64 small pieces paid ~2× what redeeming once would.
Here’s how 👇
USM is an ETH-backed stablecoin. You burn FUM (its volatility-buffer token) via defund to pull ETH from the pool.
To price a redemption, ethFromDefund averages TWO points — the FUM price now (p0) and its estimated price after the burn (p2):
ethOut = fumIn × (p0 + p2) / 2
Run it. One test replays the real attack tx and ~$6M leaves; a second removes the dead Ark from the vault and the same attack nets 0.
Clone + forge test: https://t.co/pBGRZlyynb
🧵 A ~$6M DeFi vault drain — with no bug in the math.
https://t.co/gWB4DqfFLx’s “Lazy Summer” USDC vault kept a dead adapter in its books — capped, but never removed. So anyone could gift worthless tokens into it and inflate the whole vault’s share price.
Here’s how 👇
Two takeaways, humbly:
• The Ark was capped and empty — removeArk was available but never called, leaving a raw-balance-priced adapter in NAV.
• Pricing off internal accounting, not raw balanceOf, makes the donation a no-op.
The fix, as a passing test: https://t.co/s36k87w7r5
Arrakis ✨ x @PancakeSwap 🥞 x @BNBCHAIN 🟨
The leading onchain market making protocol for token issuers debuts on BNB Chain’s leading liquidity solution.