TL;DR
- What it is: ERC-4626 USDC vault on Ethereum (
0x273D…9012, ~$41.3M), run by the Fluid / Instadapp team, looping yield-bearing stables against stablecoin debt on Fluid across three chains. - Yield source: not the strategies’ P&L — the price accrues at a governance-set
max(fixed rate, reward budget ÷ TVL); today the budget leg binds and none of it is earned. - Biggest risk: the price cannot fall, so a loss never marks down — it drains the buffer, and whoever exits last absorbs it. The 500,000 USDC reserve advertised as preventing this was never funded (Risk R1).
- For detail: BA Labs (2026-04-09) — the only narrative risk work on this vault, and it predates the leverage tripling.
How it works
USDC deposits mint fLiteUSD and park in Fluid’s fUSDC — the whole withdrawal buffer, $14.37M (34.8% of posted NAV). A Strategy Handler (0x066e…A965) pulls the rest to per-chain strategies running Instadapp DSAs, which borrow USDC/USDT against yield-bearing stables in Fluid’s own vaults. Exit is redeem() less 5bp, reverting InsufficientIdleFunds once the buffer is short — no queue.
No oracle prices this vault and the holder’s position cannot be liquidated. totalAssets() is exchangePrice × totalSupply — a liability restated, not a measurement. The loops are liquidated downstream on Fluid’s feeds, but nothing propagates back; the accrual formula is the only live path to the posted price.
Yield — two legs, neither organic. A 6.00% fixed rate (cap 30%) and a $3M/yr reward budget (cap $100M); holders get the higher. At $41.3M the budget binds at 7.26%, so nothing credited is earned. The legs cross at $3M ÷ 6% = $50M TVL, above which accrual reverts to the base. The idle third earns 5.16% — a 2.1pp drag, and the reason to hold less buffer.
Label vs exposure. The page promises “an optimal mix of yield bearing stablecoins such as sUSDe, syrupUSDC, syrupUSDT, and sUSDai.” On-chain 95.7% of gross collateral ($145.8M of $152.4M) is sUSDai-collateralised at 83.9% blended LTV; the syrupUSDC, syrupUSDT and sUSDe vaults hold dust, and $6.55M gross is USDe and PayFi Strategy Token. An unmarketed Solana leg was added 2026-08-10.
Capital quality: rented — ~860 holders, top holder 6.3%, but supply fell 43.3% from its 2026-04-15 peak to 04-24, still 89.4% of peak.
Risks
Verified on-chain at Ethereum block 25,739,860 (2026-08-12 15:37 UTC), with Arbitrum and Plasma read at their chain heads within ~2h: price mechanics, both rate legs, buffer history from launch, pause flags, every privileged key’s composition, both proxy admins, all four strategy registrations, every funded position’s collateral / debt / LTV, sUSDai concentration, the assets-vs-liabilities reconciliation, and that fundReserves() has never emitted. Taken on trust: what backs sUSDai off-chain, and Fluid’s core code — audited, but not re-derived, and the Code4rena results are private.
| ID | Risk | Mechanism | Source + our delta |
|---|---|---|---|
| R1 | A loss can never mark down; late exiters eat it | updateExchangePrice() reverts on any decrease and accrual is a set rate, so a loss drains the buffer, not the price — early redeemers leave at par. Assets $41.18M vs liabilities $41.34M: short ~$161K (0.39%). Exit: any InsufficientIdleFunds revert. | The RFC’s headline protection is a “500,000 USDC reserve fund [that] prevents exchange rate decreases”; BA Labs calls it “seeded at launch”. On-chain fundReserves() has never emitted, getReserves() = 0, and the handler holds $0.22. |
| R2 | Reconciliation structurally broken since launch | _getTotalNetAssets() reverts NavTimestampsOutOfRange past a 1h tolerance. The Arbitrum and Plasma mirrors read $3.00 / $3.01, navTimestamp 2026-03-09 — 155.7d stale — so reconcileReserves() can never run. Exit: getLastReconciliationTimestamp() still 0 next review. | Ours; not raised by BA Labs. The capital is real ($6.34M + $2.44M) — the accounting, not the money, is missing. The Solana leg registers chainId = 1, so the freshness guard never applies to it. |
| R3 | Exit has already failed twice, for 15 days | Redemption is gated on getIdleBalance(), which sat below 1% of NAV on 15 of 147 daily samples: 04-21→04-24 at $0.08–$22 against ~$26.5M of claims, and 06-04→06-14 under $400K. Exit: buffer < 10% of NAV for > 24h. | BA Labs got as far as “the worst-case exit time cannot be quantified precisely from public materials alone”; we quantified it from chain state. Corroboration: across the three April days gross deposits and withdrawals match within $6 and supply froze at 26,187,723 — exits were funded by that day’s depositors. |
| R4 | One un-timelocked 7-of-14 wallet can take the funds | The 24h timelock gates the vault’s owner functions but not the proxy admins that move funds — getAdmin() on the handler and the mainnet strategy is the Avocado. addImplementation() registers arbitrary delegatecall; pullFunds() is uncapped. Exit: unexpected LogSetImplementation / LogSetAdmin. | Fluid’s risk docs name a Team Multi-Sig (0xa8c3…CCC5) that “does not have access to funds” — true but irrelevant here: it is 4-of-8 and isAuth = false on this vault. The wallet that can move funds is undisclosed. Ours. |
| R5 | The whole book is one young, thinly-held credit asset | sUSDai backs 95.7% of collateral and exits via a FIFO queue on 30-day epochs that roll when unfilled. 97.0% of Ethereum’s sUSDai sits in Fluid, ≥75% of it this vault — deleveraging means selling to itself. Three of ten positions sit within 0.6pp of their cap. Exit: sUSDai discount > 100bp. | USD.AI’s wrapper over a PYUSD sleeve plus GPU-backed compute loans; Cayman, unlicensed. BA Labs flagged the concentration in April. Pharos records direct holder-balance freeze/seizure authority. Our delta: the $100M facility (2026-07-06, acc. 2026-08-12) is Fluid’s own — collateral, debt and buffer share one balance sheet. |
| R6 | No audit covers the deployed code, and it is 5 months old | Fluid’s audits page lists seven reports covering the core Vault, DEX and Liquidity Layer. None covers liteVault, the Strategy Handler, the per-chain strategies or the bridge aggregator. Live 2026-03-08; the 24h timelock arrived only 2026-07-04. | BA Labs reached the same conclusion in April, and adds a Code4rena engagement (Aug–Sep 2025) absent from the page — results private — plus a $500K Immunefi bounty. Partial mitigant: updateExchangePrice() is capped at +2% per call. |
Key-compromise threshold
The vault carries one role — the Avocado multisig 0x4F6F…D49e (7 of 14 signers; one an EIP-7702-delegated EOA) — which is also its secondary owner, the timelock’s proposer and canceller, and the un-timelocked proxy admin of the Strategy Handler and mainnet strategy. The handler carries five more, the lowest a bare EOA.
- Funds: 7 of 14, instantly —
addImplementation()on the handler proxy isonlyAdminwith no delay, and the module it registers calls the uncappedpullFunds(). The slower path is 7 of 14 + 24h + 3 of 5 via Safe0x196e…775e, four of whose five bare-EOA owners are also Avocado signers. - Liveness: 2 of 2 —
pullFromVault()isonlyRole(2)and uncapped, and both level-2 holders are 2-of-2 Avocado wallets. Draining the buffer halts every redemption. - Single point of failure: no single key, but a single body — one wallet breaches both tiers and is both proposer and canceller on the timelock meant to restrain it.
Liquidity & exit
redeem() less 5bp, capped by getIdleBalance() = $14,368,663 (34.8% of NAV). No tradeable secondary market for fLiteUSD, and it is not collateral anywhere. The buffer is itself fUSDC, competing with the loops’ own borrowing inside Fluid’s Liquidity layer, which holds $24.4M free — redeeming it consumes 59% of that while the strategy is short the same pool.
Defensible size (post-haircut): $0. A deliberate override of the rubric, not its output: the rubric prices slippage and fails a venue that cannot clear in 30d, and the worst closure here was 11 days. But redemptions clear at par or revert, so the failure mode is a capacity outage — and capacity has twice been ~$0. The $14.37M is discretionary: no code enforces a floor, a 2-of-2 key can move it, and holding it costs ~73bp a year in foregone spread.
Stress scenario (“NOCA exits 50% in 7d while peers also exit”): April is the replay — $18.59M withdrawn over three days against $199,763 of deposits, buffer 39.9% → 24.1% → 7.4% → $0.08, then four days at zero where the only exit liquidity was that day’s depositors.
External reviews
One narrative assessment exists (BA Labs); two algorithmic ratings sit on the Trading Strategy page. Nothing from LlamaRisk, Chaos Labs, Bluechip, DeFiScan or Exponential. Per rubric.md, >90d is stale (⚠️) — the 180d line is an ETH-LST carve-out and does not apply here.
- BA Labs — risk assessment of this vault (RFC post #3) · 2026-04-09, acc. 2026-08-12 · ⚠️ stale (125d)
- Pharos — sUSDai risk profile · updated 2026-07-08, acc. 2026-08-12 · AI-drafted, one named reviewer; Safety Score not retrievable
- Trading Strategy — Xerberus 72/100, CORE3 grade B · acc. 2026-08-12 · 3-month figures off the administered price; misstates the fee as 0%
- Fluid — audits library (core protocol; does not cover Lite) · acc. 2026-08-12
- Instadapp — Lite USD docs · risk disclosures · acc. 2026-08-12