⚡ Part 3 · The North Korea link

One laundromat. Three North Korea-linked hacks.

The THORChain storefront that washed Bitget's money was born 41 hours after the Kelp DAO hack. It later washed AFX Trade too. 99% of everything it ever swapped comes from these three thefts.

99%
of naswap swaps come from Kelp DAO, AFX Trade and Bitget
41 hours
from the Kelp DAO hack to naswap's registration
$49.6M
stolen funds swapped through naswap
0 ETH
left in Bitget attacker storage as of 29 Sep
01The finding

naswap: the swap storefront built for stolen money

In Part 2 we showed that every THORChain swap memo names an affiliate, the interface that routed it. One registered name kept showing up in the Bitget attacker's swaps: naswap. Across its whole history it routed 1,803 swaps from only 24 senders.

We classified every one of them. 1,787 swaps (99%) and $49.6M of $50.5M (98%) came from wallets belonging to three hacks. Two of them, Kelp DAO and AFX Trade, were publicly attributed to North Korea's TraderTraitor group before Bitget ever happened. The remaining 16 small swaps ($0.87M) include the operator's own test transactions.

■ Bitget $36.2M · ■ Kelp DAO $12.6M · ■ AFX Trade $0.86M · ■ unclassified $0.87M

April 2026 · Kelp DAO
228 swaps
From wallets Etherscan labels Kelp DAO Exploiter 20, 21, 34. Every one of their THORChain swaps used naswap and nothing else. LayerZero attributes the hack to TraderTraitor (Lazarus).
July 2026 · AFX Trade
13 swaps
From 0x678335b4…6d14, funded with 871 ETH by AFX Trade Exploiter 9. AFX attributes its $24M hack to UNC4899 / TraderTraitor.
September 2026 · Bitget
1,546 swaps
From the attacker's XRP and ETH laundering wallets traced in Part 2, 26–28 Sep.
02Timeline

Registered 41 hours after Kelp DAO

03Hard link

One Bitcoin address, two hacks

bc1qtgzpq7lqj45qxypajklmpgpv5w9fpyt7kpalnt

25 Jul 2026 · AFX Trade

13 naswap swaps from 0x678335b4… (funded by AFX Trade Exploiter 9) pay out BTC to this address.

26 Sep 2026 · Bitget

Bitget attacker XRP wallet rsiNZr8amajbBCQiWxeis8PJ5fptkGePNz swaps 9,999 XRP → 0.18 BTC to the same address.

A THORChain memo names the destination explicitly, so the same person or service asked for payouts from both thefts to go to one address. mempool.space ↗

04Follow the fees

The storefront is still collecting

naswap fee wallet

thor148sahwr…m8sau declared ~$80.8K in fees across all three hacks. It holds 138,320 RUNE (~$108K) and has never cashed out. On 27 Sep it tried to deposit 49,654 RUNE as liquidity into THORChain's BTC pool (memo +:BTC.BTC); it failed only because BTC deposits were paused.

The other fee wallet → OKX

From Part 2: thor18dvg…krkjm4, whose only customer was the Bitget attacker, cashed out 131,982 USDT to an OKX deposit address. After our report, Bitget's own tracker now lists that address as an exchange deposit endpoint holding the same 131,981.53 USDT.

05Live · 29 Sep

Storage empty. Zcash is moving.

Ethereum
0 ETH in storage

The last storage wallets were relayed and drained on 29 Sep: Exploiter 11 → Exploiter 4 at 01:14 UTC, then Exploiters 4, 12 and 13 sprayed out through the same intermediates as before (0xf7bC…96C3, 0x4a77…d330). The last transfer was at 15:53 UTC.

Zcash
18,581 ZEC left

About $26M still sits on t1WgMdtND8…kMDVG. On 29 Sep it started moving again (16:05–18:32 UTC) in 1–44 ZEC pieces through fresh transparent addresses that empty immediately, which fits deposits into the shielded pool.

THORChain
naswap: +42K RUNE/day

The fee wallet grew from 95,915 to 138,320 RUNE in 24 hours. The laundering hasn't slowed down.

06Off-chain

The laundromat has a storefront

naswap isn't only a name in swap memos. It is a live website, naswap.io, with a Chinese/English interface built on THORChain. It offers exactly three routes: ETH → BTC, XRP → BTC and XRP → ETH, the same routes the Bitget, Kelp DAO and AFX Trade funds took.

Screenshot of naswap.io showing ETH→BTC, XRP→BTC and XRP→ETH swap tabs

naswap.io · captured 30 Sep 2026 without interacting

What its own code says

  • AFFILIATE_NAME = 'naswap', the same THORName in the laundering memos
  • AFFILIATE_FEE_BPS = 30 (0.3%), the fee seen on most naswap swaps
  • A vip.naswap.io mirror where the fee is 0, which explains the zero-fee naswap swaps
  • An in-page XRP wallet unlock by seed phrase ("use only a dedicated small wallet") that lets one operator drive many XRP wallets
  • Libraries loaded via cdn.jsdmirror.com, a jsDelivr mirror used for access from mainland China; Chinese is the first language option
  • BUILD_TIME = '2026-08-31 16:00', 24 days before the Bitget hack

Born the same day as the on-chain name

Certificate Transparency logs show the first TLS certificates for naswap.io were issued on 20 Apr 2026, the same day the THORName "naswap" was registered, 41 hours after the Kelp DAO hack. The website and the on-chain affiliate were launched together. crt.sh ↗ · certificate log (JSON)

We don't link to the site to avoid sending traffic. It asks users to paste wallet seed phrases; don't. The page is served through Cloudflare. Archived copy SHA-256: 675af8fb…408e84a6.

07Where things stand

The public picture

Bitget's own tracker counts $375M of the $387.5M as still held in attacker-controlled addresses (mostly BTC after swaps), $632.7K frozen (NEAR Intents, Tether, Circle), and 1,049 attacker addresses. Elliptic says the hack pushes North Korea's 2026 crypto haul past $1 billion. OKX founder Star Xu publicly questioned THORChain's decentralization after it refused to block the attacker. Bitget resumed BTC withdrawals on 28 Sep and ETH on 29 Sep.

Until now the North Korea link rested on Bitget's IP analysis and on TRM's wallet overlaps. This page adds a public, verifiable one: the Bitget launderers used the same dedicated swap storefront, and in one case the same Bitcoin payout address, as two hacks already attributed to TraderTraitor.

08Method

How, and what we don't claim

Method
  • All swaps with affiliate "naswap" pulled from THORChain Midgard; senders matched against our traced Bitget wallets (Part 2) and Etherscan labels (Kelp DAO Exploiter 20/21/34, AFX Trade Exploiter 9).
  • THORName registration and first funding from Midgard / THORNode.
  • naswap.io: public HTML and JavaScript read without interacting; certificate history from crt.sh.
  • BTC destinations read from swap memos; shared address checked on mempool.space.
  • Zcash via Blockchair; ETH via Blockscout / Etherscan; balances as of 29 Sep 18:54 UTC.
  • OFAC SDN digital-currency addresses: no overlap with our ~650 addresses (they're fresh, so this was expected).
Not claimed
  • Who operates naswap or naswap.io. We name no person.
  • That THORChain, its node operators or any other interface acted knowingly.
  • Formal attribution. Kelp DAO (LayerZero) and AFX (AFX / Mandiant-tracked) attributions are theirs; Bitget's is Bitget's and TRM's. We show shared infrastructure.
  • That the power-of-two seed inputs prove a specific mixer. They fit a CoinJoin denomination pattern.
09Evidence

Download the raw data