Skip to content
Infrastructure

Binance Hack Explained: How $6.3B Left Ten Blockchains

By Anurag Verma•October 30, 2026
Binance Hack Explained: How $6.3B Left Ten Blockchains

On the evening of 29 October, someone emptied Binance hot wallets on ten blockchains in 31 minutes. Binance puts the damage at about $6.3 billion, and the chains agree: priced at the moment the attack began, about $6.37 billion left. That makes it the largest crypto theft on record, roughly four times the $1.5 billion Bybit hack of February 2025.

The headline number is not the most interesting part. The interesting part is that every stolen transaction carries a valid signature from Binance's own wallets. Either the attacker got Binance's signing system to sign for them, which is what Binance's account suggests, or they held usable copies of the keys. The chains record a great deal about which, and most of it leans one way.

This is a reconstruction of the attack from public on-chain data, from the attacker's rehearsal that morning to the freezes that night. Every claim links to a public block explorer, so you can check it without trusting me. It is my reading of that data: the real sequence of events may differ, and Binance's technical post-mortem will be the authoritative account.

$6.37B
taken, priced on-chain at 20:00 UTC (Binance estimates about $6.3B)
10
blockchains hit; first wave 20:04:52 to 20:35:53, 31 minutes
$2.83B
frozen, every freeze verified on-chain
50 / 50
EIP-7702 authorizations signed by Binance 14's own key
3h 50m
Binance 14 ran the attacker's code, 20:20:59 to 00:10:35
18,270 BTC
in 19 addresses, never moved; Bitcoin cannot be frozen

What happened, in one minute

  • When: 29 October 2026, first theft at 20:04:52 UTC, the first wave over by 20:35:53. A second wave hit at 23:04, and the last Ethereum sweep came at 23:56.
  • Where: XRP Ledger, Solana, Base, Optimism, Bitcoin, Tron, Ethereum, Arbitrum, Avalanche and Polygon.
  • How much: about $6.37 billion at the 20:00 UTC price, across more than 180 tokens. That matches Binance's own estimate of about $6.3 billion.
  • How: two patterns. Some thefts are built exactly like Binance's normal withdrawals; others are custom-built, including 50 EIP-7702 authorizations that turned Binance's main Ethereum hot wallet into a contract the attacker controlled for 3 hours 50 minutes.
  • Frozen: about $2.83 billion, verified on-chain, by Tether, Circle, Ripple, Paxos, World Liberty, Binance itself and Arbitrum. Bitcoin, ETH, XRP and SOL cannot be frozen, and that is where most of the rest sits.

What Binance has said

Binance's initial statement says a compromised laptop belonging to a DevOps engineer gave the attacker access to a service container, which then submitted unauthorized withdrawal transactions. Binance says it found no evidence that wallet private keys leaked, estimates the impact at about $6.3 billion with about $3 billion frozen, has suspended deposits and withdrawals while it reviews security, has revoked the affected address authorizations, and will cover all losses from its SAFU fund and company funds. It also says it will publish an updated Proof of Reserves once remediation is complete.

The on-chain evidence fits that account well, with some details that the post-mortem needs to explain. More on that below.

How a big exchange moves money

To understand the attack you need a rough picture of how an exchange sends crypto out.

A withdrawal is not one step. It is a pipeline: a customer request, risk checks and approval, a transaction builder for each blockchain, and finally a signing service that holds the private keys and signs transactions for trusted internal systems. The keys never leave the signer. That is the point of the design: even if an attacker gets into the company, they cannot copy the keys out.

The catch is in the word "trusted". The signer signs what trusted callers ask it to sign. If an attacker controls one of those callers, they do not need the keys. They just need to ask.

How an exchange sends crypto out: requests pass through internal services to a signing service that holds the keys.

The attack path, as Binance describes it

One reading, consistent with Binance's statement and with how the transactions were built on each chain. Not confirmed.

DevOps laptop
compromised
Service container
inside the trusted network
Pattern A
Withdrawal pipeline
approval, then transaction builder. XRP Ledger, Bitcoin, five EVM chains
Pattern B
Direct signing request
custom-built transaction or payload. Solana, Tron, Ethereum EIP-7702
Signing service
keys never leave
Hot wallets
ten chains

Binance says the attacker reached a service container inside that trusted network. If that is right, the chains show two ways the access was used. The diagram above is that reading; further down I set out the alternative.

The timeline (UTC, 29 to 30 October)

Thefts, freezes and Binance's response, by chain

29 to 30 October 2026, UTC. Each dot is one transaction or action; hover for details.

TheftFreeze or interventionBinance's response
XRP Ledger
Solana
Base
Optimism
Bitcoin
Tron
Ethereum
Arbitrum
Avalanche
Polygon
20:0021:0022:0023:0000:00

Shaded: the first wave, 20:04:52 to 20:35:53 (31 minutes)

TimeWhat happened
02:28 to 16:47The attacker deploys a sweeper contract and rehearses EIP-7702 takeovers on their own wallets. The final contract is deployed at 15:59.
20:04:52XRP Ledger: the first attempt, 42.75M RLUSD, fails because the destination account doesn't exist yet.
20:05 to 20:09XRP Ledger: five hot wallets send 233.46M XRP.
20:10:18Solana: 965,455.1 SOL, then four more transfers of 1,266.7 SOL up to 20:33.
20:16 and 20:18Base: 4.74M VIRTUAL. Optimism: 44.23M OP.
20:17 to 20:19XRP Ledger: Binance's system automatically retries four of the withdrawals. They fail because the wallets are already empty.
20:20Bitcoin: 18,270.2 BTC in a single block. Tron: 612.73M USDT and 46.39M TRX.
20:20:59Ethereum: the "Binance 14" hot wallet starts running the attacker's code.
20:24Sweep: 167,464 ETH and 1.615B USDT leave Binance 14. Binance 16 sends 28,005.6 ETH and eight tokens.
20:30 to 20:35Arbitrum: 74.56M ARB and 8,426 ETH. Avalanche: 1.81M AVAX and 8.41M USDT.
20:41 and 20:59A smart wallet owned by Binance 14 pays out 780M and then 43M USDC.
21:01 to 21:21Tether and Circle freeze the attacker's addresses on Ethereum, Avalanche and Tron.
22:00:59Ripple freezes the attacker's remaining RLUSD on Ethereum.
23:02 to 23:16Binance moves whatever is left out of the affected hot wallets: 155,030 SOL at 23:02, about 12.08M XRP at 23:12 and about 1,770 BTC at 23:16.
23:04 to 23:06A second wave: Avalanche 444,537 AVAX, Polygon 46.63M POL and 6.19M USDT.
23:56:47A last sweep takes 2,961.9 ETH that had arrived in Binance 14 in the meantime.
00:08 to 00:18Arbitrum moves the attacker's ARB and ETH to a frozen address at chain level.
00:10:35Binance 14 revokes the delegation with its own key.

Two things stand out. The attack was rehearsed the same day on the attacker's own wallets. And the Ethereum hot wallet stayed under the attacker's control for almost four hours, long enough for new deposits to arrive and be swept out again.

Two patterns in the transactions

Pattern A: built like Binance's normal withdrawals

On the XRP Ledger, the thefts used the hot wallets' own sequence numbers, slotted in between genuine customer withdrawals, with the usual expiry settings. About 10.5 minutes later, Binance's own system retried four of them, exactly as it would retry a normal withdrawal.

On Bitcoin, the 18,270.2 BTC left in eleven transactions built on Binance's own sweep template (version 1, locktime 0, change back to the hot wallet). On Base, Optimism, Arbitrum, Avalanche and Polygon, the thefts are ordinary transfers signed by the hot wallets themselves.

Pattern B: custom-built transactions, same keys

On Solana, the five thefts are plain transfers. Of the 616 transactions that wallet signed that evening, they are the only ones without the durable nonce, compute-budget settings and batching that every normal Binance withdrawal uses.

On Tron, it is the same key but a 65-second expiry and a 100 TRX fee limit, against 114 to 118 seconds and 30 TRX on the 360 routine transactions that hour.

On Ethereum, the signer produced 50 EIP-7702 authorizations. No withdrawal ever needs that kind of message. More on why that matters next.

A fingerprint across chains

One detail ties the chains together. On seven chains, the attacker's transactions consistently paid about two to 2.7 times the fee of the same wallets' routine transactions:

One fingerprint across chains: the attacker paid more than routine

The attacker's fee setting divided by the same wallets' routine transactions; the gold line is 1×, routine. Fee for the XRP Ledger, fee rate for Bitcoin, priority fee for the EVM chains, fee limit for Tron. Solana used no compute-budget fee at all, so it cannot be compared.

XRP Ledger6,000 vs 3,000 drops
Bitcoin10.05 vs 5.0 sat/vB
Base0.288 vs 0.12 gwei
Optimism0.2402 vs ~0.100 gwei
Arbitrum2.42 vs 1.001 gwei
Polygon1,080 vs 450 gwei
Avalanche8 vs 3 gwei
Tron100 vs 30 TRX limit
2.00×
2.01×
2.40×
2.40×
2.42×
2.40×
2.67×
3.33×
0×1×2×3×

That consistency points to one tool, or one "urgent" setting, driving every chain at once.

The Ethereum takeover, explained

What EIP-7702 is

Since Ethereum's Pectra upgrade in May 2025, an ordinary wallet can sign an EIP-7702 authorization: a message that says "from now on, run this smart contract's code when someone calls me." It is useful. It lets a normal wallet batch transactions or have someone else pay its gas. It is also dangerous, because whoever writes that code controls the wallet for as long as the delegation stands.

The rehearsal

The attacker's own Ethereum wallet has sent exactly 23 transactions. At 02:28 it deployed a first sweeper. Between 13:51 and 14:24 it delegated two of its own wallets to it and ran test sweeps. At 15:59 it deployed the final contract, with one function that empties a list of tokens and another that makes the wallet call any contract. Between 16:20 and 16:47 it tested that contract on a third wallet. By evening it was ready.

Why 50 signatures

An EIP-7702 authorization only takes effect if its nonce (a counter that goes up by one with every transaction the wallet sends) matches the wallet's current nonce at the moment it executes. A busy exchange hot wallet sends transactions constantly, so its nonce moves every block. One signature would almost certainly be stale by the time it landed.

So the attacker brought 50 of them, covering nonces 18,914,775 to 18,914,824, in a single transaction. In block 26,300,753, Binance 14 first sent one of its own transactions (nonce ...808), and then the attacker's authorization for nonce ...809 took effect. The other 49 were simply skipped.

The nonce window

50 signed authorizations, nonces 18,914,775 to 18,914,824 (last three digits shown). Only the one matching the wallet's live nonce applies; the rest are skipped.

775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824

…808 Binance 14's own transaction, in the same block

…809 the attacker's authorization that took effect

Under EIP-7702, an account's code can only be changed by an authorization signed with that account's own key. So when Binance 14's code switched from empty to a pointer to the attacker's contract, that alone proves the signature came from Binance 14's key. From that moment, Binance 14 ran the attacker's code.

What the delegation allowed

TimeThrough Binance 14
20:24:23sweep(): 167,464.25 ETH, 1,615,409,498.97 USDT and 62 more tokens
20:41 and 20:59Calls a smart wallet that Binance 14 owned and drains it: 780M and 43M USDC
21:04 to 23:56Four more sweeps: 1,699.92 + 369.83 + 128.49 + 2,961.91 ETH, 3.92M + 200.40M USDT, and more tokens
00:10:35Binance re-delegates Binance 14 to the zero address with its own key, ending the takeover

The smart wallet is the detail I keep coming back to. A hot wallet owned another wallet holding 823M USDC, so taking over one gave the attacker both.

Separately, Binance 16 sent nine ordinary transfers it signed itself, all in the same second (20:24:47), with no delegation involved: 28,005.6 ETH, 55.7M USDT, 25.9M RLUSD, 84.5 WBTC, and smaller amounts of UNI, ENA, LINK, XAUt and PEPE. In total, Ethereum lost 200,630 ETH, 1.88B USDT, 823M USDC, 88.5M RLUSD and about 165 other tokens.

What was taken

Priced in USD at the 20:00 UTC hourly open on Binance's own market data:

Value taken by chain

USD at the 20:00 UTC price. Ethereum includes the 823M USDC smart wallet and 169 priced tokens; 15 obscure tokens are unpriced.

Ethereum$3.79B
Bitcoin$1.48B
Tron$628M
XRP Ledger$299M
Solana$97M
Arbitrum$32M
Avalanche$28M
Polygon$10M
Optimism$4.9M
Base$2.9M
ChainTakenUSD
Ethereum200,630 ETH, 1.88B USDT, 823M USDC, 88.5M RLUSD and about 165 more tokens$3.79B
Bitcoin18,270.2 BTC$1.48B
Tron612.73M USDT, 46.39M TRX$628M
XRP Ledger233.46M XRP$299M
Solana970,522 SOL$97M
Arbitrum74.56M ARB, 8,426 ETH$32M
Avalanche2.26M AVAX, 8.41M USDT$28M
Polygon46.63M POL, 6.19M USDT$10M
Optimism44.23M OP$4.9M
Base4.74M VIRTUAL$2.9M
Total15 obscure Ethereum tokens with no Binance market left unpriced$6.37B

The prices used: BTC $80,848.64, ETH $2,336.90, SOL $99.83, XRP $1.2824, TRX $0.3315, AVAX $8.854, ARB $0.1684, OP $0.1101, POL $0.09203, VIRTUAL $0.6088, and $1.00 for USDT and USDC. Other tokens use the same hourly candle against USDT; WBTC is priced as BTC, XAUt as PAXG, and stablecoins at $1.00.

About $625 million of the Ethereum figure is the long tail of tokens other than ETH, USDT and USDC. These are the 25 largest tokens taken from Binance 14 and Binance 16, summed from the token transfers:

TokenAmountUSD
USDT1,875,464,711.07$1.88B
RLUSD88,541,065.48$89M
wBETH29,934.01$78M
XAUt (tokenized gold)12,574.05$51M
UNI7,018,792.33$50M
ENA218,478,254.43$46M
PEPE7,772,977,017,415.97$41M
LINK2,574,848.15$30M
USD127,824,039.94$28M
AAVE128,034.31$17M
WBTC167.15$14M
USDe9,707,546.77$9.7M
ONDO21,851,870.66$9.1M
PAXG (tokenized gold)1,906.67$7.7M
WLD17,317,869.01$7.2M
ZAMA87,853,170.57$6.6M
ZRO3,601,631.16$6.2M
RSR3,382,160,847.12$5.3M
PROM911,984.83$5.1M
MORPHO1,763,059.91$3.9M
FET19,791,934.71$3.5M
GTC14,457,610.14$3.5M
FDUSD3,454,894.92$3.5M
PENDLE1,682,533.42$3.3M
ERA38,603,848.94$2.9M
All 169 priced tokens$2.50B

What was frozen, and what can't be

The freezes follow one simple rule: issued tokens can be frozen, native coins cannot. A stablecoin like USDT or USDC is a contract run by its issuer, and the issuer can block an address. Bitcoin, ETH, XRP and SOL have no issuer to call.

Value taken by asset: frozen vs not frozen

USD at 20:00 UTC. Frozen means blacklisted by the issuer, or moved to a frozen address by chain governance, read on-chain.

Frozen (verified on-chain)Not frozen
USDT$2.50B71%
BTC$1.48B0%
USDC$823M100%
ETH (Ethereum)$469M0%
Other Ethereum tokens$373M0%
XRP$299M0%
SOL$97M0%
RLUSD$89M46%
wBETH$78M100%
XAUt (gold)$51M100%
USD1$28M100%
AVAX$20M0%
ETH (Arbitrum)$20M100%
TRX$15M0%
ARB$13M100%
PAXG (gold)$7.7M100%
OP$4.9M0%
POL$4.3M0%
VIRTUAL$2.9M0%
AssetFrozenBy whom
USDTabout 1.77B of 2.50B (71%)Tether: 1.38B on Ethereum across three addresses, 378.7M on Tron, plus the attacker's USDT on Avalanche and Polygon
USDCall 823MCircle
RLUSD40.54M of 88.5M (46%)Ripple, on Ethereum
wBETHall 29,934 (~$78M)Binance
XAUtall 12,574 (~$51M)Tether
USD1all 27.8MWorld Liberty Financial
PAXGall 1,906.67 (~$7.7M)Paxos
ARB and ETH on Arbitrum74.56M ARB and 8,426 ETHArbitrum, through a chain-level intervention

That is about $2.83 billion, each freeze checked on-chain. For the smaller tokens I simulated a transfer out of the attacker's address: it fails with the issuer's own error ("Account is frozen", "transfers are blocked", "account is blacklisted"). Binance's own figure is about $3 billion. About $373 million of other Ethereum tokens, such as UNI, ENA, PEPE and LINK, were not frozen.

The race against the freezes

The attacker knew the clock was running. On Tron, they swapped 234M USDT into 638M TRX through a decentralized exchange before Tether acted, and moved 66M USDT just 81 seconds before their wallet was frozen. On Avalanche, they swapped 200,000 AVAX into USDC and bridged it to Ethereum with Circle's own bridge, CCTP. Circle blacklisted the receiving address four minutes after the USDC landed.

RLUSD shows the same race. The attacker moved all 88.5M RLUSD out at 21:22:59, sold about 48M of it in under half an hour, and Ripple froze the remaining 40.54M at 22:00:59. All of that happened on Ethereum. On the XRP Ledger, the attacker's only RLUSD payment had already failed, and the issuer took no action there.

Arbitrum's intervention

Arbitrum did something more unusual. Using its upgrade powers on Ethereum, it briefly swapped out the contract that delivers messages to the chain, injected two messages as if they came from the attacker's wallet, and restored the contract. Those messages moved 74.56M ARB and 8,426 ETH to a frozen address. It worked. It is also a clear demonstration of how much power an L2's security council holds over funds on its chain.

What is still out there

The attacker is also selling tokens that can still be frozen, as with the RLUSD above, so these balances keep changing.

Signing service abused, or keys stolen?

This is the question that matters most, and chain data alone cannot settle it. Binance says it found no evidence of a private-key leak. The chain data allows two readings:

  • The signing service was abused. The attacker controlled a trusted internal component (in Binance's account, a service container reached from a DevOps laptop) and had the signing service sign withdrawals to the attacker's addresses. The keys never left their hardware.
  • Keys were copied. The attacker obtained usable copies of hot-wallet keys, or the ability to sign at will, and built the transactions themselves.

Why "withdrawals" reached the attacker at all

A withdrawal is, by definition, a transfer to whatever external address the request names. Under the first reading, the attacker created requests with their own address as the destination, and the checks a customer withdrawal goes through (account balance, risk approval) did not apply on that internal path.

Here is how the evidence falls:

EvidenceSigning service abusedKeys copied
XRP thefts interleaved with live withdrawals, then retried automatically 10.5 minutes laterFits wellHard to explain: a key-holder doesn't trigger the exchange's own retry logic
Bitcoin thefts built on Binance's own transaction templateFitsOnly if the template was copied too
Some funds left behind for about three hours, until Binance moved about 1,770 BTC, 12.08M XRP and 155,030 SOL out of the same walletsFitsOdd: a key-holder could have emptied them at any time
Binance kept signing with the same keys, including the revocationFitsPossible only if both sides held the keys
Solana and Tron transactions built unlike normal withdrawalsFits, through a direct "sign this" requestFits equally
50 EIP-7702 authorizations signed by Binance 14Fits, if the signer signs arbitrary payloadsFits equally
Binance evacuated its hot wallets from 23:02 to 23:16Fits: the standard response when the reach of a compromise is unknownFits: equally expected
A second wave on Avalanche and Polygon at 23:04Fits, if some signing access persistedFits
Attacker fees about two to 2.7 times routine on seven chainsNeutralNeutral

My reading: the XRP Ledger and Bitcoin evidence leans towards an abused signing service; Solana, Tron and Ethereum cannot tell the two apart; and nothing on-chain points only to stolen keys.

There is also a test that would settle it. If keys are out, the attacker can still sign for the drained addresses, for example by re-delegating Binance 14 or by sweeping new deposits that land in the old hot wallets. When I checked on 30 October, no such transaction existed. A future one, from those wallets to an attacker address, would prove the keys are out.

Either way, the lesson is the same. For as long as the access lasted, controlling a trusted caller of the signer was as good as holding the keys.

Testing every scenario, including an inside job

An investigator doesn't take a victim's account on trust, especially when the victim holds all the internal evidence. So it is worth testing every scenario, including the uncomfortable ones. To be clear from the start: nothing public points to Binance staging this, or to any employee being involved. On the public evidence, a hack staged by Binance is the least consistent explanation, and a well-prepared outside attacker the most consistent. Whether the attacker had help from inside stays open, because only Binance's own forensics can answer it.

ScenarioWhat would be trueFit with the evidence so far
Outside attacker, through the engineer's laptop (Binance's account)A laptop is compromised; the attacker reaches the signing system and runs a scripted theftBest fit. A rehearsal on the attacker's own wallets the same day, ten chains in 31 minutes, and a race against the freezes. The Bybit hack of February 2025 also started with a developer's machine.
Outside attacker with copied keysKeys were stolen earlier and used outside Binance's systemsWeaker fit. The XRP retries and Binance's own Bitcoin template point to Binance's software doing the signing, and funds the attacker could have taken were left behind for hours.
A rogue insider (one person, not the company)Someone inside helped, or the laptop story is coverOpen, with no evidence for it. The attacker knew how to get Binance's signer to sign EIP-7702 delegations and how to use an internal withdrawal path. That fits long reconnaissance after a break-in as well as it fits inside knowledge. That Binance 14 owned the 823M USDC smart wallet was public on-chain, so it proves nothing either way.
Staged by BinanceThe "hack" hides something, such as an existing hole in reserves or a reason to halt withdrawalsPoor fit, for the reasons below.

Why a staged hack fits poorly

  • Binance is paying it all back. It says it will cover the losses from its SAFU fund and company funds. Paying back about $6.3 billion makes a fake theft pointless, unless it was meant to hide a shortfall that already existed. That is the one version worth testing, and the test is below.
  • Outsiders froze about $2.83 billion within hours. Tether, Circle, Ripple, Paxos, World Liberty and Arbitrum each acted on their own. Anyone staging a theft would avoid assets that someone else can freeze.
  • Everything is public and permanent. A trail across ten blockchains that anyone can trace and analyse is the worst possible cover story.
  • The thief behaves like a thief. They sold about 48M RLUSD in 27 minutes, swapped 234M USDT into TRX before Tether's freeze, moved 66M USDT 81 seconds before their wallet was frozen, and swapped 200,000 AVAX into USDC and bridged it, only for Circle to blacklist the receiving address four minutes after it landed.

What would change that view, and how to test it

Red flagHow to test itWho can test it
Someone profited from the price move: BNB fell as much as 8.7% within the hour, from $744.90 at 20:00 to $680 at 20:45, on Binance's own market dataLook for large short positions opened shortly before 20:04 UTC. On-chain perpetual exchanges are fully public.Anyone, with public data
The hack covered an existing shortfall in reservesCompare Binance's Proof of Reserves from before the hack with the one it publishes after remediationAnyone, once Binance publishes
The laptop story doesn't holdDevice forensics, access logs, how long the attacker was inside, any earlier test signing requestsOnly Binance and law enforcement
Withdrawals stay suspended for a long timeWatch how quickly deposits and withdrawals reopenAnyone
The keys are still out thereAny new signature from a drained wallet to an attacker addressAnyone; none found as of 30 October
The unfrozen funds move like a known group'sWatch the 19 Bitcoin addresses, the 197,460 ETH, the XRP and the SOL for laundering patternsAnyone, with public data

My read: the evidence points to a professional, well-prepared outside operation that came in the way Binance describes. The real open question is not whether Binance faked it. It is whether the attacker had help from inside, and how long they had been in Binance's systems before 20:04. Only Binance's forensics can answer that, which is one more reason its post-mortem matters.

Questions Binance's post-mortem needs to answer

  1. How could one engineer's laptop reach a container with signing rights over hot wallets on ten chains? What separated developer access from production signing?
  2. Does the signer check what it signs, or will it sign any payload a trusted caller sends? Why could it produce EIP-7702 authorizations at all?
  3. Which risk checks and approvals did these withdrawals pass, and which did they skip? Why didn't ten chains emptying in 31 minutes trip a circuit breaker?
  4. How did the attacker still get withdrawals signed at 23:04 to 23:06, almost three hours in and during the evacuation?
  5. Why did a hot wallet own a smart wallet holding 823M USDC? What other trust links exist between wallets?
  6. Why did removing the Ethereum delegation take 3 hours 50 minutes, while deposits arriving in Binance 14 kept being swept out?
  7. Why were billions sitting in hot wallets at once? How are hot-wallet limits set?
  8. Has the compromised access been fully removed and the keys rotated? When will the updated Proof of Reserves confirm it?
  9. Could any key be exported from the signing service at all? Can Binance show that the hot-wallet keys never left their hardware?
  10. How long was the attacker inside Binance's systems before 20:04, and were there earlier test signing requests?

Lessons for every custodian

  • The perimeter is no longer the private key. It is every system allowed to ask for a signature.
  • Allow-list what a signer will sign. A withdrawal signer has no reason to sign EIP-7702 authorizations or arbitrary payloads.
  • Separate developer access from production signing in practice, not just in policy.
  • No hot wallet should own another wallet.
  • Treat new code on a hot-wallet address as an alarm that triggers an automatic revoke within seconds.
  • Halt all signing automatically when outflows hit many chains at once.

Addresses to block

For exchanges, bridges and DEX front ends:

NetworkAddresses
EVM (the same on every EVM chain)0x5227f603c1ee34ce3c06efe6477003bdfccb2f8c, 0x8532fa14acaf483729c449b8458aeddb900543d4, 0xa97bf7836f8a08f9ed91d41453d371493fae8d10, 0x80358c5b8f9b2cc27147a1e0f2a6c9a30eb2c397, 0x3e2bf1ac6bf0934bbba6456c341c2ecbced632d5, 0x7c8601d4645b93cea45f71e118a729332e6b5ca0
Bitcoinbc1q0mtc2f5agpkvlq6hhahmfr3hlr55kyfjhl2mnm and the 19 addresses it split into
TronTSpe5HC3PRD2svJcr1YoGszhHk2mtkyZ8A, TRBdWqHnDVSZCVGfgHdKFLQPirQcA2PRki, TG5iBMQPrDzJJAUM8GMVBf1hRaJ1wvzsGi
XRP LedgerrK21t6nGLy4MNDqhvy3pGwcLFy25qgfzMx
SolanaAffzFDKZbyMiU11zmVBoAqD25ugpr7xoWWyRyGigBEaU

How I checked this, and the limits

Everything here comes from read-only public chain data across the ten blockchains, plus Binance's own published market data for prices. I checked the key claims (the 50 authorizations and the revocation, the sweeps and Binance 16's transfers, every freeze, the Bitcoin split, the XRP retries, the Solana and Tron transaction settings, and the current balances) directly against public blockchain APIs and explorers on 30 October. The EIP-7702 signers were recovered from the signatures themselves (with Foundry's cast recover-authority), and the smaller freezes by simulating a transfer out of the frozen address.

The limits:

  • Interpretation. The patterns and the two hypotheses are my reading of the data. They may differ from what Binance's post-mortem finds.
  • Labels. "Binance" for the source wallets comes from public explorer labels plus on-chain behaviour (exchange-scale nonces, shared evacuation targets, a common contract). There is no on-chain identity registry.
  • Arbitrum's actor. That the Arbitrum action came from its Security Council is inferred from the upgrade rights used.
  • Attribution. This analysis does not say who the attacker is, and Binance has not named anyone.
  • BNB Chain. I found no theft there, but native BNB moving to unknown addresses can't be fully ruled out.
  • Timing. Balances were read on 30 October between 02:30 and 03:40 UTC. Funds are still moving, so some of these numbers will change.

This post is an analysis of public on-chain data, not financial or legal advice.

Evidence

The transactions and addresses behind every claim in this post, grouped by chain. Open a group to see them.

▶Statement and pricesBinance's statement, and the prices behind every USD figure2 items
  1. E1
    Binance's incident statement

    Binance's initial statement on the incident (30 Oct 2026).

  2. E2
    Prices used for USD values

    Binance public market data, 1-hour candle open at 29 Oct 2026 20:00 UTC: BTC 80,848.64; ETH 2,336.90; SOL 99.83; XRP 1.2824; TRX 0.3315; AVAX 8.854; ARB 0.1684; OP 0.1101; POL 0.09203; VIRTUAL 0.6088; USDT and USDC 1.00. Other tokens use the same candle against USDT; WBTC is priced as BTC, XAUt as PAXG, stablecoins at $1.00; 15 obscure tokens without a Binance market are left unpriced.

▶Ethereum: the takeoverRehearsal, the 50 authorizations, the sweeps, Binance 16, the smart wallet, RLUSD10 items
  1. E3
    The attacker's Ethereum wallet

    Its complete history: 23 transactions.

  2. E4
    The rehearsal

    29 Oct: sweeper v1 deployed 02:28:59; EIP-7702 tests on attacker-owned wallets 13:51 to 14:24; final contract 0x63e8…9c6fae deployed 15:59:11; tested 16:20 to 16:47.

  3. E5
    Takeover of Binance 14

    Binance 14 (0x28C6…1d60): one type-4 transaction carrying 50 EIP-7702 authorizations, nonces 18,914,775 to 18,914,824, all recovered to Binance 14. Its account code becomes 0xef0100 + 0x63e842b0… in block 26,300,753 (none in 26,300,752).

  4. E6
    Sweeps of Binance 14

    Through sweep(): 20:24:23 = 167,464.25 ETH + 1,615,409,498.97 USDT + 61 more tokens; 21:04:23 = 1,699.92 ETH + 3,917,639.77 USDT; 21:44:11 = 369.83 ETH + 200,397,771.82 USDT; 22:39:35 = 128.49 ETH + 122 tokens; 23:56:47 = 2,961.91 ETH.

  5. E7
    Binance 16's ETH transfer

    Binance 16 (0xDFd5…963d) sends 28,005.6 ETH to the attacker's receiver in an ordinary transfer it signed itself (20:24:47).

  6. E8
    The smart wallet drain

    Smart wallet 0xee7a…4055, owned by Binance 14, drained through Binance 14 calling execute(): 780,000,000 USDC (20:41:23) and 43,000,000 USDC (20:59:47).

  7. E9
    The main receiver moves funds on

    0x5227…2f8c sends on 500M USDT (20:30:11), 200M USDT (20:33:23) and 195,460 ETH to 0x8532…43d4 (20:38:47).

  8. E11
    Binance revokes the delegation

    Binance 14 re-delegates to the zero address with its own key, in a self-sponsored type-4 transaction (30 Oct 00:10:35).

  9. E32
    Binance 16's eight token transfers

    All to the receiver at 20:24:47: 55,739,800.5 USDT; 25,943,825.8 RLUSD; 84.5 WBTC; 819,997.1 UNI; 1,199.3 XAUt; 18,819,171.4 ENA; 304,598.2 LINK; 583.59B PEPE.

  10. E33
    The RLUSD path

    62,597,239.68 from the Binance 14 sweep (20:24:23) + 25,943,825.8 from Binance 16 = 88,541,065 RLUSD. Moved out at 21:22:59, reached 0xe702…958d at 21:33:59, about 48M sold in the next 27 minutes; Ripple's freeze at 22:00:59. 40,541,065 RLUSD remains, and a simulated transfer from that address reverts.

▶BitcoinThe single-block theft, the 19 addresses, Binance's evacuation3 items
  1. E13
    The Bitcoin theft

    11 transactions in block 973,732 (20:20:06) move 18,270.2 BTC from bc1qm34l…s3h to bc1q0mtc…2mnm, on the same template as the wallet's own sweeps (version 1, locktime 0) but at 10.05 sat/vB against 5.0.

  2. E14
  3. E15
    Binance moves the remaining BTC

    About 1,770 BTC leaves the hot wallet at 23:16:50 (block 973,750): funds the attacker never took.

▶TronThe theft and the race to swap USDT before the freeze2 items
  1. E16
    The Tron theft

    From TDqSqu…hCf to TG5iBM…Gsi: 10,000 TRX (20:20:00), 46,384,098 TRX (20:21:12), 612,729,468 USDT (20:22:45). Same key, but a 65-second expiry against 114 to 118 seconds, and a 100 TRX fee limit against 30 TRX on the 360 routine transactions that hour.

  2. E17
    The Tron laundering race

    234M USDT swapped into 638.17M TRX (20:47 to 21:14) and sent to TSpe5H…8A; 65.99M USDT moved 81 seconds before the freeze (21:16:18).

▶XRP LedgerThe theft and the automatic retries2 items
  1. E19
    The XRP Ledger theft

    42.75M RLUSD fails (tecNO_DST, 20:04:52); five hot wallets send 233,461,943.1 XRP to rK21t6…gfzMx (20:05:00 to 20:09:20). Fee 6,000 drops against 3,000 on all 1,152 routine payments; sequence numbers interleaved with live withdrawals.

  2. E20
    The automatic retries

    The same four withdrawals re-submitted about 10.5 minutes later with new sequence numbers, failing with tecUNFUNDED_PAYMENT (20:17:30 to 20:19:51): the withdrawal service's own retry behaviour.

▶Solana, Base, Optimism and ArbitrumPlain transfers from the hot wallets, and their fees4 items
  1. E22
    The Solana theft

    965,455.1 SOL (20:10:18) + 4 × 1,266.7 SOL from 5tzF…uAi9 to Affz…EaU. Plain system transfers, unlike 611 of the 616 transactions the wallet signed that evening (durable nonce, compute budget, batching).

  2. E23
    Base

    4,735,627.3 VIRTUAL from 0x3304…566a (20:16:19); 0.300/0.288 gwei against routine 0.12/0.12.

  3. E24
    Optimism

    44,231,858.2 OP from 0xacd0…435a (20:18:23); 0.2403/0.2402 gwei against routine ~0.1000.

  4. E25
    Arbitrum

    74,559,805.2 ARB + 8,426.2 ETH from four hot wallets (20:30:34 to 20:33:53); 2.46/2.42 gwei against routine 1.2/1.001.

▶Avalanche and PolygonThe first wave and the second, during the evacuation2 items
  1. E27
    Avalanche, first wave

    1,814,099.3 AVAX + 8,409,928.4 USDT from four hot wallets (20:33:18 to 20:35:53); priority fee 8 gwei against routine 3.

  2. E28
    The second wave

    During Binance's evacuation: Avalanche 444,536.6 AVAX (23:04:30, 8 gwei, between the wallet's own 3-gwei evacuation transactions); Polygon 6,185,900.1 USDT + 46,626,589.6 POL (23:05:55).

▶FreezesTether, Circle, Ripple, Paxos, World Liberty, Binance and Arbitrum7 items
  1. E10
    Ethereum freezes by Tether and Circle

    Tether AddedBlackList on 0x5227 (21:01:35), 0xaa24…54a0 (21:14:59) and 0xb171…c8c3 (21:18:59); Circle Blacklisted 0x5227 (21:04:59). Read at block 26,302,922: 1,175,464,712.78 + 174,999,872.33 + 30,000,000 = 1,380,464,585 USDT frozen, and 823,000,000 USDC.

  2. E12
    Circle blacklists Binance 14 and the smart wallet

    On Ethereum at 23:53:35 and 23:54:59; also on Arbitrum, Optimism, Base and Avalanche.

  3. E18
    Tron freezes

    By the USDT owner multisig: TG5iBM (21:09:12, 312,729,468 USDT) and TCzBTk (21:21:12, 65,990,000 USDT), 378,719,468 USDT in all.

  4. E21
    No RLUSD freeze on the XRP Ledger

    The issuer rMxCKb…m5De's sequence is unchanged (89,926,531) from before the attack to now; no TrustSet, Clawback or GlobalFreeze.

  5. E26
    Arbitrum's chain-level intervention

    An L1 UpgradeExecutor action (30 Oct 00:08:35) swaps the Inbox implementation, injects two messages from the attacker's wallet 0x3e2b and restores the Inbox; on L2, 74,559,805.2 ARB and 8,425.998 ETH move to 0x…0da0 (00:18:20). That the Safe is the Security Council is inferred from its executor rights.

  6. E29
    Avalanche and Polygon freezes, and the CCTP hop

    Tether blocks 0x5227 on Avalanche (21:07:55; an attacker move reverts at 21:40:47) and on Polygon (23:25:39). 200,000 AVAX swapped into 1,563,832 USDC and bridged with Circle's CCTP to 0xc39e on Ethereum (minted 23:27:35), then blacklisted by Circle at 23:31:59.

  7. E34
    Further freezes

    Checked by simulating a transfer from the holder (eth_call reverts with the issuer's error): 12,574.05 XAUt ("Blocked: transfers are blocked"), 1,906.67 PAXG (Paxos freeze error) and 27,824,039.94 USD1 ("Account is frozen") at the receiver 0x5227; 29,934.01 wBETH ("Blacklistable: account is blacklisted") at 0x7f9d…15e3, where the attacker moved it at 21:52:47.

▶Evacuation and what is leftWhat Binance moved out, and what the attacker still holds2 items
  1. E30
    Binance's evacuation

    Binance moves what is left in the affected hot wallets from 23:02 to 23:16 with its normal transaction templates: 155,030.078 SOL (23:02:30), 11,141,435.843 XRP from the largest wallet (23:12; about 12.08M across all five) and 1,770 BTC (23:16:50).

  2. E31
    What the attacker still holds

    Read on-chain on 30 Oct, about 02:30 to 03:40 UTC: 197,460 ETH at 0x8532 (no outgoing transactions); 12,891 ETH at 0x5227; 2,116 ETH at 0xa97b; 2,058,636 AVAX (0x5227 + 0x8035); 44.23M OP, 46.63M POL and 4.74M VIRTUAL at 0x5227; 682.9M TRX (TSpe5H, TRBdWq and in motion).

34 evidence items. Every link opens a public block explorer.

Sources