Back to list
70,000 の空口座: 所有者は 120 SOL を捨てていっていることすら知らない
70,000 Empty Accounts: The Owner Doesn't Know He Left 120 SOL Behind
Translated: 2026/4/24 23:00:13
Japanese Translation
ソラナの生態系に深く関与している方は、ブロックチェーン上に完全に凍結された資金を持っている可能性が高いです。最近、私はオンチェーンデータを分析していたところ、120 SOL(数千ドル相当)もの空トークン口座を保持する単一のアドレスを発見しました。所有者はその存在を知りません。なぜこのようなことが起こるのでしょうか。それはソラナがストレージスペースをどのように処理するかにかかっています。ソラナにおけるロックレントとは何ですか? トークンを売却または転送した後、これらの口座が空になった場合、デポジットは自動的に戻ってこないままロックされてしまいます。ソラナを返すためには、空の口座を手動で閉じなければなりません。アクティブなウォレットでは、時間とともに 0.5 SOL から 5+ SOL 程度がこのようにロックされている可能性があります。
Token-2022 の罠
ソラナを自動的に復元するためのツールを構築する場合は、厳密な順序を遵守する必要があります。以下がトランザクションエラーを避けるための正しい実行順序です(Rust 例):
1. まず、保留された手数料を収集します(Token-2022 の場合必須)
```
tf_instruction::harvest_withheld_tokens_to_mint(
&spl_token_2022::ID,
mint_pubkey,
&[token_account_pubkey],
)?;
```
2. 残りのトークンを焼却します(平衡が在る場合)
```
token2022_instruction::burn(
&spl_token_2022::ID,
token_account,
mint,
owner,
&[],
amount,
)?;
```
3. 口座を閉じてソラナを返金します
```
token2022_instruction::close_account(
&spl_token_2022::ID,
token_account,
owner,
owner,
&[],
)?;
```
古い SPL スタンダードとの主な違い:
- `spl_token::id()` の代わりに `spl_token_2022::ID` を呼び出す必要があります。
- トークン拡張によってトリップされた手数料をクリーンに返金したい場合、`harvest_withheld_tokens_to_mint` ステップは必須です。
- アカウントデータを読み取る際には、標準的な `unpack` の代わりに `StateWithExtensions::<>::unpack` を使用する必要があります。
簡単な解決策
これらの指令と数十の口座をバッチ処理するのは頭痛の極致です。無料で金を失う人々をよく目にしたため、コミュニティ用の軽量ユーティリティである SolChekers を構築しました。可能な限り透明性が高いようにしました:
- フリースキャナ:`solchekers.com/scan` にアクセスし、最大 10 件のウォレットアドレスを貼り付けるだけで構いません。ウォレット接続は不要です。チェーンのスキャンを行い、ロックされたレントがどれだけあるか正確に告知します。
- バッチクローリング:クリーンアップを行う場合、dApp ではバッチ烧却および空の ATA の閉鎖を行い、数回のクリックだけでソラナをメインバランステへ返金できます。
これは小型ツールですが、一任の機能を非常に良く実行しています。(サイトには Token-2022 と ATA が内部でどのように動作するかについて詳しく解説する包括的なソラナウィキも維持されています)。
あなたの住所を確認してみてください。予想以上に豊かになっているかもしれません。過去に最も大量に復元したロックレントは何ですか?高得点をコメント欄にコメントください!)))
Original Content
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. Why does this happen? It all comes down to how Solana handles storage space. What is locked rent in Solana? 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 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::::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! )))