Moonwell MAMO exploit: 800 ETH from Tornado Cash in, 8.73 million DAI out, and the DAI has not moved for seven weeks

PublicAML · On-chain investigation · 15 October 2026

On 27 August an attacker pumped the thinly traded MAMO token, posted it as collateral on Moonwell’s Base markets and borrowed about $8.7 million of real assets. The proceeds were bridged to Ethereum, swapped into DAI, which no issuer can freeze, and parked. We read both chains on 15 October. The whole operation was paid for with about 800 ETH from Tornado Cash, not the 0.1 ETH reported. The attacker put 1.95 million dollars in and took 8.73 million out, so its own gain is about $6.78 million. All 8,728,319 DAI are still on the same Ethereum wallet, untouched since 09:45 UTC on 27 August.

~800 ETH

from Tornado Cash on 21 and 23 August: the money the attack was built with

1.95M → 8.73M

USDC bridged to Base before the attack, against USDC bridged back after it

≈ $6.78M

the attacker’s own gain, measured on its wallets

8,728,319 DAI

on one Ethereum wallet, unmoved since 27 August

What is known

Moonwell is a lending protocol. On 27 August 2026 Blockaid flagged an attack on its Base deployment: the attacker drove the price of MAMO, a token with little liquidity, from about $0.01 up several times, used it as collateral and borrowed cbBTC, USDC, WETH and wstETH against it. PeckShield put the loss at about $8.7 million. Moonwell set the borrow caps of every core market on Base to one wei, which stopped all new borrowing.

The press found the holding wallet early. [Protos](https://protos.com/moonwells-latest-9m-attack-marks-four-incidents-in-a-year/) and others reported that about 8.7 million DAI sat on 0xD71dD9B6e634412713c47fe7aE02c628e338C384 on Ethereum, a wallet funded through Tornado Cash; Protos estimated the attacker’s net at about $5.2 million after the cost of pumping MAMO.

We went back to both chains seven weeks later. Below is what the two attacker wallets show, read on 15 October 2026.

Where the money for the attack came from

The attack needed capital: money to buy MAMO and push its price up. All of it came from Tornado Cash. On 21 August 0xD71dD9B6e634412713c47fe7aE02c628e338C384 withdrew 0.098 ETH and then 100 ETH from Tornado’s 100 ETH pool. Nine minutes later it sent 99 ETH out through a LayerZero bridge contract, and about 99 ETH came back within the hour through Stargate and Across. Reports that describe the wallet as funded with 0.1 ETH from Tornado plus 99 ETH from bridges are reading that loop: the 99 ETH was the attacker’s own Tornado money sent round a bridge and back.

On 23 August the same wallet withdrew seven more 100 ETH notes, 700 ETH, between 00:26 and 01:47 UTC. That evening it tried eight times to sell 700 ETH through swap aggregators; every attempt failed. The ninth, a CoW Swap order at 23:10 UTC, filled for 1,715,095 USDC. Together with 232,296 USDC from the 99 ETH sold on 21 August, the wallet held 1,947,391 USDC, and at 01:23 UTC on 24 August it sent all of it to Base through Circle’s CCTP bridge, to the same address on Base.

On Base the wallet bought 7,407,608 MAMO for 75,000 USDC on 26 August, about one cent each. On the morning of 27 August it handed the attack wallet, 0x719eae70d4A83f35bF82A2740699F5db84BE919D, 7,989,608 MAMO and 1,862,291 USDC, and 0.0003 ETH for gas.

The attack and the way out

Between 08:18 and 09:33 UTC on 27 August the attack wallet entered Moonwell’s markets, pushed the price of MAMO up, posted MAMO as collateral and borrowed against it in dozens of transactions. It then sold everything it had borrowed or bought, cbBTC, wstETH, WETH and a long list of smaller tokens, through CoW Swap, Native, Uniswap and other pools, into USDC.

At 09:41 and 09:42 UTC it sent two transfers of 4,364,727 USDC, 8,729,454 in all, back to Ethereum through CCTP, again to its own address. Minutes later, at 09:44, it swapped the 8,728,319 USDC that arrived into DAI through ParaSwap and Maker’s PSM. Circle can freeze USDC on an address; nobody can freeze DAI. At 09:45 the DAI went to 0xD71dD9B6e634412713c47fe7aE02c628e338C384, the wallet that had paid for the attack.

Since then that wallet has sent nothing. It holds 8,728,319 DAI and 0.9 ETH. Everything arriving on it, and on the attack wallet, is dust and fake tokens from address-poisoning bots.

When (UTC)FromToAmountTx
21 Aug 01:340xA160cd…53f2910xD71dD9…38C384100 ETH
Tornado Cash 100 ETH pool; 99 ETH of it went round a bridge and back
0x213fae…ba3114
23 Aug 00:26–01:470xA160cd…53f2910xD71dD9…38C3847 × 100 ETH
seven withdrawals; link to the first
0x272892…ad95b6
23 Aug 23:100xD71dD9…38C3840xbA3cB4…0EAdeC700 ETH → 1,715,095 USDC
after eight failed swap attempts
0x6081e3…58d7e9
24 Aug 01:230xD71dD9…38C3840xDD68aB…8030051,947,391 USDC
CCTP to the same address on Base
0x6fd85b…5b7205
26 Aug 00:550x8F10B4…13f9960xD71dD9…38C3847,407,608 MAMO for 75,000 USDC
MAMO bought at about one cent
0x840bf5…e5befd
27 Aug 08:26–08:270xD71dD9…38C3840x719eae…BE919D7,889,608 MAMO + 1,612,291 USDC
the attack wallet is armed; link to the MAMO transfer
0x86e9c0…f6349c
27 Aug 09:41–09:420x719eae…BE919D0x528929…26f7D92 × 4,364,727 USDC
CCTP back to Ethereum, two transfers; link to the first
0x9cd2fb…7f1dec
27 Aug 09:41–09:430x000000…0000000x719eae…BE919D2 × 4,364,159 USDC
USDC minted on Ethereum
0x9b362a…50f86e
27 Aug 09:440x719eae…BE919D0x6A000F…0010688,728,319 USDC → DAI
swapped into DAI, which cannot be frozen
0xd8fa6f…ca8622
27 Aug 09:450x719eae…BE919D0xD71dD9…38C3848,728,319 DAI
parked; nothing has left since
0x58399a…e4125d

What the attacker actually made

The cleanest way to measure the gain is to compare what the attacker brought to Base with what it took away. In: 1,947,391 USDC bought with about 799 ETH from Tornado. Out: 8,729,454 USDC, which became 8,728,319 DAI. What stayed behind on Base is small, about 3,700 USDC and 0.25 ETH on the attack wallet. So the attacker’s own gain is about $6.78 million, more than the $5.2 million estimated in the press.

The difference is the MAMO. The attacker bought its first 7.4 million MAMO for $75,000 before the attack, so most of what it spent on the price pump went into a token it had acquired cheaply and then left with Moonwell as collateral. The lenders’ loss, about $8.7 million, is a separate number: it is what the protocol lent out against collateral that turned out to be worth almost nothing.

What we did

The holding wallet 0xD71dD9B6e634412713c47fe7aE02c628e338C384 was already marked in our database from the news coverage. The attack wallet 0x719eae70d4A83f35bF82A2740699F5db84BE919D was not marked anywhere; we added it on 15 October, with both addresses under one incident. We did not mark Moonwell’s contracts, the bridges, the swap services or the address that sold MAMO.

The DAI wallet is on our watch list: any transaction it sends will reach us, and we will update this page. To check an address yourself, use the address check.

What this page does not say

It does not say who the attacker is, and it does not say that Moonwell, the MAMO project, Circle, Maker, CoW Swap, the bridges or Tornado Cash did anything unlawful. The loss figure is PeckShield’s and Blockaid’s; the location of the DAI was first reported by the press. The 800 ETH funding, the route of the seed money, the arithmetic of the gain and the state of the wallets on 15 October are ours.

Addresses in this case

Attacker wallets (the same addresses on Ethereum and Base)

Check an address yourself

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

Sources: Blockaid’s alert of 27 August 2026; PeckShield’s loss estimate; reporting by Protos, The Defiant and The Crypto Times; Ethereum and Base chain data via Blockscout, read by PublicAML on 15 October 2026; CCTP transfers decoded from the transaction input. Dollar figures for USDC and DAI are at face value. This is an information resource about transactions between addresses, not financial or legal advice, and it names no individual as responsible for anything.