Aztec exploits: the 909 ETH never moved — the Tornado Cash deposits came from a different drain

PublicAML · On-chain investigation · 5 October 2026

In June three separate drains hit Aztec’s retired rollup contracts on Ethereum. In July and August, headlines said the Aztec hacker was feeding the 909 ETH from the first one into Tornado Cash in slow batches — 500 ETH so far. We read the wallets. The wallet that took the 909 ETH has not sent a single transaction since the day of the exploit: the ether, 270,513 DAI and 167.89 wstETH are all still there. The Tornado deposits are real, but they came from the third drain — 1,158 ETH taken three days later from an older contract — and that money did not stop at 500: all of it was in the mixer by 26 August.

909.08 ETH

on the 14 June wallet — untouched for 113 days

270,513 DAI + 167.89 wstETH

on the same wallet, also untouched

1,158 ETH

from the 17 June drain — all in Tornado Cash by 26 Aug

50 ETH

from the 15 June drain — in Tornado within two hours

Three drains in four days

Aztec Connect was shut down in 2023, but its contracts are immutable and people’s money was still inside. According to Aztec Labs’ incident report, on 14 June 2026 at 12:26 UTC an attacker submitted 14 crafted rollups and withdrew balances that were never backed: 908.99 ETH, 270,513 DAI, 167.89 wstETH and smaller amounts of LUSD and Yearn vault tokens — about $2.19 million at the time. All of it went to one wallet, 0x0F18D8b44a740272f0be4d08338d2b165b7EdD17, funded three hours earlier with 0.1 ETH from Tornado Cash.

On 15 June a second wallet, 0x7ec9F769d932D3f716949E7ca3E079b7817d06DB, repeated the method on what was left — wrapped Aave and Compound positions worth about $88,000 — and converted them to 46.5 ETH.

On 17 June at 18:34 UTC a third wallet, 0x6952d9246e9aFE8B887B2877225163436F78E97F, used the escape hatch of the older rollup contract — Aztec’s first private-payments rollup, 0x737901bea3eeb88459df9ef1BE8fF3Ae1B42A2ba — and took 1,158 ETH in one transaction. Its gas came from the hot wallet of an instant-exchange service thirteen minutes earlier.

We do not know whether one person did all three. The three wallets were funded three different ways and never sent anything to each other. What we can say is where each one’s money is.

The first wallet: nothing has moved

On 5 October 0x0F18D8b44a740272f0be4d08338d2b165b7EdD17 holds 909.08 ETH, 270,513.05 DAI, 167.89 wstETH, 9,273.73 LUSD and the Yearn vault tokens — exactly what it took on 14 June. Its last outgoing transaction is the exploit itself. The only later entries in its history are zero-value messages sent *to* it by strangers. At today’s price of about $2,717 per ETH that is roughly $3.3 million sitting on one address.

None of it can be frozen by an issuer: ETH, wstETH, DAI and LUSD have no freeze function. The only thing that can still stop this money is the exit — an exchange or service that screens deposits.

So whose ether went into Tornado Cash?

Reports in July and August, citing PeckShield, described “the Aztec exploiter” sending 145 ETH to Tornado Cash on 2 July and 300 ETH on 8 August, and presented it as 55% of the 909 ETH from the 14 June theft, laundered on a slow timetable.

Those deposits exist, and their dates and sizes match — but they trace back to the 17 June wallet, not the 14 June one. The 1,158 ETH was split the same evening, regrouped the next day on 0x69923e5264b6E1634Ee673F34fc6350Cb7A05f72 (1,100.93 ETH) with 56 ETH on a side wallet, and then fed to Tornado through fresh single-use addresses: 10 ETH on 23 June, 145 ETH on 1 July, 300 ETH on 7–8 August, 503 ETH on 15 August and 200 ETH on 26 August.

That adds up to 1,158 ETH — the whole amount. The slow drip the headlines described ended five weeks ago; nothing from this drain is left to watch.

When (UTC, 2026)FromToAmountTx
14 Jun 12:260xFF1F2B…6804550x0F18D8…7EdD17908.99 ETH + tokens
first drain — still on this wallet
0x074ec9…9aeeb1
15 Jun 05:350x7ec9F7…7d06DB0xc43147…72c1f546.46 ETH
second drain, after swapping the tokens to ETH
0x0f1998…e90ee0
15 Jun 06:410xc43147…72c1f50x0aF7F8…93991246.46 ETH
relay
0x23eb23…a363ed
15 Jun 06:580x0aF7F8…9399120xd90e2f…24F31b50 ETH (5 × 10)
into Tornado Cash (first deposit of the batch)
0x0448c4…50fdfd
17 Jun 18:340x737901…42A2ba0x6952d9…78E97F1,158 ETH
third drain, escape hatch of the older rollup
0xab306c…59c2b5
17 Jun 18:400x6952d9…78E97F0x33d6A0…b467df56 ETH (2 × 28)
side wallet
0xd75d1c…fc1619
18 Jun 18:380x599957…A61AE20x69923e…A05f72800.93 ETH
regrouped on one wallet
0x8c775b…1f05a8
18 Jun 18:400x15930A…22EDb30x69923e…A05f72300 ETH
regrouped on one wallet
0xf76ff4…071c96
23 Jun 00:130x9ED8E9…cce4F80xd90e2f…24F31b10 ETH
into Tornado Cash (first deposit of the batch)
0x46d3c7…ccc20e
1 Jul 12:290x53C929…c93c240xd90e2f…24F31b100 ETH (10 × 10)
into Tornado Cash (first deposit of the batch)
0xc56505…f67b89
1 Jul 12:470x33d6A0…b467df0xd90e2f…24F31b45 ETH (4 × 10, 5 × 1)
into Tornado Cash (first deposit of the batch)
0x2adb29…963763
7 Aug 23:580xa325E5…38a5b90xd90e2f…24F31b300 ETH (3 × 100)
into Tornado Cash (first deposit of the batch)
0x4e8a60…3472c6
15 Aug 16:450xF1BC80…1688540xd90e2f…24F31b503 ETH (5 × 100, 3 × 1)
into Tornado Cash (first deposit of the batch)
0xedc77e…7522a8
26 Aug 13:260x5c696a…33e1780xd90e2f…24F31b200 ETH (2 × 100)
last deposit — nothing left
0x16b221…e8a95c

The second wallet, and a “service contract”

The 15 June money took the shortest path: 0x7ec9F769d932D3f716949E7ca3E079b7817d06DB → 0xc431470AACaC667B949eCA4049A766d3d172c1f5 → 0x0aF7F8F2EA8B5B91928A705863Ade4f373939912, and five deposits of 10 ETH into Tornado Cash at 06:58–06:59 UTC, under two hours after the drain.

Aztec Labs’ report describes this ether as going toward “a high-volume service contract” ending in f31b that had received deposits from about 1,900 addresses, “consistent with depositing into a centralised exchange or a swap service”. That contract is 0xd90e2f925DA726b50C4Ed8D0Fb90Ad053324F31b — the Tornado Cash router. The money did not go to an exchange.

What we did with the addresses

We have marked the three exploit wallets and the relay and deposit addresses of the second and third drains as hack-related in our database, and the first wallet is on our monitor: if the 909 ETH moves, we will update this page. We did not mark the instant-exchange hot wallet that supplied gas for the third drain — it is a shared service used by thousands of unrelated people.

You can check any address against this and our other cases on the address check page.

What this page does not say

It names nobody and does not claim the three drains were one actor. The mechanism and the per-asset losses of 14–15 June are Aztec Labs’ account; balances, routes and Tornado totals are ours, read from the chain on 5 October 2026.

Check an address yourself

Free, no sign-up. Paste any address to see whether it is linked to this or any other incident:

Sources: Ethereum chain data via Blockscout, read on 5 October 2026; Aztec Labs’ incident report for the mechanism, the 14–15 June losses and the first two wallets; press reports citing PeckShield for the Tornado deposits. This is an information resource about transactions between addresses, not financial or legal advice, and it names no individual as responsible for anything.