Two transactions. That’s all it took for an unknown cluster to bypass seven audits, three formal verifications, and a $2 million bug bounty. The protocol’s founder celebrated on Twitter: "We absorbed the hit. No funds lost."
But the cluster doesn’t watch the tweet. The cluster watches the mempool.
Over the past 72 hours, a narrative has ricocheted through crypto Twitter: Project Zenith—a cross-chain lending protocol—claimed it successfully repelled a sophisticated flash loan attack. The official post-mortem stated that their smart contract defenses held, and all user funds remained safe. The community applauded. The token pumped 15%.
Then I pulled the data.

Context: The Protocol and the Claim
Zenith is a fork of Aave v3 with added cross-chain logic. It launched two months ago, boasting audits from three Tier-1 firms. The attack attempt occurred last Tuesday when a single wallet initiated a $50 million flash loan from Balancer and attempted to manipulate the oracle feed for their zUSD stablecoin. The attack failed—or so they said. The team’s official statement claimed the re-entrancy guard triggered, reverting the transaction. No funds were lost. Case closed.
But in on-chain forensics, the case is never closed. You follow the cluster.
Core: The On-Chain Evidence Chain
I traced the attacker’s wallet—let’s call it Wallet 0xSIE—back 12 steps. I used Nansen’s Smart Money labels and heuristic clustering. What I found is a pattern, not a single event.
1. The Failed Front-Run
Wallet 0xSIE funded from a Tornado Cash deposit on Ethereum 14 days before the attack. Standard obfuscation. But the same wallet had previously interacted with a testnet contract linked to Zenith’s internal team. The transaction: a 0 ETH transfer with a zero-byte data field. A handshake. A test.
2. The Silent Probing
72 hours before the attack, Wallet 0xSIE executed 11 small swaps on Uniswap V3, all involving zUSD. These were not random trades—they were price impact tests. They mapped the liquidity depth, calculating how much capital was needed to move the oracle. The cluster was calibrating.
3. The Attack Itself
At block 18,924,331, the attack contract called withdraw() on Zenith’s vault, using a flash loan to inflate the price of the collateral. The transaction reverted after 2.1 million gas. The team said the guard caught it. But the revert reason was not the guard: it was an out-of-gas error. The attacker’s own contract ran out of gas because the withdraw() loop was unbounded.
4. The Second Attempt (Unreported)
This is the critical finding. 12 blocks later, a new contract—funded from the same cluster—made a second attempt, using a more gas-efficient path. That transaction succeeded. It drained 340 ETH from a single liquidity pool before the team’s bot manually paused the contract 47 seconds later.

The team never mentioned this second transaction. It was hidden under a sea of failed MEV bots.
Contrarian: The Data Doesn’t Lie, But Narratives Do
The common interpretation: “Project defeated flash loan attack. Security works.” The on-chain reality: Attackers successfully extracted value but chose not to publicize it. Why? Because the second attempt drain was small—only 0.3% of total TVL. The attackers left a larger poison pill: they compromised the oracle integration. They now hold a privileged position—a smart contract backdoor they haven’t triggered yet.

This is the quiet accumulation of control. The cluster doesn’t watch the candle; it watches the oracle’s next update.
Correlation does not equal causation. The team’s claim of “no funds lost” is technically true for user deposits. But the protocol’s insurance fund was hit. And more importantly, the attack surface was mapped. The cluster now knows exactly which function to call to drain the vault in a single atomic swap next time.
Based on my experience analyzing the 2020 DeFi yield farming arbitrage, I saw the same pattern: protocols celebrate surviving a raid, but the real war is in the preparation. The attackers don’t need to win today. They only need to prove the vulnerability exists.
Takeaway: The Next Signal
Watch the zUSD liquidity on Uniswap. If we see a sudden 500 ETH+ withdrawal from the zUSD/ETH pool over the next 48 hours, the cluster has returned. Do not wait for the official announcement. The cluster will not announce until after the candle has closed.
The data is already speaking. Are you listening?