Technology Apr 24, 2026 · 3 min read

70,000 Empty Accounts: The Owner Doesn't Know He Left 120 SOL Behind

If you are active in the Solana ecosystem, there is a very high chance you have money sitting completely frozen on the blockchain. Recently, I was analyzing some on-chain data and stumbled upon a single address holding 70,000 empty Token Accounts. That is roughly 120 SOL (thousands of dollars) just...

DE
DEV Community
by Сhekers
70,000 Empty Accounts: The Owner Doesn't Know He Left 120 SOL Behind

If you are active in the Solana ecosystem, there is a very high chance you have money sitting completely frozen on the blockchain.

Recently, I was analyzing some on-chain data and stumbled upon a single address holding 70,000 empty Token Accounts. That is roughly 120 SOL (thousands of dollars) just lying dead for months. The owner probably had no idea.

Free Solana rent scanner - scan up to 10 wallets without connecting. See recoverable SOL instantly.

Why does this happen? It all comes down to how Solana handles storage space.

What is locked rent in Solana?
Solana requires a ~0.002 SOL deposit for every token account you open. When you interact with a new token, swap, or receive an airdrop, an Associated Token Account (ATA) is created, and your SOL is locked to pay for its "rent" on the blockchain.

When these accounts become empty after you sell or transfer the tokens, the deposit stays locked. It doesn't automatically return to you. To claim your sol, you must manually close these empty accounts. Active wallets can easily have 0.5 to 5+ SOL locked this way over time.

The Token-2022 Trap
Closing standard SPL tokens is straightforward. But with the introduction of the Token-2022 standard, things got more complicated. You can't just forcefully close them if there are withheld transfer fees or leftover balances.

If you are building a tool to reclaim sol programmatically, you must follow a strict sequence. Here is the correct execution order in Rust to avoid transaction errors:

// 1. First, harvest withheld fees (Crucial for Token-2022)
tf_instruction::harvest_withheld_tokens_to_mint(
    &spl_token_2022::ID,
    mint_pubkey,
    &[token_account_pubkey],
)?;

// 2. Burn remaining junk tokens (if there is a balance)
token2022_instruction::burn(
    &spl_token_2022::ID,
    token_account,
    mint,
    owner,
    &[],
    amount,
)?;

// 3. Close the account and refund your sol
token2022_instruction::close_account(
    &spl_token_2022::ID,
    token_account,
    owner,
    owner,
    &[],
)?;

Key differences from the old SPL standard:

  • You must invoke spl_token_2022::ID instead of spl_token::id().
  • The harvest_withheld_tokens_to_mint step is mandatory if you want to cleanly claim sol fees that were trapped by token extensions.
  • When reading the account data, you need to use StateWithExtensions::<Account>::unpack instead of standard unpacking.

The Easy Way Out

Building these instructions and batching them for hundreds of accounts is a headache. I kept seeing people lose out on free money, so I built a lightweight utility for the community: SolChekers

I wanted to make it as transparent as possible:

  • Free Scanner: You can go to solchekers.com/scan and just paste up to 10 wallet addresses. No wallet connection required. It will scan the chain and tell you exactly how much locked rent is sitting there, just for your information.
  • Batch Closing: If you decide to clean up, the dApp allows you to batch-burn useless junk and close empty ATAs to claim sol straight back to your main balance in a few clicks.

It's a small tool, but it does one job very well. (We also maintain a comprehensive Solana Wiki on the site if you want to dive deeper into how Token-2022 and ATAs work under the hood).

Go check your address. You might be richer than you think.

What is the most locked rent you've ever recovered from an old wallet? Drop your high score in the comments! )))

DE
Source

This article was originally published by DEV Community and written by Сhekers.

Read original article on DEV Community
Back to Discover

Reading List