PIF
PIF Research Labs / Investigations / Drift Protocol
๐
The Drift Protocol Exploit
$285M drained in 10 seconds. 57,000+ wallets and counting. Every number explained.
Status
Active โ Bots Still Running
Date
April 1, 2026 ยท 16:06 UTC
Amount
$285,000,000+ estimated extracted
Chain
Solana Ethereum BSC
Attacker
HkGz4KmoZ7...pZES
Tags
Admin Key Exploit Fake Oracle Fake Collateral Active Laundering
๐ The Numbers โ What They Actually Mean
Every number below was pulled directly from the Solana blockchain. Here's each number and why it matters:
$285M+
Total extracted
The total value of all assets stolen from Drift Protocol's lending vaults โ 18 different token types including USDC, JLP, wrapped Bitcoin, ETH, SOL derivatives, and more.
10 sec
Core drain time
From first withdrawal (41.72M JLP at 16:06:09) to last primary withdrawal (2,200 wETH at 16:06:19). The major vaults were emptied in the time it takes to send a text.
$23.3M/s
Drain rate
$233M รท 10 seconds. The attacker extracted twenty-three million dollars every second. The average US household earns about $1/sec. This was 23 million times that.
57,331
Unique wallets
Automated bots scattered the stolen funds across 57,331 separate wallet addresses to make it nearly impossible to trace and recover. This number is still growing.
861,457
Total transactions
Every time money moves between wallets, that's one transaction on the blockchain โ one footprint investigators must follow. 861,457 footprints going in every direction. That's the defense.
~590/min
Current bot rate
Right now, automated bots are executing ~590 money-moving transactions every minute โ about 10 per second. They've been running nonstop for 34+ hours, creating new wallets and burying the trail deeper every second.
129,066 ETH
Purchased on Ethereum
The attacker bridged $463M USDC via Circle CCTP to Ethereum and accumulated 129,066 ETH (~$225M). Why? USDC can be frozen by Circle. ETH cannot be frozen by anyone. Converting to ETH puts the money beyond reach โ like converting marked bills into gold no bank can seize.
$66.7M
USDC unmoved
$66.7M in USDC sitting in one wallet (8ubo4HbW...) for 34+ hours. Circle can freeze it by blacklisting the address. Every minute they don't is a minute the attacker could convert it to unfrozen ETH.
99.9997%
JLP vault drained
41.7 million JLP tokens reduced to 133 remaining. If the vault was a bank with $41.7M in deposits, the attacker left $12.50 on the counter and walked out with the rest.
๐งช The $1 Rehearsal โ March 24, 2026
What happened
Eight days before the exploit, the attacker created a brand-new wallet and ran what looks like a meaningless sequence of micro-transactions. Fractions of a cent. Dust amounts. 61 transactions in 29 minutes. Total cost: less than $1. Nobody noticed. Nobody had any reason to notice. But every single transaction had a purpose.
61
Transactions
Each one created a "token account" โ a receiving address for a specific token type on Solana
18
Unique destinations
DEX routers, token programs, and intermediary wallets that the heist would need to interact with
<$1
Total cost
The entire rehearsal โ all 61 transactions, all 7 token types โ cost less than one dollar combined
Why they did this
On Solana, a wallet can't receive a token it's never held before unless it has an "Associated Token Account" (ATA) for that specific token type. Think of it like mailboxes: if you want to receive mail, you need a mailbox. If you want to receive 7 different types of mail, you need 7 different mailboxes. The attacker was building mailboxes โ one for every token type they planned to steal from Drift's vaults.
Here are the exact tokens they tested โ each one matches a token held in Drift's vaults:
The intended outcome
When exploit day arrived, the wallet was pre-configured to receive every token type in Drift's vaults. Without this rehearsal, the withdrawals would have failed โ you can't receive JLP if you don't have a JLP token account. The attacker spent less than $1 to build the infrastructure for a $285M heist. And because every transaction was under a penny, it triggered zero alerts, zero flags, and zero attention from anyone monitoring the chain.
โธ๏ธ
After the rehearsal, the wallet went completely silent. Eight days of zero activity. No transactions. No movement. Nothing. Then on April 1 at 16:05 UTC, it woke up and drained a quarter billion dollars in ten seconds.
๐ The Multisig Takeover
What happened
Drift Protocol's admin key โ the master key that controls every setting in the protocol โ was protected by a "multisig." A multisig is like a safe deposit box that requires multiple keys to open. Drift's new multisig required 2 out of 5 keyholders to approve any change. But the attacker didn't need to break the safe. They became the keyholders.
2 / 5
Multisig threshold
Only 2 out of 5 signers needed to approve. That means 3 signers could be completely unaware while 2 make changes.
0 sec
Timelock
A "timelock" is a mandatory waiting period between proposing a change and executing it. Zero seconds means instant execution โ no review window, no time for anyone to notice and object.
4 / 5
New signers
4 of the 5 signers on the new multisig were brand-new addresses. Only one carried over from the old configuration. The access was effectively handed to unknown parties.
The intended outcome
Five hours before the exploit, the carryover signer proposed transferring the admin key. One of the new signers co-signed within one second. Two signatures met the 2/5 threshold. With zero timelock, it executed instantly. No other signer was consulted. No alert was triggered. The attacker now held the admin key that controlled $550 million in user funds. The vault wasn't broken into. The keys were handed over.
๐ซ The Durable Nonce โ Pre-Loaded Bullets
What Drift confirmed
The attacker used "durable nonce" transactions. Normally on Solana, a transaction expires in about 90 seconds. If it doesn't get processed in that window, it dies. A durable nonce bypasses this. It creates a transaction that never expires. You can sign it today and execute it next week, next month, or at exactly 16:06 UTC on April 1.
~90 sec
Normal tx lifespan
A standard Solana transaction expires in roughly 90 seconds. If it isn't processed by then, it's dead. This is a safety feature.
Forever
Durable nonce lifespan
A durable nonce transaction never expires. Sign it on March 24, fire it on April 1. The blockchain doesn't know the difference.
8 days
Silence between rehearsal and exploit
The attacker wasn't waiting. They were done. Every transaction was pre-signed and sitting in a queue, ready to fire.
Why this matters
This is why there were eight days of silence after the rehearsal. The attacker wasn't waiting for the right moment. They were finished. During the rehearsal window (or shortly after), they pre-signed every exploit transaction: the admin key transfer, the fake market creation, the circuit breaker changes, every vault withdrawal. All of it was packaged, signed, and sitting in a queue like bullets in a magazine. When April 1 arrived, the attacker didn't manually execute each step. They triggered the sequence and the pre-signed transactions fired automatically, one after another, in perfect order. That's how you drain $233 million in 10 seconds. A human can't sign 8+ withdrawal transactions across 18 token types that fast. A pre-loaded sequence can.
โธ๏ธ
The attacker didn't just plan the heist. They rehearsed it, pre-built the infrastructure, pre-signed every transaction, and waited for the perfect moment to fire. Less than $1 to build the mailboxes. Zero seconds on the timelock. Eight days of patience. Then ten seconds to drain a quarter billion dollars.
๐ฃ The Weaponization โ One Transaction, Two Weapons
What happened at 16:05:39 UTC
Twenty-five seconds before the first withdrawal, the attacker used the admin key to execute a single transaction containing two operations. Together, they turned Drift's own infrastructure into the weapon that would drain it.
โ๏ธ Weapon 1: The Fake Collateral Market
The attacker created a brand new "Spot Market" inside Drift โ Market #63 โ for CVT, the worthless token they minted 20 days earlier. They configured every parameter to maximize how much they could withdraw against fake collateral:
initial_asset_weight
100%
Every $1 of fake CVT deposited = $1 of real withdrawal power. Normal markets use 80-90%, meaning you can only borrow 80-90 cents per dollar of collateral. At 100%, there's zero safety buffer.
imf_factor
0
"Initial Margin Fraction" โ the penalty applied when a single position gets too large. At zero, the attacker could deposit the entire 500M CVT supply with no size-based reduction. No limit on how much fake collateral they could use.
liquidator_fee
0
This fee normally incentivizes third parties to close risky positions. At zero, nobody had any financial reason to liquidate the fake position โ even if someone spotted it, there was no reward for acting on it.
asset_tier
Collateral
The highest tier in Drift's system. Full borrowing power. The attacker didn't set it to a lower tier with restrictions โ they gave their worthless token the same status as USDC.
oracle_source
11 (SwitchboardOnDemand)
The "oracle" is what tells Drift the price of each asset. The attacker pointed this to a feed they controlled โ they could make CVT appear to be worth any price they wanted. On April 1, the oracle pushed 20 price updates valuing 500M worthless CVT at hundreds of millions of dollars.
name
"Default Market Name"
They didn't even bother naming the market. This tells you how confident they were that nobody would notice in time.
๐จ Weapon 2: Circuit Breakers Disabled
What is a circuit breaker?
A circuit breaker is a safety limit on how much value can leave a vault in a given period. Think of it like a fuse box in your house: if too much electricity flows too fast, the fuse blows and cuts the power โ protecting the house from a fire. Drift's circuit breakers were designed to do the same for money: if too much value leaves a vault too fast, the breaker trips and blocks further withdrawals. This is specifically designed to prevent what happened โ a massive, rapid drain. The attacker raised every breaker to a level so high it would never trigger.
What this means in plain language
The JLP vault's circuit breaker was set to trip at 5 billion units. The attacker raised it to 500 trillion โ that's a
100,000x increase. The cbBTC breaker went up 50,000x. The wETH breaker went up 2,500x. Every breaker was raised to 500 trillion โ the same ceiling โ ensuring that no matter how much the attacker withdrew from any vault, nothing would trip. The safety system that existed specifically to prevent a mass drain was turned off, completely, in one transaction, with no delay, no review, and no alert. This was possible because the admin key had unrestricted permission to modify circuit breaker parameters. There was no "circuit breaker on the circuit breakers."
โก
Both weapons โ one transaction. The fake market creation and the circuit breaker modifications were bundled into a single on-chain transaction at 16:05:39 UTC. Twenty-five seconds later, the withdrawals began. The entire weaponization took less time than it takes to order coffee.
โก The Drain โ 16:06:04 to 16:06:19 UTC
16:06:04
Initialize user account on Drift
โ
16:06:07
Deposit 500M CVT. Fake oracle values it at $100M+
+500M CVT
16:06:09
Withdraw 41.72M JLP
~$155M
16:06:10
Withdraw 51.6M USDC
$51.6M
16:06:12
Withdraw 164.35 cbBTC
~$11.5M
16:06:15
Withdraw 4.26M USDS
$4.26M
16:06:17
Withdraw 45,292 dSOL
~$6M
16:06:19
Withdraw 2,200 wETH โ last primary withdrawal
~$4.7M
๐
Full sweep completed in 12 minutes across 18 token types. The JLP vault went from 41.7 million tokens to 133 remaining. That's 99.9997% drained.
๐ What Are "Hops"? โ Follow the Rabbit
When investigators track stolen crypto, they follow money from wallet to wallet. Each jump is called a "hop." The more hops, the harder the chase โ like a rabbit that keeps jumping and splitting into more rabbits. Here's what the attacker's rabbit did:
Origin
๐
The attacker wallet. One rabbit. $285M. Easy to find โ it received money directly from Drift's vaults.
โ FIRST HOP
Hop-1
๐
๐
๐
๐
...ร27
27 getaway wallets. The rabbit splits into 27 copies. Like 27 cars leaving the same garage. Still traceable โ one jump from the crime.
โ SECOND HOP โ THIS IS WHERE IT EXPLODES
Hop-2
57,331+ wallets and climbing. Each green square = a real wallet. Investigators now chase 57,000+ addresses instead of 27. The sheer volume makes recovery nearly impossible.
Still multiplying at ~590/min right now.
โ CROSS-CHAIN โ leaving the country
Bridge
๐
Some rabbits cross the border. Funds bridged from Solana to Ethereum via Circle CCTP. 129,066 ETH purchased ($225M). Different blockchain = different tracking system. ETH can't be frozen by anyone.
๐ช The Multi-Token Mix
What they're doing and why
The attacker isn't moving just one type of token. They're pushing five different token types through the same wallet network simultaneously โ USDC, Fartcoin, pump tokens, JPYC, and an unknown token. This is deliberate. Imagine laundering cash, gold coins, gift cards, foreign currency, and casino chips all through the same system at the same time. An investigator tracking the USDC trail might miss the Fartcoin moving through the same wallets. When multiple token types flow through one address, it becomes harder to prove which tokens are stolen and which are legitimate. The mix creates ambiguity, and ambiguity slows down enforcement.
USDC
$202M
257,730 txns
30,362 wallets
Pump Tokens
$286M*
3,882 txns
429 wallets
*token units
Fartcoin
$18.1M
13,279 txns
2,142 wallets
JPYC
$704K
3,409 txns
119 wallets
Unknown
$248K
5,703 txns
223 wallets
๐ฏ The Concentration Points โ Where the Loop Closes
What they're doing and why
After scattering money across 57,000 wallets, the bots don't leave it there. They funnel it back to a small number of collection wallets. Scattered dust is useless โ you can't spend 57,000 wallets each holding $4,000. You need to reconsolidate to actually move money to an exchange, bridge it cross-chain, or convert it to ETH. But here's the key:
some of the money flows back to the same bot that sent it out. The bot sends money to fresh wallets, those wallets forward it to collection points, the collection points feed it back to the bot, and the bot sends it out again to NEW wallets. Each cycle creates another layer of fake transaction history. This isn't a tree. It's a washing machine.
7s1da8Dd...
$87M
from 7 hop-2 wallets
164 transactions
Czfq3xZZ...
$21.7M
from 33 hop-2 wallets
7,977 transactions
8ekCy2jH... (ITSELF)
$21M
from 37 hop-2 wallets
66,356 transactions
โ MONEY RETURNS TO SENDER
๐ฐ How the Money Was Divided
The strategy
The attacker used a pyramid distribution: 140 wallets hold 72% of the total value ($147M), while 29,000+ wallets hold small amounts. The thousands of small wallets are camouflage โ they look like normal crypto activity. The real money sits concentrated in the 140 wallets at the top. It's a needle-in-a-haystack strategy: hide 140 needles in 29,000 pieces of straw. If investigators can identify and freeze those 140 addresses, most of the money is recovered. But the bots keep adding more straw every minute.
๐ก Live Stats
What's happening right now
The laundering bots have been running for 34+ hours straight โ no pauses, no downtime. Every minute they run, ~590 new transactions scatter the money further. The window to recover funds shrinks with every second. The attacker is racing to convert the remaining $66.7M USDC before Circle freezes it. The bots are buying time.
57,331
Unique wallets
Every one holds stolen funds
861,457
Total transactions
Every one must be traced
~590
Txns per minute
Bots running 34+ hours
$66.7M
USDC sitting
Freezable. Clock ticking.
๐ Why It Worked โ Two Problems
๐งฎThe Math Problem
Every loop multiplies the trail. Send $1M to 1,000 wallets. Each forwards to 3 more: 3,000 wallets. Again: 9,000. Again: 27,000. After three loops through 57,000 wallets, the trail has millions of transactions. No team can trace them all before the money moves again.
โฑ๏ธThe Time Problem
Every minute = more wallets, more noise. USDC can be frozen by Circle โ but only before the attacker converts it. ETH cannot be frozen by anyone. The $225M already in ETH is beyond centralized recovery. The bots are buying time for the rest.
๐ง What's Still Recoverable
โณ
$66.7M USDC in wallet 8ubo4HbW... โ unmoved for 34+ hours. Circle can blacklist this address and freeze the funds permanently. This is the largest recoverable chunk. Once it moves or converts to ETH, it's gone.
๐๏ธ
Still in attacker wallet: 100M pump token, 49M pump token, 41M JPYC (~$273K). All illiquid โ too small to sell without crashing their price. Everything liquid is gone. The attacker took the cash and left the furniture.
๐ The CCTP Pipeline โ How $463M Left Solana
What they built
The attacker didn't use random bridges. They used Circle's own Cross-Chain Transfer Protocol (CCTP) โ the official bridge for moving USDC between blockchains. CCTP burns USDC on Solana and mints fresh USDC on Ethereum. The first CCTP burn happened at 16:05:17 UTC โ 54 seconds BEFORE the first vault withdrawal. The bridge infrastructure was running before the heist even started. This is premeditation visible on-chain.
$397.9M
Burned via primary wallet
Wallet 41zCUJs burned $397.9M USDC via 23 CCTP burns between Apr 1 16:05 and Apr 2 13:33 UTC.
$65.1M
Burned via secondary
Wallet 8ubo4HbW burned $65.1M via 19 CCTP burns. Same pipeline, parallel path.
16:05:17
First CCTP burn
54 seconds before the first vault withdrawal. The exit route was live before the money was stolen.
๐ท Ethereum Side โ Where the Money Landed
The other side of the bridge
Every USDC burned on Solana via CCTP gets minted as fresh USDC on Ethereum. The attacker had 7 Ethereum wallets waiting to receive. Once the USDC arrived, it was immediately swapped to ETH on DEXes. Three concentration wallets now hold 105,380 ETH (~$225M) with zero outbound transactions. The money is sitting. Waiting.
| ETH Wallet | USDC via CCTP | ETH Held | Status |
| 0x55fe...2a | $210.6M (22 mints) | DEX swaps | Active |
| 0xfcc4...66 | $63.1M (18 mints) | 32,994 ETH | Forwarded |
| 0xe69f...b8 | $60.0M (6 mints) | 12,000 ETH | Deposited to Binance |
| 0xad38...6b | $58.6M (26 mints) | 30,417 ETH | Forwarded |
| 0xef43...f4 | $51.9M (18 mints) | 24,970 ETH | Forwarded |
| 0xc106...7c | $21.3M | swapped | Active |
| 0xed41...2e | $9.4M | swapped | Active |
ETH Concentration Wallets โ Still Holding
0x0fe3b690...
56,568 ETH
~$121M
Zero outbound txns
0xaa843ed6...
25,715 ETH
~$55M
Zero outbound txns
0xbddae987...
23,097 ETH
~$49M
Zero outbound txns
โ ๏ธ
105,380 ETH (~$225M) sitting in three wallets with zero outbound transactions. These wallets received ETH from the CCTP pipeline and haven't moved it. ETH cannot be frozen by Circle or any centralized entity. This is the attacker's endgame โ convert everything to unfreeezable ETH and wait.
๐ฆ
Confirmed CEX deposit: 12,000 ETH deposited to Binance hot wallet (0x28c6c06...) from wallet 0xe69f...b8 on Apr 2 at 08:39 UTC. The attacker is already cashing out through centralized exchanges.
๐ Multi-Chain Operation
5+ chains. Simultaneously.
This isn't a single-chain exploit. The attacker is operating across Solana, Ethereum, BSC, Base, and at least two centralized exchanges (Binance, Coinbase) simultaneously. On BSC alone, wallet 0xe69f...b8 has been active since 8 minutes after the drain โ 15 transactions across 7 token contracts. The laundering infrastructure spans the entire crypto ecosystem. Every chain adds another jurisdiction, another tracking system, another layer of complexity for investigators.
57,331
Solana wallets
Hop-2 dispersion network
861,457
Solana transactions
Still growing at ~590/min
7
ETH receiving wallets
$474M USDC minted via CCTP
5+
Chains active
SOL, ETH, BSC, Base, CEXes
The first heist stole the money. The second heist is stealing the trail. It's been running for 34 hours. It hasn't stopped.