# 使用手册
Sol-safekey 交互命令和操作的完整使用指南。
[English Documentation](USER_GUIDE.md)
## 开始使用
Sol-SafeKey 提供交互式命令行界面,用于安全的 Solana 钱包管理和操作。本指南涵盖所有可用功能和操作。
### 前置要求
- 已安装 Solana CLI 工具(用于空投和验证)
- 可访问 Solana devnet 或 mainnet RPC 端点
- 支持 UTF-8 的终端以正确显示符号
### 访问交互式菜单
如果你使用的 bot 集成了 sol-safekey:
```bash
./你的bot safekey
```
或者使用独立二进制文件:
```bash
./build-cache/release/examples/bot_example safekey
```
#### 直接安装(独立使用)
对于不使用 bot 的独立使用,直接安装 sol-safekey:
```bash
# 从 crates.io 安装(推荐使用最新版本)
cargo install sol-safekey --features="full"
# 验证安装
sol-safekey --version
# 启动交互式菜单
sol-safekey start
```
这种方式提供通过交互式菜单直接访问所有 sol-safekey 功能。
## 主菜单
启动后,你会看到语言选择:
```
==================================================
Language / 语言选择
==================================================
1. English
2. 中文
Select / 选择 [1/2]:
```
选择语言后,主菜单显示所有可用操作。
### 📋 完整菜单索引(Word 风格)
所有 18 个交互式菜单操作的快速概览,按类别组织。点击任一操作可跳转到详细指南:
#### 🔑 核心功能(选项 1-3)
- **[1. 创建明文私钥](INTERACTIVE_TUTORIAL_CN.md#1-创建明文私钥(选项-1))** - 生成未加密的 Solana 密钥对(仅用于测试)
- **[2. 创建加密私钥](INTERACTIVE_TUTORIAL_CN.md#2-创建加密私钥bot)(选项-2))** - 加密现有私钥并保存到 keystore
- **[3. 解密私钥](INTERACTIVE_TUTORIAL_CN.md#3-解密私钥(选项-3))** - 解密 keystore 并显示私钥
#### 🔒 钱包管理(选项 U)
- **[U. 解锁钱包](INTERACTIVE_TUTORIAL_CN.md#u-解锁钱包)** - 解锁钱包以进行 Solana 操作
#### 🛡️ 高级安全功能(选项 4-6)
- **[4. 设置 2FA 认证](INTERACTIVE_TUTORIAL_CN.md#4-设置-2fa-认证)** - 配置双因素认证
- **[5. 生成三因子钱包](INTERACTIVE_TUTORIAL_CN.md#5-生成三因子钱包)** - 创建 3FA 钱包(硬件 + 密码 + 安全问题 + 2FA)
- **[6. 解锁三因子钱包](INTERACTIVE_TUTORIAL_CN.md#6-解锁三因子钱包)** - 解密 3FA 加密钱包
#### 💰 Solana 链上操作(选项 7-18)
##### 余额与转账
- **[7. 查询 SOL 余额](INTERACTIVE_TUTORIAL_CN.md#7-查询-sol-余额)** - 查询钱包 SOL 余额
- **[8. 转账 SOL](INTERACTIVE_TUTORIAL_CN.md#8-转账-sol)** - 向其他地址发送 SOL
##### WSOL 操作
- **[9. 创建 WSOL ATA](INTERACTIVE_TUTORIAL_CN.md#9-创建-wsol-ata)** - 创建包装 SOL 关联代币账户
- **[10. 包装 SOL → WSOL](INTERACTIVE_TUTORIAL_CN.md#10-包装-sol--wsol)** - 将 SOL 转换为包装 SOL
- **[11. 解包 WSOL → SOL](INTERACTIVE_TUTORIAL_CN.md#11-解包-wsol--sol)** - 将包装 SOL 转换回 SOL
- **[12. 关闭 WSOL ATA](INTERACTIVE_TUTORIAL_CN.md#12-关闭-wsol-ata)** - 关闭 WSOL ATA 并将剩余 WSOL 转换为 SOL
##### 代币操作
- **[13. 转账 SPL 代币](INTERACTIVE_TUTORIAL_CN.md#13-转账-spl-代币)** - 向其他地址发送 SPL 代币
##### 交易工具
- **[14. 创建 Nonce 账户](INTERACTIVE_TUTORIAL_CN.md#14-创建-nonce-账户)** - 创建持久化 nonce 以防止交易重放
##### DEX 操作
- **[15. Pump.fun 卖出代币](INTERACTIVE_TUTORIAL_CN.md#15-pumpfun-卖出代币)** - 在 Pump.fun DEX 上卖出代币(内盘)
- **[16. PumpSwap 卖出代币](INTERACTIVE_TUTORIAL_CN.md#16-pumpswap-卖出代币)** - 在 PumpSwap DEX 上卖出代币
##### 返现操作
- **[17. Pump.fun 返现](INTERACTIVE_TUTORIAL_CN.md#17-pumpfun-返现-查看与领取)** - 查看并领取 pump.fun 返现(原生 SOL)
- **[18. PumpSwap 返现](INTERACTIVE_TUTORIAL_CN.md#18-pumpswap-返现-查看与领取)** - 查看并领取 PumpSwap 返现(WSOL)
#### 🎯 快速访问常用任务
- **[解锁钱包](INTERACTIVE_TUTORIAL_CN.md#u-解锁钱包)** - 解锁钱包并开始使用
- **[查询余额](INTERACTIVE_TUTORIAL_CN.md#7-查询-sol-余额)** - 快速查询 SOL 余额
- **[创建 Nonce](INTERACTIVE_TUTORIAL_CN.md#14-创建-nonce-账户)** - 创建持久化 nonce 用于交易机器人
- **[DEX 操作](INTERACTIVE_TUTORIAL_CN.md#15-pumpfun-卖出代币)** - 访问 Pump.fun 和 PumpSwap 卖出功能
---
## 钱包操作
### 1. 创建明文密钥对
**用途**: 生成未加密的密钥对(仅用于测试)
**警告**: 不建议在生产环境使用。密钥以明文存储。
**步骤**:
1. 从主菜单选择选项 `1`
2. 选择生成方式:
- 选项 1: 生成新的随机密钥对
- 选项 2: 导入现有私钥
3. 选择输出格式:
- 选项 1: 保存为 JSON 文件
- 选项 2: 在终端显示(base58)
**示例**:
```
📝 明文密钥对选项:
1. 生成新密钥对
2. 导入现有私钥
请选择 [1/2]: 1
✅ 密钥对生成成功!
📍 公钥: E7Rmd6piasPNs9jqRBUfS8nvNqDx6j5qPDE6Le7us5bp
输出格式:
1. 保存为 JSON 文件
2. 显示 base58 私钥
请选择 [1/2]: 1
文件路径(默认: wallet.json): test-wallet.json
✅ 已保存到 test-wallet.json
```
### 2. 创建加密密钥对(推荐)
**用途**: 生成或导入带 AES-256 加密的密钥对
**安全性**: 军事级加密配合 PBKDF2 密钥派生
**步骤**:
1. 从主菜单选择选项 `2`
2. 选择生成方式:
- 选项 1: 生成新密钥对并加密
- 选项 2: 导入现有私钥并加密
3. 设置加密密码(最少 10 个字符)
4. 确认密码
5. 选择输出格式:
- 选项 1: 保存为 Keystore 文件(推荐)
- 选项 2: 显示加密字符串
**示例**:
```
🔐 加密密钥对选项:
1. 生成新密钥对并加密
2. 导入现有私钥并加密
请选择 [1/2]: 1
🔒 设置加密密码(至少 10 个字符):
新密码: ************
确认密码: ************
✅ 密码已接受!
输出格式:
1. 保存为 Keystore 文件(推荐)
2. 显示加密字符串
请选择 [1/2]: 1
文件路径(默认: wallet.json): keystore.json
✅ Keystore 创建成功!
📍 公钥: E7Rmd6piasPNs9jqRBUfS8nvNqDx6j5qPDE6Le7us5bp
📁 位置: keystore.json
⚠️ 重要: 记住你的密码!密码无法恢复。
```
**最佳实践**:
- 使用强密码(建议 16+ 字符)
- 混合大小写字母、数字和符号
- 永不分享你的密码
- 安全存储密码(密码管理器)
- 在安全位置保留 keystore 文件的备份
### 3. 解密加密的密钥对
**用途**: 查看或导出加密的密钥对
**步骤**:
1. 从主菜单选择选项 `3`
2. 选择来源:
- 选项 1: 从 Keystore 文件加载
- 选项 2: 粘贴加密字符串
3. 输入解密密码
4. 选择输出格式:
- 选项 1: 仅显示
- 选项 2: 保存为明文 JSON
**示例**:
```
🔓 解密加密的密钥对
来源:
1. Keystore 文件
2. 加密字符串
请选择 [1/2]: 1
Keystore 文件路径: keystore.json
🔑 输入解密密码: ************
✅ 解密成功!
📍 公钥: E7Rmd6piasPNs9jqRBUfS8nvNqDx6j5qPDE6Le7us5bp
输出:
1. 仅显示
2. 保存为明文 JSON
请选择 [1/2]: 1
私钥(base58): 5JW8...
```
### 4. 解锁钱包(会话)
**用途**: 为当前会话解锁加密钱包
**优势**: 解锁一次,可用于同一会话中的所有后续操作
**步骤**:
1. 从主菜单选择选项 `U` 或 `u`
2. 输入 keystore 文件路径
3. 输入密码
4. 钱包在会话期间保持解锁状态
**示例**:
```
🔓 解锁钱包
Keystore 文件路径 [keystore.json]: keystore.json
🔑 输入钱包密码: ************
✅ 钱包解锁成功!
📍 地址: E7Rmd6piasPNs9jqRBUfS8nvNqDx6j5qPDE6Le7us5bp
现在可以使用所有 Solana 操作而无需重新输入密码。
```
## Solana 操作
所有 Solana 操作需要:
- 已解锁的钱包(选项 `U`),或者
- 每次操作时会提示输入 keystore 路径和密码
### 5. 查询 SOL 余额
**用途**: 查询地址的 SOL 余额
**步骤**:
1. 从主菜单选择选项 `4`
2. 选择地址来源:
- 选项 1: 当前解锁的钱包
- 选项 2: 手动输入任何地址
3. 选择网络:
- 选项 1: Devnet
- 选项 2: Mainnet-beta
4. 查看余额
**示例**:
```
💰 查询 SOL 余额
地址来源:
1. 当前钱包
2. 手动输入地址
请选择 [1/2]: 1
选择网络:
1. Devnet
2. Mainnet-beta
请选择 [1/2]: 1
💰 正在查询余额...
地址: E7Rmd6piasPNs9jqRBUfS8nvNqDx6j5qPDE6Le7us5bp
余额: 2.5 SOL
```
### 6. 转账 SOL
**用途**: 向另一个地址发送 SOL
**前置条件**: 足够的 SOL 用于金额 + 手续费(约 0.000005 SOL)
**步骤**:
1. 从主菜单选择选项 `5`
2. 如果钱包未解锁,提供 keystore 和密码
3. 输入接收地址
4. 输入 SOL 金额
5. 选择网络
6. 确认交易
7. 查看交易签名
**示例**:
```
💸 转账 SOL
[如果未解锁]
Keystore 路径: keystore.json
密码: ************
接收地址: 9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin
转账金额(SOL): 0.1
选择网络:
1. Devnet
2. Mainnet-beta
请选择 [1/2]: 1
摘要:
从: E7Rmd6piasPNs9jqRBUfS8nvNqDx6j5qPDE6Le7us5bp
到: 9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin
金额: 0.1 SOL
网络: Devnet
确认交易?(y/n): y
🚀 发送交易中...
✅ 转账成功!
交易签名: 5J7W8vN2BxC9K4... (在浏览器中查看)
```
### 7. 包装 SOL → WSOL
**用途**: 将原生 SOL 转换为包装的 SOL(SPL 代币)
**使用场景**: 某些 DeFi 协议和 DEX 交易需要
**步骤**:
1. 从主菜单选择选项 `6`
2. 如果钱包未解锁,提供 keystore 和密码
3. 输入要包装的金额
4. 选择网络
5. 确认交易
6. 查看交易签名
**示例**:
```
📦 包装 SOL → WSOL
[如果未解锁]
Keystore 路径: keystore.json
密码: ************
包装金额(SOL): 1.0
选择网络:
1. Devnet
2. Mainnet-beta
请选择 [1/2]: 1
摘要:
包装: 1.0 SOL → 1.0 WSOL
网络: Devnet
确认?(y/n): y
🚀 正在创建包装 SOL 账户...
✅ 包装成功!
交易签名: 3K9X2nM5DyH8F7...
WSOL 账户: 7xF2wD9cN3bV1K...
```
### 8. 解包 WSOL → SOL
**用途**: 将包装的 SOL 转换回原生 SOL
**步骤**:
1. 从主菜单选择选项 `7`
2. 如果钱包未解锁,提供 keystore 和密码
3. 输入要解包的金额
4. 选择网络
5. 确认交易
6. 查看交易签名
**示例**:
```
📤 解包 WSOL → SOL
[如果未解锁]
Keystore 路径: keystore.json
密码: ************
解包金额(WSOL): 0.5
选择网络:
1. Devnet
2. Mainnet-beta
请选择 [1/2]: 1
摘要:
解包: 0.5 WSOL → 0.5 SOL
网络: Devnet
确认?(y/n): y
🚀 解包中...
✅ 解包成功!
交易签名: 2M8Y1oL4CxG9J6...
```
### 9. 转账 SPL 代币
**用途**: 向另一个地址发送任何 SPL 代币
**前置条件**: 足够的 SOL 用于交易手续费 + 代币余额
**步骤**:
1. 从主菜单选择选项 `8`
2. 如果钱包未解锁,提供 keystore 和密码
3. 输入代币 mint 地址
4. 输入接收地址
5. 输入金额(以代币的小数单位)
6. 选择网络
7. 确认交易
8. 查看交易签名
**示例**:
```
🪙 转账 SPL 代币
[如果未解锁]
Keystore 路径: keystore.json
密码: ************
代币 mint 地址: So11111111111111111111111111111111111111112
接收地址: 9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin
金额: 100
选择网络:
1. Devnet
2. Mainnet-beta
请选择 [1/2]: 1
摘要:
代币: So11111111111111111111111111111111111111112
到: 9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin
金额: 100
网络: Devnet
确认?(y/n): y
🚀 发送代币中...
✅ 转账成功!
交易签名: 4L7X3pN6EzH0K8...
```
### 10. 创建 Durable Nonce 账户
**用途**: 创建用于离线交易签名的 nonce 账户
**使用场景**: 高级交易模式和离线签名所需
**前置条件**: 约 0.00144288 SOL 用于免租金 nonce 账户
**步骤**:
1. 从主菜单选择选项 `9`
2. 如果钱包未解锁,提供 keystore 和密码
3. 选择网络
4. 确认交易
5. 查看 nonce 账户地址和交易签名
**示例**:
```
🔢 创建 Durable Nonce 账户
[如果未解锁]
Keystore 路径: keystore.json
密码: ************
选择网络:
1. Devnet
2. Mainnet-beta
请选择 [1/2]: 1
摘要:
正在创建 nonce 账户...
租金: 约 0.00144288 SOL
权限: E7Rmd6piasPNs9jqRBUfS8nvNqDx6j5qPDE6Le7us5bp
网络: Devnet
确认?(y/n): y
🚀 创建 nonce 账户中...
✅ Nonce 账户创建成功!
账户: 8yG3wE5dK2mH9L...
交易签名: 6N9Z4qO7FyJ1M3...
```
### 11. PumpSwap 卖出(支持 Token-2022 和批量卖出)
**用途**: 一键在 PumpSwap DEX 上卖出代币,支持单个或批量卖出
**使用场景**: 快速退出 meme 币或在 PumpSwap 上的交易仓位,支持一次性卖出多个代币
**前置条件**:
- 钱包中有代币余额(标准或 Seed 优化的 ATA)
- 足够的 SOL 用于交易手续费
- 代币必须在 PumpSwap DEX 上架
**特性**:
- 自动卖出所有代币(无需输入数量)
- 默认 99% 滑点,快速成交
- 支持标准和 Seed 优化的关联代币账户(默认启用 Seed 优化)
- **批量卖出**: 支持一次输入多个 Mint 地址,用逗号或空格分割
- **智能确认**: 批量卖出时只需确认一次,单个卖出时逐个确认
- 双语界面(中文/英文)
- 支持 Token-2022 程序
**步骤**:
1. 从主菜单选择选项 `12` 或 `15`(取决于 2FA 设置)
2. 如果钱包未解锁,提供 keystore 和密码
3. 输入 RPC URL(例如 `https://api.mainnet-beta.solana.com`)
4. 选择 Seed 优化(默认 yes,直接回车即可):
- 回车或 `y`: 使用 Seed 优化的 ATA(更低手续费,推荐)
- `n`: 使用标准 ATA
5. 输入代币 mint 地址(支持多个,用逗号或空格分割)
6. 批量卖出时统一确认一次,单个卖出时逐个确认
7. 查看交易签名
**单个代币卖出示例**:
```
🔥 PumpSwap 卖出代币
[如果未解锁]
Keystore 路径: keystore.json
密码: ************
输入 RPC URL: https://api.mainnet-beta.solana.com
❓ 启用 Seed 优化? (yes/no, 默认 yes): [直接回车]
✅ 已启用 Seed 优化
代币 Mint 地址: TokenMintAddressHere...
📋 找到 1 个代币待卖出:
1. TokenMintAddressHere...
📊 滑点容忍度: 99%
💰 正在检查代币余额...
✅ 代币余额: 1,000,000 tokens (6 位小数)
❓ 确认全部卖出? (yes/no, 默认 yes): [直接回车]
📊 正在获取 PumpSwap 池子参数...
✅ 找到池子!
🚀 发送交易中...
✅ 卖出成功!
交易签名: 5J7W8vN2BxC9K4...
```
**批量卖出示例**:
```
🔥 PumpSwap 卖出代币
输入 RPC URL: https://api.mainnet-beta.solana.com
❓ 启用 Seed 优化? (yes/no, 默认 yes): [直接回车]
✅ 已启用 Seed 优化
💡 可以输入多个 Mint 地址,用逗号或空格分割
将按输入顺序依次卖出
代币 Mint 地址: Token1Address..., Token2Address..., Token3Address...
📋 找到 3 个代币待卖出:
1. Token1Address...
2. Token2Address...
3. Token3Address...
📊 滑点容忍度: 99%
⚠️ 您即将卖出 3 个代币
所有代币将自动卖出,不会逐个确认
❓ 确认批量卖出? (yes/no, 默认 yes): [直接回车]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🚀 处理第 1/3 个代币
Mint: Token1Address...
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
💰 代币余额: 500,000 tokens
✅ 卖出成功!
⏳ 等待 2 秒后处理下一个交易...
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🚀 处理第 2/3 个代币
Mint: Token2Address...
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
💰 代币余额: 1,000,000 tokens
✅ 卖出成功!
⏳ 等待 2 秒后处理下一个交易...
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🚀 处理第 3/3 个代币
Mint: Token3Address...
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
💰 代币余额: 250,000 tokens
✅ 卖出成功!
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🎉 所有交易已完成!
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
```
**高级选项**:
**Seed 优化的 ATA**:
- 更低的交易手续费
- 推荐给所有用户(默认启用)
- 自动检测标准和 Seed 优化的 ATA
**批量卖出**:
- 支持一次输入多个 Mint 地址
- 用逗号(,)或空格分割地址
- 按输入顺序依次卖出
- 批量卖出时只需确认一次
- 每个代币之间自动间隔 2 秒
- 单个代币失败不影响后续代币
**滑点**:
- 默认: 99% (9900 基点)
- 确保即使在波动市场中也能快速成交
- 通过接受 99% 范围内的任何价格来防止 MEV 三明治攻击
**Token-2022 支持**:
- 自动检测 Token-2022 程序代币
- 无需手动配置
- 适用于标准 SPL 代币和 Token-2022 代币
**重要提示**:
- 此操作一次性卖出**所有**代币
- 交易可能使用多个签名用于 SWQOS(Solana 写入队列优化系统)
- 确认前务必验证代币 mint 地址
- 先在 devnet 上用小额测试
- 大额卖出前检查池子流动性
### 12. Pump.fun 卖出
在 **Pump.fun 内盘**(bonding curve)上卖出代币换原生 SOL。适用于代币仍在 Pump.fun、尚未迁移到 Raydium 的情况;已迁移代币请使用 **PumpSwap 卖出**(第 11 节)。
**用途**:在 bonding curve 上一键卖出 Pump.fun 代币,直接获得 SOL。
**前置条件**:
- 已解锁钱包,且代币在 ATA 中
- 代币须为 Pump.fun bonding curve 代币(mint 属于 Pump.fun 程序)
- 有足够 SOL 支付交易费
**功能**:
- 一次性卖出**全部**代币余额
- 可选 seed 优化 ATA(与 PumpSwap 相同,降低手续费)
- 支持 Token-2022(自动检测)
- 中英双语提示
**步骤**:
1. 运行 `sol-safekey`(或 `./你的bot safekey`)并解锁钱包。
2. 选择 **13**(Pump.fun 卖出)或 **16**(Pump.fun 卖出,无 2FA 确认)。
3. 按提示输入 RPC URL(或使用默认)。
4. 按提示选择是否使用 seed 优化 ATA。
5. 输入代币 **mint 地址**(Pump.fun 代币)。
6. 确认数量并签名,交易发送后输出签名。
**示例(命令行)**:
```bash
./你的bot safekey pumpfun-sell --mint <MINT地址>
```
**重要提示**:
- 仅适用于仍在 Pump.fun bonding curve 上的代币;已迁移代币请用 PumpSwap 卖出。
- 确认前务必核对 mint 地址。
- 尽可能先在 devnet 上小额测试。
## 提示和最佳实践
### 钱包安全
1. **强密码**:
- 最少 16 个字符
- 混合大小写字母、数字、符号
- 使用密码管理器
- 永不重复使用密码
2. **备份策略**:
- 在多个安全位置保存加密的 keystore
- 密码与 keystore 分开存储
- 对于大额资产考虑使用硬件钱包
- 在 devnet 上测试恢复流程
3. **网络安全**:
- 始终先在 devnet 上测试
- 仔细检查接收地址
- 从小额开始
- 在浏览器上验证交易签名
### 会话管理
1. 每个会话**解锁钱包一次**以方便使用
2. 无需重复输入密码,操作更快
3. 钱包仅为当前进程解锁
4. 退出并重启以重新锁定
### 测试工作流
1. 在 devnet 上创建测试钱包
2. 获取 devnet SOL: `solana airdrop 2 <地址> --url devnet`
3. 在 devnet 上测试所有操作
4. 在 devnet 浏览器上验证: https://explorer.solana.com/?cluster=devnet
5. 彻底测试后才使用 mainnet
### 交易手续费
- SOL 转账: 约 0.000005 SOL
- 代币转账: 约 0.00001 SOL
- 包装/解包: 约 0.00001 SOL
- 创建 nonce: 约 0.00144288 SOL(免租金)
### 常见工作流程
**日常交易 Bot**:
1. 使用 `./bot safekey` 启动 bot
2. 选择 `U` 解锁钱包
3. 输入密码一次
4. 退出菜单让 bot 运行
5. Bot 可以签署交易而无需密码
**一次性转账**:
1. 启动 safekey
2. 选择转账操作
3. 提示时输入 keystore 路径和密码
4. 完成交易
5. 退出
**投资组合管理**:
1. 解锁钱包(`U`)
2. 查询余额(`4`)
3. 根据需要执行多个操作
4. 无需重新输入密码
## 故障排除
### "解密 keystore 失败"
**原因**: 密码错误或文件损坏
**解决方案**: 验证密码,尝试备份的 keystore 文件
### "连接被拒绝" / "RPC 错误"
**原因**: 网络问题或 RPC 节点宕机
**解决方案**: 检查网络,尝试不同网络,使用不同 RPC 端点
### "余额不足"
**原因**: SOL 不足以支付交易 + 手续费
**解决方案**:
- 检查余额
- 获取 devnet SOL: `solana airdrop 2 <地址> --url devnet`
- 对于 mainnet: 向账户转入 SOL
### "交易失败"
**原因**: 网络拥堵、无效交易或账户问题
**解决方案**:
- 等待后重试
- 检查接收地址是否有效
- 确保账户有 SPL 转账所需的代币账户
- 验证余额足够支付金额 + 手续费
### "未找到账户"
**原因**: 地址从未收到过 SOL(未初始化)
**解决方案**: 先发送少量 SOL 以初始化
### 终端显示问题
**原因**: 终端不支持 UTF-8 或表情符号
**解决方案**: 使用现代终端模拟器(iTerm2、Windows Terminal 等)
## 高级用法
### 通过 Stdin 脚本化
你可以通过 stdin 自动输入密码用于 bot 部署:
```bash
# 创建启动脚本
**安全提示**: 仅在安全环境中使用。永不硬编码密码。
### 多个钱包
为不同目的创建单独的 keystore:
```bash
# 交易钱包
./bot safekey
# 创建加密 → keystore-trading.json
# 持有钱包
./bot safekey
# 创建加密 → keystore-holding.json
# 使用特定钱包
./bot safekey
# 解锁 → keystore-trading.json
```
### 批量操作
解锁钱包一次后,执行多个操作而无需重新输入密码:
1. 解锁钱包(`U`)
2. 查询余额(`4`)
3. 转账 SOL(`5`)
4. 包装 SOL(`6`)
5. 转账代币(`8`)
6. 所有操作都无需密码提示
## 获取帮助
- **文档**: 查看 [Bot 集成指南](BOT_INTEGRATION_CN.md)
- **示例**: 查看 `examples/bot_example.rs`
- **浏览器**: 在 https://explorer.solana.com 验证交易
- **Solana 文档**: https://docs.solana.com
---
**记住**:
- 始终先在 devnet 上测试
- 保持 keystore 和密码安全
- 在使用 mainnet 前备份所有内容
- 从小额开始
- 仔细验证所有地址