Neutron: two wallets cast 98% of the votes that handed Astroport and Drop to their attacker

PublicAML · On-chain investigation · 24 September 2026

On 22 September 2026 a Neutron governance proposal titled "AIATO: AI Agent Takeover" passed, gave its author admin rights over ten Astroport and Drop contracts, and those contracts were emptied within half an hour — about $9.4 million, by GoPlus’s count. It has been told as a vote nobody noticed. The chain says something narrower: 98% of the YES power came from two wallets, and both are tied to the attacker by his own transactions. One staked 31.62 million NTRN eleven minutes before the vote closed; the other was paid 1,000 USDC by the attacker three hours after the drain. The stolen dollars reached Ethereum within the hour, alongside ETH withdrawn from KuCoin and Bybit, and 794 ETH of it has not moved since.

98%

of the YES power on proposal #9 from two attacker-linked wallets

31.62M NTRN

staked 11 minutes before the vote closed — still bonded

1.18M USDC

out through Noble and Circle to one Ethereum address

794 ETH

sitting on 0xEF6c…5D54, untouched as of 24 Sep

What happened

Neutron runs on-chain governance: a proposal that passes executes its messages with the chain’s own authority. On 12 September neutron1dd25c4sshelrpfs0433apg24c5phrhk8l6n605 submitted proposal #7, whose messages made him the admin of ten contracts belonging to Astroport, a DEX, and Drop, a liquid-staking protocol. He withdrew it on 19 September and at once resubmitted the same messages as proposal #9, "AIATO: AI Agent Takeover. Phase 1: Agent Admin Registration". It passed at 02:24 UTC on 22 September. At 01:18 he had already uploaded his own contract code; from 02:38 he migrated all ten contracts to it one by one and called withdraw_all on each. Neutron stopped producing blocks at 07:43 UTC and has not produced one since.

The vote was his

Proposal #9 passed with 37.31 million NTRN voting YES against 8.26 million NO and veto. Two wallets supplied 36.71 million of the YES.

neutron1ekgfga6vv4zdrrjn3dux6f62fuzektfndgaehm staked 31,620,000 NTRN at 02:13:10 UTC, eleven minutes before voting closed — the last-minute stake the reports describe. It is not a stranger’s wallet. On 18 September, three days earlier, the attacker’s own Cosmos Hub address sent 1 ATOM to this wallet’s own Cosmos Hub address (the same key), cosmos1ekgfga6vv4zdrrjn3dux6f62fuzektfnfh5mdu; within minutes it was swapped to NTRN, staked, and used to vote YES on proposal #7. The 31.62 million NTRN were bought with 20,200 USDC that reached the wallet through Noble from Secret Network, where the sender unwrapped them from private sUSDC. Secret Network hides who paid in, and this page does not guess.

neutron15m3hh904d0cwe4t69ec2w5cmc8535gkxwhgrp5 built up 5.09 million NTRN of stake between 9 and 21 September, voted YES on proposal #7 twice and on #9 at 15:16 UTC on 21 September. At 05:19 UTC on 22 September, three hours after the drain, the attacker sent it 1,000 USDC.

Without those two wallets the proposal had about 0.6 million NTRN of YES against 8.26 million against, and would have failed. Both stakes are still bonded: the chain is halted, and unbonding takes 21 days once it runs.

When (UTC, 2026)FromToAmountTx
12 Sep 02:48neutron1…l6n605neutron1…7a68v5proposal #7, 1M NTRN deposit
first proposal, later withdrawn
B0DAC58E…C81552
18 Sep 22:49cosmos1d…m96c4ncosmos1e…fh5mdu1 ATOM
attacker funds the future voting wallet
0563C4A5…2B9421
19 Sep 02:24neutron1…l6n605neutron1…7a68v5proposal #9, 1M NTRN deposit
AIATO: AI Agent Takeover
50D41B97…400B9E
21 Sep 15:16neutron1…whgrp5neutron1…7a68v5YES, 5.09M NTRN
second wallet votes YES
03234550…DCB742
22 Sep 01:40secret1m…cgw0aznoble1ek…p5pn4j20,000 USDC
unwrapped from private sUSDC
8A2621B6…11698F
22 Sep 02:13neutron1…dgaehmneutron1…dgaehm31.62M NTRN staked
11 minutes before the vote closed
71FB94AE…55C266
22 Sep 02:38–03:04neutron1…l6n605neutron1…l6n60510 contracts migrated and emptied
migrate + withdraw_all, ×10
F336154E…0D31BE
22 Sep 02:41–04:14neutron1…l6n605noble1dd…nx0sda1,180,010 USDC
to Noble
7B045AD2…6E0E77
22 Sep 02:44–04:18noble1dd…nx0sda0xe14931…1fBA5c1,180,005 USDC
Circle CCTP to Ethereum
F88A8339…0644A7
22 Sep 02:47–04:270x8F10B4…13f9960xe14931…1fBA5cUSDC → 447.8 ETH
swapped on arrival
0xb352b9…47cc02
22 Sep 05:01–13:270xD37BbE…aD71460xe14931…1fBA5cATOM → 211.6 ETH
THORChain
0xedeed1…0e7387
22 Sep 04:00–05:090x62425c…70dc9f0xe14931…1fBA5c17.29 ETH
withdrawal from Bybit
0x7d30bf…0c9b2b
22 Sep 04:49–05:210x453001…92B7850xe14931…1fBA5c10.03 ETH
withdrawal from KuCoin
0x5ef396…cf2ccd
22 Sep 05:19neutron1…l6n605neutron1…whgrp51,000 USDC
paid to the second voting wallet
DE1D6CDF…0CA122
22–23 Sep0xe14931…1fBA5c0xEF6c5A…2a5D54765.4 ETH
now 794 ETH, never moved
0x1c3a5d…8cefc4
23 Sep 18:42–18:480xB773bC…33A16E0x9BfCCA…67f81929.2 ETH
the late ATOM, back as ETH
0x3febfd…a80441
23 Sep 21:410x9BfCCA…67f8190xEF6c5A…2a5D5428.65 ETH
into the same holding wallet
0xc62d50…368cc8

Where the money went

The attacker used one key on every chain, so his address is the same string under each prefix. 1,180,010 USDC went from Neutron to noble1dd25c4sshelrpfs0433apg24c5phrhk8nx0sda and out over Circle’s bridge, in four burns between 02:44 and 04:18 UTC, to one Ethereum address: 0xe149310eB8b1b3D9C471CcD81819D393621fBA5c. It was swapped to ETH on arrival. ATOM went to his Cosmos Hub address and was swapped to ETH through THORChain, into the same Ethereum address — and a 20-ATOM THORChain swap to that address at 23:36 UTC on 21 September, three hours before the attack, shows it was set up in advance. DYDX went to dYdX and was paid out in transfers carrying numeric memos, the form exchange deposits take.

Between 04:00 and 05:21 UTC on 22 September the same Ethereum address received 17.29 ETH from a Bybit hot wallet and 10.03 ETH from a KuCoin hot wallet — withdrawals from accounts at two exchanges that know their customers. On 22 and 23 September it sent 765.4 ETH to 0xEF6c5A31df984c8569236a0AbC1f27580E2a5D54, which now holds 794 ETH and has never sent a transaction.

After the Cosmos Hub restarted on 23 September its validators moved about 1.23 million ATOM out of the attacker’s address, as reported. On 23 September he still moved a further 169,000 ATOM out to Osmosis and converted it to about 190,000 USDC. That came back to Ethereum within the hour as 29.2 ETH on a second fresh wallet, 0x9BfCCA13b4AC907433ac68766E96309ac867f819, which passed 28.65 ETH to the same holding address.

What can still be done

The 36.71 million NTRN staked by the two voting wallets cannot leave while Neutron is halted, and cannot leave for 21 days after it restarts. The KuCoin and Bybit withdrawals identify accounts, and account holders. The 794 ETH is labelled, so an exchange that screens a deposit from it will see where it came from.

All three Ethereum addresses are labelled in PublicAML under this attack. The Cosmos-side addresses are listed here but cannot be scored yet: PublicAML does not cover Cosmos chains.

Sources: Neutron (archive node; the chain is halted), Cosmos Hub, Noble, Osmosis, dYdX and Secret Network REST data, and Ethereum data (Blockscout), read on 24 September 2026; the loss estimate as published by GoPlus; the ATOM moved by Cosmos Hub validators as reported in the press. This is an information resource about transactions between addresses, not financial or legal advice, and it names no individual as responsible for anything.