Polystream

Incident statement: vault funds withdrawn on 29 September 2026

Published 23 October 2026. We will add updates at the bottom of this page.

On 29 September 2026 an outside party withdrew all 766.20 USDC held in the Polystream vault, using a flaw in our smart contract. The vault is no longer safe to use, so deposits are paused. We found no evidence that any customer wallet or login was accessed. We are preparing refunds for every affected customer. You do not need to do anything.

What happened

The vault is a smart contract on the Scroll network. When customers deposited, the contract issued them shares, and when they withdrew it burned shares and paid out USDC.

The withdraw function had a flaw. It paid out the requested amount first, and then burned the shares, but it capped the burn at however many shares the caller owned. It did not check that the shares covered the payout. Separately, the function that creates shares was open to anyone.

The attacker created a single, tiny share (it cost 0.000002 USDC), then asked to withdraw the entire pool in one call. The contract paid out the full amount and burned only that one tiny share. The shares that customers hold were not touched, but with the pool empty they are now worth nothing.

Timeline (UTC)

TimeEvent
29 Sep, 11:53An unknown wallet receives about 7.57 USDC.
29 Sep, 12:04The same wallet makes a normal 2 USDC deposit through the app's deposit contract.
29 Sep, 14:58:28It creates one tiny vault share. Transaction
29 Sep, 14:58:48It withdraws the entire pool (766.202108 USDC) and burns that one share. Transaction
29 Sep, 15:02:30It sends 771 USDC out of Scroll through a cross-chain bridge. Transaction

Malaysia time is UTC plus 8 hours, so the withdrawal was at 22:58 on 29 September.

Who is affected

What we have done and are doing

What you should do

Questions

Use the support page in the app. We are sorry this happened.

Check it yourself

Everything above is on a public blockchain.