- 🎯 Getting Started
- 📚 Feature-by-Feature Guide
- 1. Create Plaintext Key
- 2. Create Encrypted Key
- 3. Decrypt Key
- U. Unlock Wallet
- 4. Setup 2FA Authentication
- 5. Generate Triple-Factor Wallet
- 6. Unlock Triple-Factor Wallet
- 7. Check SOL Balance
- 8. Transfer SOL
- 9. Create WSOL ATA
- 10. Wrap SOL → WSOL
- 11. Unwrap WSOL → SOL
- 12. Close WSOL ATA
- 13. Transfer SPL Token
- 14. Create Nonce Account
- 15. Pump.fun Sell Token
- 16. PumpSwap Sell Token
- 17. Pump.fun Cashback
- 18. PumpSwap Cashback
Quick access to all 18 interactive menu operations:
- 1. Create Plaintext Key - Generate and save unencrypted Solana keypair
- 2. Create Encrypted Key (bot) - Encrypt existing private key and save to keystore
- 3. Decrypt Key - Decrypt keystore and reveal private key
- U. Unlock Wallet - Unlock wallet for Solana operations
- 4. Setup 2FA Authentication - Configure two-factor authentication
- 5. Generate Triple-Factor Wallet - Create wallet with 3FA (hardware + password + security question + 2FA)
- 6. Unlock Triple-Factor Wallet - Decrypt 3FA encrypted wallet
- 7. Check SOL Balance - Query wallet SOL balance
- 8. Transfer SOL - Send SOL to another address
- 9. Create WSOL ATA - Create Wrapped SOL Associated Token Account
- 10. Wrap SOL → WSOL - Convert SOL to Wrapped SOL
- 11. Unwrap WSOL → SOL - Convert Wrapped SOL back to SOL
- 12. Close WSOL ATA - Close WSOL ATA and convert remaining WSOL to SOL
- 13. Transfer SPL Token - Send SPL tokens to another address
- 14. Create Nonce Account - Create durable nonce for transaction replay protection
- 15. Pump.fun Sell Token - Sell tokens on Pump.fun DEX (internal market)
- 16. PumpSwap Sell Token - Sell tokens on PumpSwap DEX
- 17. Pump.fun Cashback (View & Claim) - View and claim pump.fun cashback (native SOL)
- 18. PumpSwap Cashback (View & Claim) - View and claim PumpSwap cashback (WSOL)
sol-safekey startYou will see the language selection screen. Choose your preferred language:
English: Enter 2
中文: Enter 1
After selecting language, you'll see the main menu shown above. Enter the number corresponding to your desired operation.
Important: If you haven't created a wallet yet, you need to:
- Unlock an existing wallet (Option
U) - Create a new wallet (Options
1or2)
Purpose: Generate a new Solana keypair and save it to a file (unencrypted)
Use Cases:
- Development and testing
- When you need to share the key with team members
- Quick wallet generation for testing
Steps:
- Select
1from the main menu - Choose a filename for saving (default:
keypair.json) - System generates a new Solana keypair
- Private key is saved to the file (unencrypted)
Example Output:
🔓 Create Plaintext Key
Enter filename [keypair.json]: my_keypair.json
Generating new Solana keypair...
✅ Key generation successful!
Public Key: 7xKm...9xW3
📝 Important Notes:
• This file contains your private key in plaintext
• Only use for development and testing
• Do NOT share this file with anyone
• For production, use encrypted options (Option 2)
Purpose: Encrypt an existing private key and save it to a secure keystore file
Use Cases:
- Production wallet storage
- Secure backup of existing keys
- Preparing wallet for bot integration
Steps:
- Select
2from the main menu - Paste or enter your private key (base58 format)
- Enter a password (10-20 characters, must include at least 3 of: uppercase, lowercase, digit, special character)
- Confirm password by entering it again
- Choose a filename (default:
keystore.json) - System encrypts and saves to the file
Password Requirements:
- Length: 10-20 characters
- Must include at least 3 of: uppercase, lowercase, digit, special character
- Examples:
MySecureP@ssw0rd!,StrongKey#2025,abc123XYZ!
Example Output:
🔐 Create Encrypted Key
Enter or paste your private key (base58): <paste-your-key-here>
Please set a password (10-20 characters, must include at least 3 of: uppercase, lowercase, digit, special character):
Enter password: ********
Confirm password: ********
Enter filename to save [keystore.json]: my_keystore.json
Encrypting and saving...
✅ Keystore encrypted and saved to: my_keystore.json
📝 Important:
• Password required for decryption - never lose it!
• keystore.json contains AES-256 encrypted private key
• Recommended to backup keystore.json to multiple secure locations
Purpose: Load an encrypted keystore file and decrypt to reveal the private key
Use Cases:
- View your private key when needed
- Export wallet to different formats
- Verify wallet contents
Steps:
- Select
3from the main menu - Enter keystore filename (default:
keystore.json) - Enter your password
- System decrypts and displays the private key
Example Output:
🔓 Decrypt Key
Enter keystore filename [keystore.json]: my_keystore.json
Enter password: ********
✅ Decryption successful!
Public Key: 7xKm...9xW3
Private Key: <base58-encoded-key>
⚠️ Security Warning:
• Private key is now displayed in plaintext
• Keep this screen away from prying eyes
• Consider using decrypted key only when necessary
Purpose: Unlock a wallet for use in Solana operations (Options 7-18)
Steps:
- Select
Ufrom the main menu - Enter keystore filename (default:
keystore.json) - Enter your password
- Wallet status changes to "Unlocked" and wallet is stored in session
Wallet Status Indicator:
The wallet status indicator shows:
- Unlocked: Wallet is ready for operations
- Locked: No wallet loaded in session
Example Output:
🔓 Unlock Wallet
Enter keystore filename [keystore.json]:
Enter password: ********
✅ Wallet unlocked successfully!
📍 Current Wallet: 7xKm...9xW3
🔒 Wallet Status: Unlocked
You can now perform Solana operations (Options 7-18)
All Solana operations (Options 7-18) require an unlocked wallet. Make sure to unlock your wallet first!
Purpose: Query the SOL balance of your wallet
Steps:
- Make sure wallet is unlocked (Status: Unlocked)
- Select
7from the main menu - Enter RPC URL (press Enter for default: mainnet-beta)
- System queries and displays your balance
Example Output:
💰 Check SOL Balance
Enter RPC URL [https://api.mainnet-beta.solana.com]:
Querying balance...
✅ Balance query successful!
📍 Wallet Address: 7xKm...9xW3
💰 SOL Balance: 1.234567890 SOL (1,234,567,890 lamports)
Explorer: https://solscan.io/address/7xKm...9xW3
Purpose: Send SOL to another Solana address
Steps:
- Make sure wallet is unlocked (Status: Unlocked)
- Select
8from the main menu - Enter recipient address
- Enter amount in SOL
- Enter RPC URL (press Enter for default)
- Review and confirm transaction
- System sends the transaction
Example Output:
💸 Transfer SOL
Enter recipient address: 5xKm...2xW3
Enter amount in SOL: 0.1
Enter RPC URL [https://api.mainnet-beta.solana.com]:
Confirm transaction? (yes/no): yes
Sending transaction...
✅ Transaction sent successfully!
Signature: 5xKm...9xW3
Explorer: https://solscan.io/tx/5xKm...9xW3
Purpose: Create a Wrapped SOL (WSOL) Associated Token Account
Steps:
- Make sure wallet is unlocked (Status: Unlocked)
- Select
9from the main menu - Enter RPC URL (press Enter for default)
- System creates WSOL ATA account
Example Output:
📝 Create WSOL ATA
Enter RPC URL [https://api.mainnet-beta.solana.com]:
Creating WSOL ATA...
✅ WSOL ATA created successfully!
📍 ATA Address: 7xKm...9xW3
📊 Token Mint: So11111111111111111111111111111111111111111112
Signature: 5xKm...9xW3
Explorer: https://solscan.io/tx/5xKm...9xW3
Purpose: Convert SOL to WSOL (Wrapped SOL)
Steps:
- Make sure wallet is unlocked (Status: Unlocked)
- Select
10from the main menu - Enter amount in SOL to wrap
- Enter RPC URL (press Enter for default)
- Review and confirm transaction
- System wraps SOL to WSOL
Example Output:
📦 Wrap SOL → WSOL
Enter amount in SOL: 0.5
Enter RPC URL [https://api.mainnet-beta.solana.com]:
Confirm transaction? (yes/no): yes
Wrapping SOL to WSOL...
✅ Wrap successful!
Signature: 5xKm...9xW3
Explorer: https://solscan.io/tx/5xKm...9xW3
✅ WSOL Balance updated: 0.5 WSOL
Purpose: Convert WSOL back to SOL
Steps:
- Make sure wallet is unlocked (Status: Unlocked)
- Select
11from the main menu - Enter amount in WSOL to unwrap
- Enter RPC URL (press Enter for default)
- Review and confirm transaction
- System unwraps WSOL to SOL
Example Output:
📤 Unwrap WSOL → SOL
Enter amount in WSOL: 0.5
Enter RPC URL [https://api.mainnet-beta.solana.com]:
Confirm transaction? (yes/no): yes
Unwrapping WSOL to SOL...
✅ Unwrap successful!
Signature: 5xKm...9xW3
Explorer: https://solscan.io/tx/5xKm...9xW3
✅ SOL Balance updated!
Purpose: Close WSOL ATA account (convert remaining WSOL to SOL)
Steps:
- Make sure wallet is unlocked (Status: Unlocked)
- Select
12from the main menu - Enter RPC URL (press Enter for default)
- System closes ATA account
Example Output:
🗑️ Close WSOL ATA
Enter RPC URL [https://api.mainnet-beta.solana.com]:
Closing WSOL ATA...
✅ WSOL ATA closed successfully!
Remaining WSOL: 0.5 WSOL → 0.5 SOL
Signature: 5xKm...9xW3
Explorer: https://solscan.io/tx/5xKm...9xW3
Purpose: Send SPL tokens to another Solana address
Steps:
- Make sure wallet is unlocked (Status: Unlocked)
- Select
13from the main menu - Enter token mint address
- Enter recipient address
- Enter amount
- Enter RPC URL (press Enter for default)
- Review and confirm transaction
- System sends the transaction
Example Output:
💎 Transfer SPL Token
Enter token mint address: <token-mint-address>
Enter recipient address: 5xKm...2xW3
Enter amount: 100
Enter RPC URL [https://api.mainnet-beta.solana.com]:
Confirm transaction? (yes/no): yes
Sending SPL token...
✅ Token transfer successful!
Signature: 5xKm...9xW3
Explorer: https://solscan.io/tx/5xKm...9xW3
Purpose: Create a durable nonce account for transaction replay protection
Use Cases:
- Batch transaction processing
- Preventing transaction replay attacks
- Ensuring transaction ordering
Steps:
- Make sure wallet is unlocked (Status: Unlocked)
- Select
14from the main menu - Enter RPC URL (press Enter for default)
- System creates nonce account
Example Output:
🔑 Create Nonce Account
Enter RPC URL [https://api.mainnet-beta.solana.com]:
Creating nonce account...
✅ Nonce account created and initialized successfully!
📍 Nonce Address: 5xKm...7xW3
💡 Save this nonce account address for future use!
Signature: 5xKm...9xW3
Explorer: https://solscan.io/tx/5xKm...9xW3
Purpose: Sell tokens on Pump.fun DEX
Use Cases:
- Trading tokens on Pump.fun platform
- Automated selling strategies
- Quick liquidity exit
Steps:
- Make sure wallet is unlocked (Status: Unlocked)
- Select
15from the main menu - Enter token mint address
- Configure sell options:
- Slippage (basis points, default: 9900)
- Seed optimization (default: yes)
- Use seed-optimized ATA (optional, same as PumpSwap)
- Confirm transaction
- System sells all token balance
Example Output:
🎪 Pump.fun Sell Token
Enter token mint address: <token-mint-address>
Enter slippage (basis points, default 9900): [Enter]
Use seed optimization? (yes/no, default yes) [Enter]
Use seed-optimized ATA? (yes/no, default yes) [Enter]
Selling all tokens...
✅ Sell successful!
Signature: 5xKm...9xW3
Explorer: https://solscan.io/tx/5xKm...9xW3
Purpose: Sell tokens on PumpSwap DEX
Use Cases:
- Trading tokens on PumpSwap platform
- Access to multiple liquidity pools
- Advanced trading features
Steps:
- Make sure wallet is unlocked (Status: Unlocked)
- Select
16from the main menu - Enter token mint address
- Configure sell options
- Confirm transaction
- System sells tokens
Example Output:
🔄 PumpSwap Sell Token
Enter token mint address: <token-mint-address>
Enter slippage (basis points, default 9900): [Enter]
Selling tokens...
✅ Sell successful!
Signature: 5xKm...9xW3
Explorer: https://solscan.io/tx/5xKm...9xW3
Purpose: View and claim pump.fun cashback (native SOL)
Use Cases:
- Check available cashback balance
- Claim earned cashback
Steps:
- Make sure wallet is unlocked (Status: Unlocked)
- Select
17from the main menu - System queries and claims available cashback
Example Output:
💰 Pump.fun Cashback
Querying cashback status...
✅ Cashback available: 0.123 SOL
Claiming cashback...
✅ Cashback claimed successfully!
Signature: 5xKm...9xW3
Explorer: https://solscan.io/tx/5xKm...9xW3
Purpose: View and claim PumpSwap cashback (WSOL)
Use Cases:
- Check available WSOL cashback balance
- Claim earned WSOL cashback
Steps:
- Make sure wallet is unlocked (Status: Unlocked)
- Select
18from the main menu - System queries and claims available cashback
Example Output:
💰 PumpSwap Cashback
Querying cashback status...
✅ Cashback available: 0.05 WSOL
Claiming cashback...
✅ Cashback claimed successfully!
Signature: 5xKm...9xW3
Explorer: https://solscan.io/tx/5xKm...9xW3
Purpose: Configure two-factor authentication for enhanced security
Use Cases:
- Adding an extra security layer to your wallet
- Protecting against unauthorized access
- Required for triple-factor wallets
Steps:
- Select
4from the main menu - System collects hardware fingerprint
- Set master password
- Set security question
- Configure TOTP (Time-based One-Time Password)
Requirements:
- Hardware fingerprint collection (device-dependent)
- TOTP authenticator app (Google Authenticator, Authy, etc.)
- Master password (10-20 characters, 3+ character types)
- Security question (choose from predefined options)
Output:
- ✅ Hardware fingerprint (device binding)
- ✅ Master password encryption
- ✅ Security question verification
- ✅ TOTP configuration (6-digit codes, 30-second rotation)
Purpose: Generate a wallet with three-factor authentication (hardware + password + security question + 2FA)
Security Features:
- ✅ Hardware fingerprint (device binding)
- ✅ Master password encryption
- ✅ Security question verification
- ✅ TOTP dynamic codes (6-digit, 30-second rotation)
- ✅ Durable nonce account support
Use Cases:
- Maximum security for production wallets
- Multi-device support with TOTP
- Recovery with multiple authentication factors
Steps:
- Select
5from the main menu - System collects hardware fingerprint
- Set master password
- Answer security question
- Configure TOTP authenticator
- System generates encrypted wallet file
Output:
- Encrypted wallet file (triple-factor)
- Cross-device keystore backup
- Recovery instructions
Purpose: Decrypt a triple-factor encrypted wallet
Requirements:
- Original device (for hardware fingerprint)
- Master password
- Security question answer
- Current TOTP code (6 digits, changes every 30 seconds)
Steps:
- Select
6from the main menu - Enter wallet file path (generated from Option 5)
- Enter master password
- Answer security question
- Enter current TOTP code
- System decrypts and displays wallet
Security: All three factors must be correct to unlock.