On-chain investigationSolana29 October 2026

One attacker held the keys to five Solana validators. They took $135K and sent it to Tornado Cash

Four Solana validators stopped earning rewards at the same moment, including Solflare's. We followed each transfer out of their keys to find out what was taken and where it went.

At a glance
On 26 October one attacker used the keys of five Solana validators, Solflare's and Blockdaemon's among them, and took 1,343 SOL worth, about $135K. 62% of it was JitoSOL. The identity keys emptied into one wallet in 3 minutes, and the vote accounts were empty within two hours, just before the check that picks the next voting set. All four active validators stopped voting a day later. The money crossed to Ethereum through Bridgers and Chainflip, and 57.0 ETH went into Tornado Cash. Stakers' SOL was never touched, but it earns nothing while the four sit out.
1,343
SOL worth taken, about $135K
5
Validators whose keys one attacker held
57.0
ETH deposited into Tornado Cash
0 SOL
Taken from stakers' stake accounts
Key findingsEach line has its own share link
  1. 1,343 SOL

    Taken from the keys of five Solana validators, Solflare and Blockdaemon among them, about $135K.

  2. 62%

    Of the take was JitoSOL from two validators' identity keys, worth 833 SOL. The first public count gave no figure for it.

  3. 5 validators

    One set of hands. Keys of one validator paid the network fees for thefts from another.

  4. 57.0 ETH

    Bridged to Ethereum through Bridgers and Chainflip, then deposited in Tornado's pools. The first deposits came under 9 minutes after the first payout.

  5. 11 days

    Before the drain, the attacker tested the same Bridgers route to the same Ethereum wallet.

  6. 5 seconds

    After a rescuer sent 1 SOL to Solflare's empty vote account, the attacker took it back.

01 · What happenedWhat happened to the Solflare validator

If you stake SOL through the Solflare wallet, your rewards stopped this week. Solflare says your coins are safe, and the record backs that up. Money was taken, though. It came from the people who run the service.

Solflare runs a validator, one of the computers that confirm Solana transactions and pay rewards to the people who stake with them. On 27 October, Solflare said the firm running that machine had reported a "security incident on their side". It hit the keys that firm held. A day later the on-chain researcher ama31337 showed that Solflare was not alone. Validators run by Blockdaemon, Astraeus and a fourth team had been drained by the same wallet in the same few minutes. The fourth is known only by its address, which starts J21SMP.

Bitquery traced each transfer out of those keys with its Solana data, then followed the money onto Ethereum. One person or group held the keys of all four, plus a fifth that Slow Ventures stopped running in 2024. They took 1,343 SOL worth, about $135K. Most of it was JitoSOL, a token you get for staking SOL through Jito, and the first public count put no figure on it. Within two hours almost all the money was in Tornado Cash, a mixer that hides where coins go. The same route had been tested 11 days earlier. A day after the drain the keys were still in use, and the attacker took a rescue payment five seconds after it landed.

02 · How a validator runsHow a Solana validator is run, and what its keys control

Stakers keep their SOL in a stake account that only they control, and point it at the validator they like. The validator earns rewards for doing its job, keeps a cut called the commission and passes the rest on to the people who staked with it.

Three keys do the work. The identity key is a hot key. It lives on the server, signs blocks and pays the small fees for doing so, and its account collects block rewards and tips. The vote account collects the commission. Only the withdraw key can take SOL out of it. That is why teams are told to keep that key cold, on a device that never touches the server.

Since July, a vote account has one more job. Under a rule called the Validator Admission Ticket, it pays 1.6 SOL every epoch to stay in the set of validators that vote. Solana counts time in epochs, and one now lasts about a day, since Solana blocks got faster. A vote account that cannot pay sits out the next one.

Three keys run a validatorwhat each key controls, and what the attacker held
On the validator's serverIdentity key (hot)Signs blocks and pays fees.Holds block rewards, tips, JitoSOL.Vote accountEarns the commission. Paysthe 1.6 SOL ticket each epoch.Withdraw key (meant to be cold)The only key that can takeSOL out of the vote account.Stakers' stake accountsDelegated SOL stays here.Only each staker's key moves it.Validator keys cannot touch it.Rewards stop while thevalidator is out of thevoting set.stake is pointed at the validatorThe attacker held the identity key and the withdraw key of all five validators.Under rules live since July 2026 (SIMD-0357), a vote account that cannot pay the ticket sits out the next epoch.
Stakers keep their own keys. The attacker could reach everything the validators' own keys control, and nothing else.

Neither of the keys the attacker held can touch a staker's account, so the stake itself was never at risk. Everything else was.

03 · Three minutesThree minutes on 26 October

Just after 7pm UTC on 26 October, Solflare's hot key sent its JitoSOL to a brand-new address, 9LsvNg…5Qr8. We call it wallet R. Each JitoSOL trades for a bit more than one SOL. Solflare's SOL came seconds later.

J21SMP's hot key went next, then Blockdaemon's, then Astraeus's. In 3 minutes the four keys handed over 1,188 SOL worth. Wallet R sold the JitoSOL for SOL on Solana's DEXs before the last of it arrived.

1,188 SOL worth in 3 minutesevery theft on 26 October, one row per validator (UTC)
SOL, filled dot in the validator's colourJitoSOL, outlinedVote account emptied, squareSolflareJ21SMP…BlockdaemonAstraeusSlow VenturesStaking wallet19:0419:0519:0619:0719:0819:3020:0020:3021:0021:3022:00…20:58: next epoch's voting set picked
Identity keys first, then the vote accounts. All four vote accounts were empty before the 20:58 check.

The vote accounts came next. Over the next hour and a half, the attacker used each team's withdraw key to empty its vote account into R. Twelve minutes after the last one, a new epoch began. That is when Solana picks who votes in the epoch after, and none of the four vote accounts could pay the ticket.

04 · One set of handsFive validators, one set of hands

Sending money to the same address is one clue. The fees say more. Each Solana transaction names a fee payer, and that key has to sign it. In the drain, keys of one validator kept paying for thefts from a second.

Blockdaemon's hot key paid the fee when Solflare's vote account was emptied. The next morning, Blockdaemon's old withdraw key paid for one more Solflare withdrawal. Astraeus's hot key paid for thefts from J21SMP, Blockdaemon and Slow Ventures. Whoever signed those held the keys of all five teams at once.

Keys paying for each other's theftsthe key that paid the network fee, and whose SOL moved
Blockdaemon's keysAstraeus's identityAttacker's key 6sSJnc…SOL taken from SolflareSOL taken from J21SMP…SOL taken from BlockdaemonSOL taken from Slow VenturesPAID THE FEEWHOSE MONEY MOVED1 fee2 fees1 fee2 fees5 fees4 fees
A key pays fees only for transactions its holder signs.

The withdraw keys go back to 2022. Solflare's and Blockdaemon's first appear on the same February day. The four active validators also share a host. All four run from TeraSwitch's network in Amsterdam and Ireland, on the same software version, 4.3.2. So does a fifth validator that later tried to help Solflare. We found no public statement from Blockdaemon or Astraeus by 29 October.

05 · What was takenWhat was taken, validator by validator

The first count on X gave a figure for the SOL, "plus JitoSOL and other tokens". The SOL figure was right. The JitoSOL was worth more. The attacker took 637 JitoSOL from Solflare's and J21SMP's identities, worth 833 SOL at the price it sold for. That is more than all the SOL taken.

JitoSOL was most of the haulvalue taken from each validator's keys, in SOL
SOLJitoSOL, at the sale priceFirst report's count (tick)0200400600Solflare622J21SMP…317Blockdaemon224Astraeus169Staking wallet8.1Slow Ventures1.2
White ticks mark the first public count, which gave a figure for SOL only. The 1 SOL rescue is left out here.

Then count the later sweeps, the old Slow Ventures keys and the rescue SOL. One more wallet, used for staking, was emptied with a stolen key too. The total comes to 1,343 SOL. Solflare lost the most, nearly all of it in JitoSOL. The other tokens the attacker swept were worth about $10 in all.

06 · Into Tornado CashFrom Solana to Tornado Cash in under two hours

Wallet R moved the money on at once. Almost all of it went through Bridgers and Chainflip, two services that swap coins across chains, and each order named the same Ethereum wallet as the receiver. That wallet, 0x9bdd…4581, collected 56.6 ETH.

57.0 ETH into Tornado Cashwhere the money went, 26 to 28 October
SOLANAETHEREUM5 validators' keys1,343 SOL worthSOL and JitoSOLSolflareJ21SMP…BlockdaemonAstraeusSlow VenturesCollector R1,324 SOL worthJitoSOL sold for SOLSecond collector13.5 SOL worthwith the 1 SOL top-upTwo sweep wallets4.9 SOLBridgers917 SOL inChainflip389 SOL inChainflip11.6 SOL inSwap service4.4 SOL inmatched by value0x9bdd…4581Received 56.6 ETH0x0b7d…bc04Received 0.66 ETHTornado Cash57.0 ETH depositedAbout $132KDashed line: payout matched by amount and time only. Second collector includes the 1 SOL top-up.
Every bridge order from wallet R named the same Ethereum wallet as the receiver.

The first bridge payout landed at ten past seven. Less than nine minutes later the wallet made its first deposits into Tornado Cash. Tornado's pools take fixed amounts, so a deposit can later be pulled out to a fresh wallet with no visible link. Two hours after the first payout, 55.9 ETH was inside.

Under 9 minutes from bridge to mixerEthereum wallet 0x9bdd…4581 on 26 October (UTC)
Received from Bridgers and ChainflipDeposited into Tornado Cash0 ETH20 ETH40 ETH60 ETH19:0019:3020:0020:3021:0019:10:23 first payout19:18:59 first deposits
Tornado takes fixed amounts, so the wallet split its ETH into 10, 1 and 0.1 ETH deposits.

The money swept on the second day by a new collecting wallet went to a second Ethereum wallet, 0x0b7d…bc04, which also paid into Tornado. In all, 57.0 ETH of the 57.2 ETH that reached the two wallets went into the mixer. Both wallets now hold almost nothing.

07 · The rehearsalThe same route, 11 days earlier

The attacker had tried all of this before. On 15 October, wallet R got its first SOL from 4sbDnK…izZm, a wallet that has been active for almost two years. Half a minute later R sent that SOL to Bridgers, and the order named the same Ethereum wallet that would collect the stolen money 11 days later. The day before, the Ethereum wallet had already used Tornado Cash.

The route was tested 11 days earlierthe attacker's wallets on Solana and Ethereum, 14 to 26 October
SolanaEthereum14 Oct1.2 ETH intoTornado Cash router15 Oct0.56 SOL into R,then to Bridgers0.0234 ETH arrivesat 10:32:1126 Oct 19:020.005 ETH toMetaMask Bridge0.11 SOL of gasarrives via Mayan19:04DrainbeginsR's first SOL came from 4sbDnK…izZm, a wallet active since November 2024.
Gas for the drain came from Ethereum through MetaMask Bridge and Mayan, about a minute before the first theft.

On the night of the drain, the first move came from Ethereum. About a minute before the first theft, the wallet paid $12 in ETH to MetaMask Bridge. Two seconds later the same value in SOL reached wallet R through the Mayan bridge, enough to pay its fees. Each swap and bridge order from R and the later collecting wallet paid exactly 0.875% to one fee wallet. That is the rate MetaMask charges for swaps, so the attacker most likely ran the whole thing from a MetaMask wallet.

08 · The second dayThe keys were still live the next day

Early on 27 October, before 4am UTC, the attacker moved the withdraw authority of all five vote accounts to one new key, 6sSJnc…yWyW. The withdraw authority is the setting that says which key can take SOL out, and each change needs a signature from the old withdraw key. For four of them, Blockdaemon's identity first sent the old key a little SOL to pay the fee.

Then the sweeping went on. Two new wallets took leftovers from keys of all five teams in the morning. From early afternoon a third wallet, 85LUgP…Bi5, took about 1 SOL an hour. Most of it came from Solflare's and Blockdaemon's hot keys, and it left through Chainflip.

Still sweeping a day laterSOL taken each hour on 27 October (UTC)
01020 SOL00:0006:0012:0018:0024:00Withdraw keys taken over1 SOL top-up taken in 5 sthey stop votingSOL value per hour, all four attacker wallets. JitoSOL counted at the sale price.
The withdraw keys were taken over before dawn. The last theft came at 23:40.

Late that evening, someone running a different validator on the same network sent 1 SOL into Solflare's empty vote account. Five seconds later the attacker took it. A person does not react that fast, so the attacker was almost certainly watching the account with a bot that grabbed anything new as soon as it landed. The last theft we saw came more than a day after the first.

On the morning of 28 October, the attacker's key moved each withdraw authority again, this time to five fresh keys, one per vote account. The thread reported this as a move to new per-validator keys. Only the holder of 6sSJnc…yWyW could sign it, and the five new keys have done nothing else. So nothing on-chain shows that the teams are back in control.

09 · Why they stoppedWhy the validators stopped voting

A validator earns nothing while it is out of the voting set. All four left it at the same moment, when an epoch ended late on 27 October.

The ticket explains it. Solana picks each epoch's voting set at the start of the epoch before, and charges each member 1.6 SOL then. That check ran at 20:58 UTC on 26 October, minutes after the attacker emptied the last vote account. None held more than 0.1 SOL, so none made the cut. The four kept voting until that epoch ended, then dropped out.

None could pay the 1.6 SOL ticketvote account balance before the drain and at the 20:58 check, log scale
Before the drainAt the 20:58 check, 26 October0.010.1110100 SOL1.6 SOL ticketSolflare10.0Blockdaemon10.2Astraeus66.0J21SMP…10.0Slow Ventures0.08
The check at the start of an epoch picks who votes in the next one. All four active validators missed it.

The 1 SOL rescue came too late for that cut, and on its own it was below the ticket price for the next one. Anyone can top up a vote account. Whoever holds its withdraw key can take the money straight back out, as the attacker showed. To vote again safely, each team needs a withdraw key it alone controls, or a new validator.

10 · StakersWhat it means for Solflare staking rewards

Your stake is where you left it. Solflare says that "No user funds were touched", and the chain agrees. None of the attacker's wallets took anything from a stake account. What you lose is rewards. A validator outside the voting set earns nothing for its stakers for as long as it stays out.

Stake is starting to leaveSOL staked with each validator
First report, 28 OctoberActive stake, 29 October00.5M1.0M1.5MSolflare1.56M1.53MBlockdaemon1.19M793KAstraeus293K84KJ21SMP…794K794K
Most of the drop is at Blockdaemon and Astraeus. Stakers' SOL was never at risk; their rewards stopped.

Some stakers are already leaving. Active stake on the four validators is 3.2M SOL. That is about 639K SOL less than the thread counted a day earlier, most of it from Blockdaemon and Astraeus. Solflare says it is moving to a new validator, will guide stakers there through its app, and is working on compensation. It also says it will never send a direct message or a link about the move. Hold it to that. A fake migration link is exactly what scammers will try next.

11 · The first reportsChecking the first reports

Solflare's post and the thread by ama31337 were the first public accounts. The thread got almost every detail right.

SourceClaimRecordVerdict
ThreadFour validators drained by the same actor in the same windowYes, plus the keys of a retired fifthRight
ThreadAll hosted at TeraSwitch, all on v4.3.2All four publish TeraSwitch addresses and run 4.3.2Right
ThreadIdentity keys sent SOL to R at 19:04–19:07 UTCFrom 19:04:13 to 19:07:27Right
ThreadAbout 483 SOL in total, plus JitoSOL and other tokens484 SOL into R from the four; 637 JitoSOL worth 833 SOL on topToo low
ThreadFunds left via Chainflip and Bridgers to one Ethereum walletEvery bridge order from R named that walletRight
ThreadWithdraw authority of all five moved to one new key, 02:53–03:31 UTC02:53 to 03:31, all five vote accountsRight
ThreadAll four stopped voting at the same slotAll four out of the voting set, same last slotRight
ThreadWithdraw authority moved to new keys on 28 OctoberSigned by the attacker's key; the new keys are unusedUnclear
SolflareNo user funds were touchedNo stake account paid any attacker walletMatches

12 · What we cannot seeWhat the record cannot tell us

The chain shows that one party held five teams' hot keys and cold keys at once. It does not show how they got them. Shared hosting is the only common factor we can see, and Solflare says the firm that runs its validator is the one that reported the incident. Neither proves where the keys leaked.

It matters beyond these five. When TeraSwitch had an outage in August, analysts counted more than a quarter of all staked SOL on its network. A leak at one hosting provider can reach a large share of Solana.

Some money is still at risk. Early on 29 October, Solflare's hot key claimed a reward of 1.55 JitoSOL, and it is still there. Three of the hot keys hold about 1 SOL more between them. One of the thief's sweep wallets holds half a SOL. Anyone with those keys can move it. Look-alike addresses have also sent dust to the thief's wallets. That trick is called address poisoning, so anyone watching should copy addresses with care.

For anyone running a validator, the withdraw key is the one to guard. Here it let the attacker empty the vote accounts, keep them empty and choose who holds them now.

Key leaks keep showing up on Solana this year. A month ago it was TradeWiz and this week it was the Bloom trading bot, and both of those drained the wallets of the people who used them. This one hit the people who run the network.

13 · How we traced itHow we traced the Solflare validator hack

We read each transaction since 26 October on the five validators' keys, and the full history of the thief's wallets. Both came from Bitquery's Solana data and a public Solana node. We read token deposits on their own, since they do not always show in a wallet's history. Each bridge order gave us its receiving address. On Ethereum we read each wallet's transfers and checked each deposit against a public node. Our address labels named the bridges and Tornado's pools. JitoSOL is valued at the price the thief got for it. SOL and ETH use Bitquery's price for the hour of the drain.

You can buy the full Solana and Ethereum histories as files. We also trace cases like this for clients through our crypto investigation services. To follow the thief's wallets yourself, use the Bitquery MCP.

Limits on these findings

Solana transactions were read from a public node up to about 06:30 UTC on 29 October. Ethereum transfers run to 05:13 UTC on 29 October, and live balances were read at about 07:15 UTC. Anything later is not covered.

JitoSOL is valued at the 1.307 SOL per token the attacker got when it sold. SOL and ETH use Bitquery's price for 19:00 to 20:00 UTC on 26 October, $100.44 and $2,314.

Validator names come from the on-chain validator registry. Hosting and software versions come from the addresses the validators publish to the network. The fourth validator, J21SMP…, publishes no name.

We call a wallet the attacker's when it received stolen funds, or paid fees for a theft. The record does not show who controls those wallets or how the keys were taken.

One payout to the second Ethereum wallet is matched to the attacker by amount and timing only. The 0.875% fee and MetaMask Bridge point to a MetaMask wallet; that is an inference from the record.

Stake figures for 28 October are the first public report's. Our own figures are active stake read on 29 October.

14 · The addressesWhere to look

These are the main wallets and transactions in this story. Each description links to the explorer.

9LsvNgeMJwzC5WZ7QDzYo7wVykZmGsPBRPKtXt3a5Qr8
85LUgPUgfJkE3Db5W6rzBfMcsrEsYKT7ZqjGPo2sYBi5
6sSJnc1qXnS1kdYV7berG3kBr9KwUoEduiN5Kum3yWyW
4sbDnKVGwupeCazxnNfajtE4s3VmxGSvhCSGMnmDizZm
4RopCeq1PqsDQWmKq5F8s9wu1LnDYh8Tx13hyP6vCzmm
0x9bdde8b8f610217132cd18f29864167142ee4581
0x0b7d31bfc8c38a561ca15b84bf0bf29bf353bc04
EXhYxF25PJEHb3v5G1HY8Jn8Jm7bRjJtaxEghGrUuhQw
FQwewNXahV7MiZcLpY6p1xhUs2acVGQ3U5Xxc7FzV571
NDf9Pv6TAxTDPR6ud3djsd2Ux1WS2m2YfTw4qEmSnQH
J21SMPFJEY9ExCDPiSJQXN23PVSeoQe3LnKD7QcP3bgP
3hqT8eBCruCJrBRhcPsxtFBZLtKP6gNMx8tYCMC79B7HBmPQaECMjQ1vBapz3rwqVy1r1Gr5erNUrErzeZHiMQ3j
txJQc3z8nYCWTAAGiRJFWvME5V8gTYCS3r3Ma3HXB8TGrp1sN78S4bZ1cfWqAdu8sJgyutDARSwCQCDPCLe7PzX
nLMZSGdoeewreHe1zQdagTVvwA5MhPijmKB3y2SEDsvoqh9dFwKbKzyHnusMD2PU2hLxu6TDKsCt4L43yoAFhuZ
0xbb1084815f9ca1a6f600f024a65ebc4a375afaafe6a49796c9ba230302127445
63VPg1jVsJfMTLKq2gFhunAxBBqLwj8tucmrE9U4bNLYHTcvquyt85wPNj7mz84Cxz4fT1vyFF6HnG515KaHzd9T
Run it yourself

Follow the validator money in plain English

Every transfer in this story comes from Bitquery's Solana and Ethereum data. The Bitquery MCP server puts that data behind an AI assistant, so you can ask where a wallet's money went, or which labels an address carries, without writing a query. The full history is also sold as files on the Bitquery Data Store, as the Solana dataset and the Ethereum dataset.

Watch the attacker's wallets on Solana and EthereumTrace any Solana wallet across a bridge to EthereumCheck an address against Bitquery's labelsRun your own SQL over Solana transfers
Explore Bitquery MCP →Solana and Ethereum transfers from Bitquery, checked against public nodes. Data read on 29 October 2026.
Legal disclaimer

This article is provided for informational and educational purposes only and reflects analysis of publicly available on-chain data as of the dates indicated. It does not constitute legal, financial, compliance, or investment advice, and nothing in it is a recommendation to buy, sell or hold any token or asset, or to stake with, use or avoid any validator, wallet, bridge, protocol or service.

The findings describe transactions and balances observed on Solana and Ethereum between 14 and 29 October 2026. Attributions come from Bitquery's address labels, the on-chain validator registry and on-chain behaviour; they may be incomplete or incorrect and may be revised as more data becomes available.

References to Solflare, Blockdaemon, Astraeus, Slow Ventures, TeraSwitch, Jito, Bridgers, Chainflip, Mayan, MetaMask, Tornado Cash or any other named project, company, service or person describe what the public record shows about addresses and transactions linked to them, and what those parties have said in public. They are not statements about any party's intent, security practices, solvency or conduct, and nothing here asserts that any named party acted unlawfully or negligently. The wallets that took the funds are described by their behaviour and attributed to nobody.

Nothing herein should be relied upon as a definitive determination of fact. Readers should conduct their own independent verification before taking any action. The authors and publisher accept no liability for any loss or damage arising from reliance on this material. All trademarks and company names are the property of their respective owners.

Reported by Gaurav Agarwal for Bitquery Research, with AI tools; every figure was checked against the raw data.

FAQ

Was Solflare hacked, or the Solflare wallet?

Solflare's validator was. Solflare says the provider that runs it reported a security incident affecting its keys. On 26 October someone used the identity and withdraw keys of Solflare's validator and four others to take 1,343 SOL worth of SOL and JitoSOL. Everything we traced came from validator keys. None of it came from stakers or from Solflare wallet users.

How much was stolen in the Solflare validator hack?

The attacker took 1,343 SOL worth, about $135K, from the keys of five validators: Solflare, Blockdaemon, Astraeus, J21SMP and a retired Slow Ventures validator. Most of it was JitoSOL taken from the Solflare and J21SMP identity keys.

Is my SOL staked with Solflare safe, and what about staking rewards?

Yes. Staked SOL stays in your own stake account, and validator keys cannot move it. The attacker's wallets received nothing from any stake account. Your rewards have stopped while the validator is out of the voting set. Solflare says it will move stakers to a new validator through its app and will never send a link or a direct message about it.

Which validators were affected?

Solflare, Blockdaemon, Astraeus and a validator known by its vote address J21SMP stopped voting at the same moment on 27 October. The keys of a fifth, an old Slow Ventures validator that had not voted since 2024, were also used. All four active ones run on TeraSwitch's network.

Where did the stolen money go?

The attacker bridged it to Ethereum through Bridgers and Chainflip, then deposited 57.0 ETH in Tornado Cash within two days, most of it in the first two hours.

Why did the validators stop earning rewards?

Since July, each Solana vote account must pay a 1.6 SOL ticket every epoch to stay in the voting set. The attacker emptied the four vote accounts just before the check that picks the next voting set, so none of them made it.