1. Deterministic ATA Derivation
On Solana, your primary wallet address (System Program account) cannot directly hold SPL tokens. Instead, tokens are stored in separate accounts owned by the SPL Token Program.
To make token addresses predictable, the Associated Token Account program derives an address deterministically using a Program Derived Address (PDA) from:
PDA = findProgramAddress([walletPubkey, tokenProgramId, mintPubkey], ataProgramId)2. The 165-Byte Storage Requirement
Each SPL Token account contains exactly 165 bytes of binary data specifying the mint, owner, token amount, delegate, and state flags. At the current cluster rent rate of 19.055 lamports per byte-year, 2 years worth of rent equals 2,039,280 lamports (0.00203928 SOL).
3. The CloseAccount Instruction
The SPL Token Program provides a native CloseAccount instruction. When invoked by the account owner, the program verifies that the token balance is exactly zero, zeroes the account data, and transfers all remaining lamports to the specified destination address.
4. Summary
Every trade you execute creates an ATA that locks ~0.002039 SOL. When the position is closed, that SOL remains in the ATA until you explicitly sign a CloseAccount transaction.
