> loading_
```bash
# =============================================================
# SIMD-0432 in Practice: Closing a Program & Reclaiming Lamports
# =============================================================
# Tested against Solana CLI tooling on a local validator.
# Once SIMD-0432 is active on your target cluster, the
# `solana program close` command will fully reclaim lamports
# from closed Loader V3 program accounts.
#
# Prerequisites:
# - Solana CLI >= version supporting SIMD-0432 runtime
# - A deployed upgradeable program you want to sunset
# - The program's upgrade authority keypair
# Step 0: Spin up a local validator (if testing locally)
# The --clone flag is optional; we just need the runtime
# feature gate for SIMD-0432 active.
solana-test-validator --reset
# Step 1: Deploy a simple program so we have something to close
# Replace with your own .so if desired
solana program deploy ./target/deploy/my_program.so \
--keypair ~/.config/solana/id.json
# Output: Program Id: <PROGRAM_ID>
# Step 2: Verify the program account exists and note its lamport balance
solana account <PROGRAM_ID>
# Look for the lamport balance — this is the rent-exempt reserve
# that was previously unrecoverable after close.
# Step 3: Check your wallet balance before reclamation
solana balance
# e.g., 496.123 SOL
# Step 4: Close the program and reclaim lamports
# The --recipient flag specifies where reclaimed lamports go.
# Defaults to the fee payer if omitted.
solana program close <PROGRAM_ID> \
--keypair ~/.config/solana/id.json \
--recipient <YOUR_WALLET_ADDRESS>
# Expected output (post-SIMD-0432):
# Closed Program Id <PROGRAM_ID>
# Reclaimed X.XXX SOL to <YOUR_WALLET_ADDRESS>
# Step 5: Confirm the account is fully gone
solana account <PROGRAM_ID>
# Should return: "Error: AccountNotFound"
# Previously the account could linger with zero data but
# locked lamports — SIMD-0432 ensures full reclamation.
# Step 6: Verify your wallet received the lamports
solana balance
# e.g., 498.456 SOL (increased by the reclaimed rent)
# =============================================================
# Programmatic Usage (Rust client example sketch)
# =============================================================
# // If you need to close a program from within a Rust client:
# // use solana_sdk::loader_v3::close_program instruction
# // (exact API depends on SDK version shipping SIMD-0432 support)
#
# let close_ix = solana_sdk::bpf_loader_upgradeable::close_any(
# &program_id,
# &recipient_pubkey,
# &authority_pubkey,
# &programdata_address,
# );
# let tx = Transaction::new_signed_with_payer(
# &[close_ix],
# Some(&payer.pubkey()),
# &[&payer, &authority],
# recent_blockhash,
# );
# rpc_client.send_and_confirm_transaction(&tx)?;
# // Lamports from both the program account and its programdata
# // account are now returned to `recipient_pubkey`.
```