⚡ Update #2 · Bitget hack · $387.5M

The launderers took a cut. Then cashed it out to OKX.

We followed Bitget's stolen money across ETH, XRP, TRON and Bitcoin. It is one operation, and the people washing it charged a fee and sent it to a centralized exchange.

$131,982
Launderer fees cashed out to an OKX account
~$187M
Bitget funds swapped through THORChain (gross)
485
Fresh laundering wallets mapped (246 ETH + 239 XRP)
$107M
Still sitting in storage (39,885 ETH)
01Context

ZachXBT named the launderers. We followed the money.

On 24 Sep 2026 attackers drained Bitget's hot wallets. Bitget later raised the loss to $387.5M across Ethereum and EVM chains, XRP Ledger, TRON and Zcash. Bitget and TRM point to North Korea.

On 28 Sep ZachXBT published five aliases of Chinese launderers who openly asked THORChain-ecosystem support channels why their XRP→BTC swaps were stuck. The same day THORChain refused Bitget's request to block the attacker.

This update covers what wasn't public yet: where the money actually went, how the legs connect, and who got paid for washing it.

"Decentralization is a design principle, not a shield for facilitating known stolen funds." (Gracy Chen, Bitget CEO)
02The big one

A 0.6% "laundering fee", cashed out to OKX

Every THORChain swap memo can carry an affiliate: the interface that routed the swap and the fee it takes. Most affiliates are public apps. One wasn't.

thor18dvgrgpvxlh7rhhld4qjyrxs9c7tvwdakrkjm4 has no registered name. It appeared as the affiliate on 401 swaps, all on 26–27 Sep, 397 of them from XRP, charging up to 0.6%. 15 of its 16 senders are the Bitget attacker's XRP wallets. The 16th is the address itself, cashing out. It had no other customers. It looks like the launderers' own fee wallet.

Follow the fee

1
Attacker's XRP wallets → THORChain (XRP→BTC swaps)
Affiliate field: thor18dvg…krkjm4, 0.3–0.6% per swap, ~$31.9M volume.
2
Fee wallet swaps RUNE → USDT on Ethereum
27 Sep 05:46 UTC: 114,617 RUNE → 92,586.74 USDT · 28 Sep 08:08: 15,821 RUNE → 11,469.14 USDT → 0x18e0428d…179218 (created 26 Sep)
3
4 deposits to an OKX deposit address
0x51B2699f6295f9F7BEdd37b9A27bb687165DB7be forwards each deposit within 1–2 minutes to OKX: Hot Wallet 5, the standard exchange deposit sweep.
Deposit (UTC)USDTDeposit txSweep to OKX
26 Sep 20:286,613.600xd61d2e0a…d0d5730x05be5514…3a671a
26 Sep 21:3121,312.050xba29d805…b1d5280x79e335aa…bc2970
27 Sep 21:5992,586.740x57888a8e…4a66190x3a50b73c…d70e0f
28 Sep 08:1111,469.140x65c4d593…d5c2cb0xa4594caa…2a37d0
Total131,981.53

Reported to Bitget's recovery program on 28 Sep. OKX can identify the account behind this deposit address. It may belong to the operator or to an intermediary such as an OTC desk; we make no claim about who that is.

Verify: affiliate on thorchain.net · Midgard: swaps with this affiliate

03Who got paid

~$327K in fees written into the laundering memos

We decoded 5,569 attacker deposits into THORChain (5,281 from XRP, 288 from ETH), about $187M gross including funds re-deposited after refunds. 4,546 carried an affiliate. Below are the fees declared in those memos. The protocol only pays them on successful swaps, so real payouts are lower. Public apps take these fees automatically, and that alone says nothing about intent. The only affiliate whose sole customer was the attacker is #1.

Names are THORNames from the on-chain registry. Only "ss" is labeled on Etherscan (ShapeShift DAO Treasury). "thor18dvg…" has no THORName.

04One operation

The XRP and ETH legs end in the same Bitcoin wallets

THORChain memos state the destination address of every swap. Six BTC addresses receive swaps from both the XRP leg and the ETH leg, and two ETH wallets in our laundering graph also receive XRP→ETH swaps. Same pipeline, same operator.

BTC addressFrom XRP legFrom ETH leg
05The map

Four chains, one pipeline

Bitget · ETH/EVM~24.6K ETH + $47.6M stables Bitget · XRP102.98M XRP Bitget · TRON20.59M TRX 246 ETH walletsstorage → funnel Ex.4 239 XRP wallets~9K XRP left TRX → USDT/USDDUSDT0 bridge · xSwap THORChain~$187M gross LayerZero · Skip:GoSymbiosis · Chainflip Bitcoin1,967 BTC in OKX account131,982 USDT (fees)

Simplified. Line widths approximate.

06Leg by leg

What happened on each chain

Ethereum
29,038 ETH out

Storage wallets are being drained one by one into a funnel, Exploiter 4: Ex.14 → Ex.4 (28 Sep 11:52), Ex.9 → Ex.4 (14:28), Ex.10 → Ex.4 (18:55). Ex.4 sprays it into the same intermediate wallets used since 27 Sep. The main $47.6M in stablecoins was swapped to ETH within 21 minutes of the hack, before any freeze.

XRP Ledger
102.98M XRP · ~9K left

Split into 20M chunks, then pushed through 239 fresh wallets into THORChain with 5,281 deposits in 4 days. About 101M XRP went to BTC (111 addresses), ~8M to ETH, 1.36M to BNB, 321,786 via NEAR Intents.

TRON
20.59M TRX · emptied

One wallet that received 5.57M TRX was created 24 Sep 13:48 UTC, ~5 hours before the hack. 15M TRX was swapped to 5.07M USDT on a TRON DEX and bridged out via the USDT0 (LayerZero OFT) contract, plus USDD and an xSwap vault. Everything left within ~15 hours.

07Bitcoin

1,967 BTC in. Only 20.8 BTC went straight to a mixer.

The 96 BTC destinations decoded from the ETH leg and the first XRP pass received 1,967 BTC (~$164M). Only 20.8 BTC went directly into CoinJoin-style transactions. The rest moved on through ordinary transfers. These 163.66 BTC are sitting untouched in seven second-hop addresses:

AddressBTC

Exchanges: flag deposits from these. All 120 BTC destinations are in the downloads.

08Watch list

$107M still waiting

WalletAddressETHStatus
09Details

Small things that matter

Burner Discord accounts

Discord IDs encode their creation time. From ZachXBT's list: "HELP ME" was created 31 minutes before asking for help, "jack" 5 hours before his first ticket. "lolo / Marin" dates back to Sep 2022, and "Cc" and "Melon" to 2025. Two were made for this job; three are regulars.

Wallets older than the hack

An ETH wallet active since May 2026 (0x8eEc4bcA…54c9) received ~3M XRP worth of swaps and fed ETH back into the graph. A BTC address that got THORChain payouts in Apr–May 2025 (bc1qle6cq42…6edr) woke up on 26 Sep. These are leads, not attribution.

Tools in the kit

THORChain, LayerZero/Stargate, USDT0 OFT, Skip:Go (identified from source: CCTPRelayer / SkipGoSwapRouter / GoFastHandler), Symbiosis, Chainflip, NEAR Intents, Umbra stealth payments (100 ETH), CoW Swap, ParaSwap, USDD, xSwap.

Already frozen (not ours)

Tether and Circle blacklisted 0xe07Bd590…7d57 (218,023 USDT + 99,990 USDC). Tether also froze the TRON address TRzmHLa8…36Ku4. Credit to whoever flagged them.

10Index

Every laundering wallet

11Method

How, and what we don't claim

Method
  • Ethereum: Blockscout / Etherscan labels; followed ETH and major tokens from labeled "Bitget Exploiter" wallets. Only wallets first seen after the hack count as attacker wallets. THORChain vaults and busy services were excluded.
  • XRP: full account_tx crawl from the Bitget XRP address; memos decoded from every THORChain deposit.
  • TRON: TronGrid; swap outputs read from USDT Transfer logs.
  • BTC: mempool.space; CoinJoin detected by structure (many equal outputs).
  • Affiliates: THORName registry + Midgard via public gateways.
Not claimed
  • Who owns the OKX account, or that it's the attacker rather than an intermediary.
  • That any interface, market maker, bridge or exchange acted knowingly.
  • Attribution to North Korea. That's Bitget's and TRM's assessment.
  • Identities behind Discord/Telegram aliases.
  • Final numbers. Funds were still moving at publication.
12Evidence

Download the raw data