The company says it wasn't a key compromise, which means the attack vector is either more sophisticated or more embarrassing.
The Summary
- Payy Network lost $1.92 million in USDC from its Ethereum rollup bridge in two separate withdrawals five hours apart
- The first batch took $95,000, the second drained nearly everything else, both to the same address
- Stolen funds were converted to roughly 683 ETH and distributed across three wallets
- Payy halted all deposits, withdrawals, and card payments while ruling out compromised private keys as the cause
The Signal
When a Web3 company gets drained and immediately announces what DIDN'T cause the breach, you're watching damage control in real time. Payy ruled out a compromised key, which narrows the attack surface to smart contract logic flaws, oracle manipulation, or frontend exploits. None of those options inspire confidence.
The attack pattern tells a story. First withdrawal: $95,000. Wait five hours. Second withdrawal: everything left. This wasn't a smash-and-grab. The attacker tested the exploit, confirmed it worked, then came back for the rest. That five-hour window suggests either extreme caution or that someone was watching to see if Payy would notice and react.
"The attacker converted the stablecoin haul into 683 ETH and split it across three wallets, standard operational security for anyone who's done this before."
Ethereum rollups are supposed to inherit security from Layer 1, but bridges remain the weakest link in the stack. Every dollar moving between layers touches code that's been live for months, not years. Payy's bridge clearly had a hole, and ruling out key compromise means it was probably in the withdrawal verification logic or the way the bridge validated cross-chain messages.
The conversion to ETH and distribution across three wallets is textbook. The 683 ETH split makes the funds harder to freeze and easier to tumble through mixers. USDC can be blacklisted. ETH in motion across multiple addresses is harder to stop.
What's missing from Payy's response: any mention of an audit timeline, when the bridge code was last reviewed, or whether they have insurance. Halting deposits, withdrawals, and card payments is the right move operationally, but it's also a full stop on user trust. Every hour the network stays frozen is another hour users are deciding whether to come back.
The Implication
If you're holding assets on any Ethereum rollup, check when the bridge code was last audited and whether the project carries exploit insurance. Payy users are now stuck in limbo with frozen accounts, waiting to see if they'll be made whole or take a haircut.
For builders, this is another data point that bridge security isn't solved. Every new rollup is shipping roughly the same attack surface with minor variations. The industry needs formal verification for bridge logic and timelocked withdrawals that give users a chance to react before funds vanish. Until then, bridge exploits will keep happening, and "it wasn't a compromised key" will keep being cold comfort.