Binance hot wallets on 8 chains drained of $6.28 billion: full timeline and attack/defense recap
Author: Dickson (@DicksonWuML)
Compiled by: TechFlow
TechFlow editor's note:The theft of Binance's hot wallets is today's biggest event in the crypto market. CertiK engineer and SEAL member Dickson tracked the on-chain records transaction by transaction and reconstructed the attacker's full sequence: preparing funds by withdrawing from Tornado Cash, using EIP-7702 authorization to take over Binance's Ethereum hot wallet, and racing issuers such as Tether and Circle to freeze funds. All amounts and times in this article are the author's on-chain statistics as of the time of posting (around 8 a.m. Beijing time on Oct. 30); times are in UTC (Beijing time is UTC+8), and they have not yet been officially confirmed by Binance.
Binance's hot wallets lost about $6.28 billion across 8 chains today. About $6.07 billion was moved out in the first 55 minutes, after which the attacker repeatedly swept one Ethereum wallet for more than two hours.
Since then, Tether, Circle, Ripple, Paxos, World Liberty, and Binance have frozen about $2.80 billion. About $3.27 billion remains freely transferable, mainly BTC and ETH.
I fully tracked the entire incident on-chain, including how the attacker moved funds before the freezes.

Sources of the $6.28 billion (based on prices at 20:24 UTC):
• Ethereum: $3.74 billion
• Bitcoin: 18,270.2 BTC, $1.47 billion
• Tron: 612.7 million USDT + 46.4 million TRX, $627.5 million
• XRP: 233.5 million XRP, $296.5 million
• Solana: 970,522 SOL, $96.1 million
• Arbitrum: 8,426 ETH + 74.6 million ARB, $31.8 million
• Avalanche: 1.81 million AVAX + 8.41 million USDt, $24.3 million
• Optimism: 44.2 million OP, $4.8 million

The $3.74 billion on Ethereum was moved out in five batches:
• At 20:24:23, a sweep() was executed against Binance 14: 167,464.25 ETH, 1.615 billion USDT, and 61 other tokens, totaling $2.53 billion
• At 20:41 and 20:59, 780 million + 43 million USDC were moved out from a Binance Smart Wallet that trusted Binance 14, totaling $822.6 million
• At 20:24:47, Binance 16 signed 9 transfers sent directly to the attacker: 28,005.6 ETH, 55.7 million USDT, 25.9 million RLUSD, 84.5 WBTC, 820,000 UNI, 1,199 XAUt, 18.8 million ENA, 304,600 LINK, and 583.6 billion PEPE, totaling $174.2 million
• At 21:04 and 21:44, two additional sweeps were performed on Binance 14: 2,070 ETH and 204.3 million USDT, totaling $209.6 million
• At 22:39, a final sweep was made to a new wallet: 128.5 ETH and 122 small-cap tokens, about $500,000
By asset: USDT $1.87 billion, USDC $823 million, ETH $457 million (197,668 ETH), RLUSD $88.5 million, wBETH $76.8 million, XAUt $50.5 million, UNI $49.6 million, ENA $44.7 million, PEPE $40.1 million, LINK $29.6 million, USD1 $27.8 million, plus about 50 smaller tokens.

Preparations began the day before. On October 28 at 07:39 UTC, the attacker's main wallet 0x7c8601d4645b93cea45f71e118a729332e6b5ca0 first withdrew 0.1 ETH from Tornado Cash, then made two more withdrawals. The second wallet then withdrew 1 ETH from Tornado and sent it to the main wallet on October 29 at 18:20.
On October 29 at 02:28, they deployed a sweeper contract. From 13:51 to 16:47, they rehearsed on their own wallets: delegating via EIP-7702, sweeping test USDT and USDC, then withdrawing them. At 15:59, they deployed version 2 with a generic call function, which later moved 823 million USDC.

At 20:04:52 UTC, the first step failed. Binance's XRP wallet sent 42,750,000.1 RLUSD to the attacker, but the attacker's XRP account did not yet exist, so the transfer was returned.
8 seconds later, the 185,017,485.5 XRP transfer succeeded, creating the account. By 20:09, four other Binance XRP wallets had also been emptied.

The chain reaction then unfolded:
20:10: Solana, a single transaction moved 965,455.1 SOL
20:18: Optimism, 44.2 million OP
20:20: Bitcoin, 11 transactions moved 18,270.2 BTC, splitting them into 1,000-BTC chunks in the same block
20:20 to 20:22: TRON, 612.7 million USDT + 46.4 million TRX
20:30 to 20:35: Arbitrum and Avalanche

Ethereum revealed the attack method. At 20:20:59, the attacker submitted a transaction carrying 50 EIP-7702 authorizations, all signed with the private key of Binance 14, for nonces 18,914,775 through 18,914,824.
Binance 14 had itself just used nonce 18,914,775 at 20:17:47, indicating that these authorizations were signed only minutes before use.

The authorization with nonce 18,914,809 matched. Binance 14's own transaction in the same block used nonce 18,914,808, and from that moment on, Binance 14 was executing the attacker's code.
At 20:24:23, a single sweep() moved 167,464 ETH and 1.615 billion USDT out. 24 seconds later, Binance 16 signed 9 transfers sent directly to the attacker. At 20:41 and 20:59, using Binance 14, the attacker moved 823 million USDC from a Binance Smart Wallet that trusted it.

What followed was a race against freezes. The attacker quickly split the USDT:
• 20:30: 500 million USDT sent to 0x9749…c762. By 20:59, 325 million had been swapped into ETH through RFQ market makers, and the remaining 175 million was moved on
• 20:33: 200 million USDT sent to 0x0ddf…697e. About 10 million was sold on DEXs, and 190 million was sent to 0x8d53…639a, which deposited 60 million into Aave and used it to borrow ETH
Tether's first blacklist took effect at 21:01:35: 0x5227, which still held 971 million USDT; and 0x9749, which had already been emptied. Circle froze the 823 million USDC at 21:04:59.

Some funds escaped in the final seconds:
• 21:01:59: 0x8d53 sent 130 million USDT to 0x77ed…c3eb. 48 seconds later, at 21:02:47, Tether froze 0x8d53
• Between 21:04 and 21:06, 0x77ed sold approximately 50 million USDT on DEXes and transferred 80 million to 0x7aa4…bfd1
• Between 21:08 and 21:11, 0x7aa4 sold approximately 50 million more and moved out the final 30 million. By the time Tether froze 0x7aa4 at 21:12:35, it had already been emptied
• At 21:16:11, 0xccbe…a263 transferred out the 30 million. 36 seconds later, Tether froze 0xccbe and intercepted the 30 million at 0xb171…c8c3 at 21:18:59
• The 175 million transferred out of 0x9749 remained at 0xaa24…54a0 until Tether froze it at 21:14:59
In total, of the 1.875 billion USDT on Ethereum, approximately 435 million were sold before blacklist enforcement caught up. 1.38 billion have been frozen, and 60 million remain trapped as Aave collateral.
Actions by other issuers, in chronological order:
• At 20:57:47, World Liberty blacklisted 48.5 million WLFI in 0x5227
• At 21:07:55, Tether froze 8.41 million USDt on Avalanche. The attacker attempted to transfer it at 21:40:47, and the transaction reverted
• Between 21:09 and 21:21, Tether froze 378.7 million USDT in three wallets on Tron. Prior to this, 234 million had already been swapped into TRX via SunSwap
• At 21:11:23, Tether froze 12,574 XAUt (approximately $50 million)
• At 22:00:59, Ripple froze RLUSD. The attacker had already transferred it to 0xe702…958d at 21:33 and sold 48 million RLUSD for ETH; the final sell order was included in the same block as the freeze. 40.5 million was intercepted
• At 22:10:35, World Liberty froze 27.8 million USD1
• At 22:30:47, Paxos froze 1,907 PAXG
• At 22:48:35, Binance blacklisted 29,934 wBETH (approximately $75 million); the attacker had already transferred them to 0x7f9d…15e3 at 21:52
First Digital’s 3.45 million FDUSD remains transferable.

Binance 14 remained delegated to the attacker’s contract, turning it into a tug-of-war:
• At 21:04 and 21:44, the attacker swept again: first 1,700 ETH, then 370 ETH and 200.4 million USDT. This USDT landed in 0x5227, which had already been frozen by Tether
• At 22:06:23, Tether blacklisted Binance 14 itself. Binance’s own USDT transfers from the address failed at 22:15 and 23:01
• At 22:39, the attacker swept again, this time transferring to a new wallet: 128.5 ETH and 122 small-cap tokens
• Between 22:55 and 23:07, Binance itself drained Binance 14: 46 token transfers to Binance 8, roughly one every 12 seconds
• Between 23:36 and 23:38, the attacker called sweep() four more times, all of which came up empty

Outside Ethereum:
• Arbitrum, between 21:35 and 21:38: all 8,426 ETH and 74.6 million ARB were transferred to a new 7702 wallet, 0x3e2b…32d5, which approved ARB for trading at 21:41. As of 23:50, the funds remained in place
• Avalanche, 21:45:34: 1,813,999 AVAX transferred into 0x8035…c397. Subsequently, 200,005 AVAX was transferred out from 0xc39e…9824; at 23:27:35, the same address received 1,563,812.78 USDC on Ethereum via Circle's CCTP cross-chain bridge. Four minutes later, at 23:31:59, Circle blacklisted it
• Funds on Bitcoin, XRP, Solana, and Optimism have not yet moved. BTC is distributed across 19 wallets, 17 of which hold exactly 1,000 BTC each
Current status as of approximately 23:50 UTC:
Frozen: approximately $2.80 billion
• 1.38 billion USDT on Ethereum, 378.7 million on Tron, and 8.41 million on Avalanche (Tether)
• 824.6 million USDC (Circle)
• 40.5 million RLUSD (Ripple), 27.8 million USD1 (World Liberty), 12,574 XAUt (Tether), 29,934 wBETH (Binance), 1,907 PAXG (Paxos), and 48.5 million WLFI
Unfrozen: approximately $3.27 billion
• 18,270 BTC, $1.42 billion
• 458,770 ETH distributed across 9 wallets, $1.03 billion
• 233.5 million XRP, $289 million
• 684.6 million TRX, $243 million
• Approximately $136 million in other tokens on Ethereum
• 970,500 SOL, $93 million, plus ARB, AVAX, and OP, approximately $48 million
An additional 60 million USDT is trapped as collateral on Aave.

Note: The transfers on BTC, XRP, and Tron are correlated by timing and transaction fingerprints: the same time window, newly created receiving addresses, and fees and transaction formats different from Binance's own withdrawals. The stolen amount is calculated using prices at 20:24 UTC; current holdings are calculated using prices at approximately 23:50 UTC.
On-chain proof for each transaction and freeze is attached in the thread below. If you notice anything I missed, please let me know!
Source: TechFlow
English
English
中文
繁体
日本
한국인
русский