sol-safekey 0.1.7

A powerful command-line tool for secure Solana key management with Triple-Factor 2FA
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
<div align="center">
    <h1>📖 Sol-SafeKey 交互式菜单完整教程</h1>
    <h3><em>所有交互式菜单操作的逐步指南</em></h3>
</div>

---

## 📑 目录

- [🎯 开始使用]#-开始使用
- [📚 逐功能指南]#-逐功能指南
  - [1. 创建明文私钥]#1-创建明文私钥(选项-1)
  - [2. 创建加密私钥(bot)]#2-创建加密私钥bot(选项-2))
  - [3. 解密私钥]#3-解密私钥(选项-3)
  - [U. 解锁钱包]#u-解锁钱包
  - [4. 设置 2FA 认证]#4-设置-2fa-认证
  - [5. 生成三因子钱包]#5-生成三因子钱包
  - [6. 解锁三因子钱包]#6-解锁三因子钱包
  - [7. 查询 SOL 余额]#7-查询-sol-余额
  - [8. 转账 SOL]#8-转账-sol
  - [9. 创建 WSOL ATA]#9-创建-wsol-ata
  - [10. 包装 SOL → WSOL]#10-包装-sol--wsol
  - [11. 解包 WSOL → SOL]#11-解包-wsol--sol
  - [12. 关闭 WSOL ATA]#12-关闭-wsol-ata
  - [13. 转账 SPL 代币]#13-转账-spl-代币
  - [14. 创建 Nonce 账户]#14-创建-nonce-账户
  - [15. Pump.fun 卖出代币]#15-pumpfun-卖出代币
  - [16. PumpSwap 卖出代币]#16-pumpswap-卖出代币
  - [17. Pump.fun 返现]#17-pumpfun-返现(查看与领取)
  - [18. PumpSwap 返现]#18-pumpswap-返现(查看与领取)

---

### 📋 快速操作索引

快速访问所有 18 个交互式菜单操作:

#### 🔑 核心功能(选项 1-3)
- **[1. 创建明文私钥]#1-创建明文私钥(选项-1)** - 生成并保存未加密的 Solana 密钥对
- **[2. 创建加密私钥(bot)]#2-创建加密私钥bot(选项-2)** - 加密现有私钥并保存到 keystore
- **[3. 解密私钥]#3-解密私钥(选项-3)** - 解密 keystore 并显示私钥

#### 🔒 钱包管理(选项 U)
- **[U. 解锁钱包]#u-解锁钱包** - 解锁钱包以进行 Solana 操作

#### 🛡️ 高级安全功能(选项 4-6)
- **[4. 设置 2FA 认证]#4-设置-2fa-认证** - 配置双因素认证
- **[5. 生成三因子钱包]#5-生成三因子钱包** - 创建 3FA 钱包(硬件 + 密码 + 安全问题 + 2FA)
- **[6. 解锁三因子钱包]#6-解锁三因子钱包** - 解密 3FA 加密钱包

#### 💰 Solana 链上操作(选项 7-18)
- **[7. 查询 SOL 余额]#7-查询-sol-余额** - 查询钱包 SOL 余额
- **[8. 转账 SOL]#8-转账-sol** - 向其他地址发送 SOL
- **[9. 创建 WSOL ATA]#9-创建-wsol-ata** - 创建包装 SOL 关联代币账户
- **[10. 包装 SOL → WSOL]#10-包装-sol--wsol** - 将 SOL 转换为包装 SOL
- **[11. 解包 WSOL → SOL]#11-解包-wsol--sol** - 将包装 SOL 转换回 SOL
- **[12. 关闭 WSOL ATA]#12-关闭-wsol-ata** - 关闭 WSOL ATA 并将剩余 WSOL 转换为 SOL
- **[13. 转账 SPL 代币]#13-转账-spl-代币** - 向其他地址发送 SPL 代币
- **[14. 创建 Nonce 账户]#14-创建-nonce-账户** - 创建持久化 nonce 以防止交易重放
- **[15. Pump.fun 卖出代币]#15-pumpfun-卖出代币** - 在 Pump.fun DEX 上卖出代币(内盘)
- **[16. PumpSwap 卖出代币]#16-pumpswap-卖出代币** - 在 PumpSwap DEX 上卖出代币
- **[17. Pump.fun 返现]#17-pumpfun-返现(查看与领取))** - 查看并领取 pump.fun 返现(原生 SOL)
- **[18. PumpSwap 返现](#18-pumpswap-返现(查看与领取))** - 查看并领取 PumpSwap 返现(WSOL)

---

### 🎯 开始使用

#### 步骤 1:启动交互式菜单

```bash
sol-safekey start
```

你将看到语言选择界面。选择你偏好的语言:

**英文**:输入 `2`
**中文**:输入 `1`

#### 步骤 2:选择一个操作

选择语言后,你将看到上面显示的主菜单。输入与你想执行的操作对应的数字。

**重要提示**:如果你还没有创建钱包,你需要:
- **解锁现有钱包**(选项 `U`)
- **创建新钱包**(选项 `1`  `2`)

---

### 📚 逐功能指南

#### 1. 创建明文私钥(选项 1)

**用途**:生成新的 Solana 密钥对并保存到文件(未加密)

**使用场景**:
- 开发和测试
- 与团队成员共享密钥
- 快速生成测试钱包

**步骤**:
1. 从主菜单选择 `1`
2. 选择保存文件名(默认:`keypair.json`)
3. 系统生成新的 Solana 密钥对
4. 私钥被保存到文件(未加密)

**示例输出**:
```
🔓 创建明文私钥

输入文件名 [keypair.json]: my_keypair.json

正在生成新的 Solana 密钥对...
 密钥对生成成功!

公钥: 7xKm...9xW3

📝 重要提示:
    此文件包含你的私钥(明文)
    仅用于开发和测试
    请勿与任何人共享此文件
    生产环境请使用加密选项(选项 2)
```

---

#### 2. 创建加密私钥(bot(选项 2)

**用途**:加密现有私钥并保存到安全 keystore 文件

**使用场景**:
- 生产钱包存储
- 安全备份现有密钥
- 为 bot 集成准备钱包

**步骤**:
1. 从主菜单选择 `2`
2. 粘贴或输入你的私钥(base58 格式)
3. 输入密码(10-20 字符,必须包含大写、小写、数字、特殊字符中的至少 3 种)
4. 再次输入密码确认
5. 选择文件名(默认:`keystore.json`6. 系统加密并保存到文件

**密码要求**:
- 长度:10-20 字符
- 必须包含至少 3 种:大写、小写、数字、特殊字符
- 示例:`MySecureP@ssw0rd!``StrongKey#2025``abc123XYZ!`

**示例输出**:
```
🔐 创建加密私钥(bot)

输入或粘贴你的私钥(base58): <在此处粘贴你的密钥>

请设置密码(10-20 字符,必须包含大写、小写、数字、特殊字符中的至少 3 种):
输入密码: ********
再次输入密码: ********

输入保存文件名 [keystore.json]: my_keystore.json

正在加密并保存...
✅ 密钥已加密并保存到: my_keystore.json

📝 重要提示:
   • 解密时需要密码 - 请勿丢失!
   • keystore.json 包含 AES-256 加密的私钥
   • 建议将 keystore.json 备份到多个安全位置
```

---

#### 3. 解密私钥(选项 3)

**用途**:加载加密的 keystore 文件并解密以显示私钥

**使用场景**:
- 查看私钥(需要时)
- 导出钱包到不同格式
- 验证钱包内容

**步骤**:
1. 从主菜单选择 `3`
2. 输入 keystore 文件名(默认:`keystore.json`3. 输入你的密码
4. 系统解密并显示私钥

**示例输出**:
```
🔓 解密私钥

输入 keystore 文件名 [keystore.json]: my_keystore.json

输入密码: ********

✅ 解密成功!

公钥: 7xKm...9xW3
私钥: <base58-编码的密钥>

⚠️  安全警告:
   • 私钥现在以明文显示
   • 请让此屏幕远离窥视
   • 仅在必要时使用解密后的密钥
```

---

### 🔒 钱包管理

#### U. 解锁钱包

**用途**:解锁钱包以用于 Solana 操作(选项 7-18)

**步骤**:
1. 从主菜单选择 `U`
2. 输入 keystore 文件名(默认:`keystore.json`3. 输入你的密码
4. 钱包状态变为"已解锁"并保存在会话中

**钱包状态指示器**:

钱包状态指示器显示:
- **已解锁**:钱包已准备好进行操作
- **已锁定**:会话中未加载钱包

**示例输出**:
```
🔓 解锁钱包

输入 keystore 文件名 [keystore.json]:

输入密码: ********

✅ 钱包解锁成功!

📍 当前钱包: 7xKm...9xW3
🔒 钱包状态: 已解锁

你现在可以执行 Solana 操作(选项 7-18)
```

---

### 🛠️ Solana 链上操作

所有 Solana 操作(选项 7-18)都需要**已解锁的钱包**。请先解锁你的钱包!

#### 7. 查询 SOL 余额

**用途**:查询你钱包的 SOL 余额

**步骤**:
1. 确保钱包已解锁(状态:已解锁)
2. 从主菜单选择 `7`
3. 输入 RPC 地址(按回车使用默认:mainnet-beta)
4. 系统查询并显示你的余额

**示例输出**:
```
💰 查询 SOL 余额

输入 RPC 地址 [https://api.mainnet-beta.solana.com]:

正在查询余额...
✅ 余额查询成功!

📍 钱包地址: 7xKm...9xW3
💰 SOL 余额: 1.234567890 SOL (1,234,567,890 lamports)

浏览器: https://solscan.io/address/7xKm...9xW3
```

---

#### 8. 转账 SOL

**用途**:向其他 Solana 地址发送 SOL

**步骤**:
1. 确保钱包已解锁(状态:已解锁)
2. 从主菜单选择 `8`
3. 输入接收地址
4. 输入 SOL 数量
5. 输入 RPC 地址(按回车使用默认)
6. 审查并确认交易
7. 系统发送交易

**示例输出**:
```
💸 转账 SOL

输入接收地址: 5xKm...2xW3

输入 SOL 数量: 0.1

输入 RPC 地址 [https://api.mainnet-beta.solana.com]:

确认交易?(yes/no): yes

正在发送交易...
✅ 交易发送成功!

签名: 5xKm...9xW3
浏览器: https://solscan.io/tx/5xKm...9xW3
```

---

#### 9. 创建 WSOL ATA

**用途**:创建包装 SOL(WSOL)关联代币账户

**步骤**:
1. 确保钱包已解锁(状态:已解锁)
2. 从主菜单选择 `9`
3. 输入 RPC 地址(按回车使用默认)
4. 系统创建 WSOL ATA 账户

**示例输出**:
```
📝 创建 WSOL ATA

输入 RPC 地址 [https://api.mainnet-beta.solana.com]:

正在创建 WSOL ATA...
✅ WSOL ATA 创建成功!

📍 ATA 地址: 7xKm...9xW3
📊 代币铸造地址: So11111111111111111111111111111111111111111112

签名: 5xKm...9xW3
浏览器: https://solscan.io/tx/5xKm...9xW3
```

---

#### 10. 包装 SOL → WSOL

**用途**:将 SOL 转换为 WSOL(包装的 SOL)

**步骤**:
1. 确保钱包已解锁(状态:已解锁)
2. 从主菜单选择 `10`
3. 输入要包装的 SOL 数量
4. 输入 RPC 地址(按回车使用默认)
5. 审查并确认交易
6. 系统将 SOL 包装为 WSOL

**示例输出**:
```
📦 包装 SOL → WSOL

输入 SOL 数量: 0.5

输入 RPC 地址 [https://api.mainnet-beta.solana.com]:

确认交易?(yes/no): yes

正在包装 SOL 为 WSOL...
✅ 包装成功!

签名: 5xKm...9xW3
浏览器: https://solscan.io/tx/5xKm...9xW3

✅ WSOL 余额更新: 0.5 WSOL
```

---

#### 11. 解包 WSOL → SOL

**用途**:将 WSOL 转换回 SOL

**步骤**:
1. 确保钱包已解锁(状态:已解锁)
2. 从主菜单选择 `11`
3. 输入要解包的 WSOL 数量
4. 输入 RPC 地址(按回车使用默认)
5. 审查并确认交易
6. 系统将 WSOL 解包为 SOL

**示例输出**:
```
📤 解包 WSOL → SOL

输入 WSOL 数量: 0.5

输入 RPC 地址 [https://api.mainnet-beta.solana.com]:

确认交易?(yes/no): yes

正在解包 WSOL 为 SOL...
✅ 解包成功!

签名: 5xKm...9xW3
浏览器: https://solscan.io/tx/5xKm...9xW3

✅ SOL 余额更新!
```

---

#### 12. 关闭 WSOL ATA

**用途**:关闭 WSOL ATA 账户(将剩余 WSOL 转换为 SOL)

**步骤**:
1. 确保钱包已解锁(状态:已解锁)
2. 从主菜单选择 `12`
3. 输入 RPC 地址(按回车使用默认)
4. 系统关闭 ATA 账户

**示例输出**:
```
🗑️ 关闭 WSOL ATA

输入 RPC 地址 [https://api.mainnet-beta.solana.com]:

正在关闭 WSOL ATA...
✅ WSOL ATA 关闭成功!

剩余 WSOL: 0.5 WSOL → 0.5 SOL
签名: 5xKm...9xW3
浏览器: https://solscan.io/tx/5xKm...9xW3
```

---

#### 13. 转账 SPL 代币

**用途**:向其他 Solana 地址发送 SPL 代币

**步骤**:
1. 确保钱包已解锁(状态:已解锁)
2. 从主菜单选择 `13`
3. 输入代币铸造地址
4. 输入接收地址
5. 输入数量
6. 输入 RPC 地址(按回车使用默认)
7. 审查并确认交易
8. 系统发送代币

**示例输出**:
```
💎 转账 SPL 代币

输入代币铸造地址: <代币铸造地址>

输入接收地址: 5xKm...2xW3

输入数量: 100

输入 RPC 地址 [https://api.mainnet-beta.solana.com]:

确认交易?(yes/no): yes

正在发送 SPL 代币...
✅ 代币转账成功!

签名: 5xKm...9xW3
浏览器: https://solscan.io/tx/5xKm...9xW3
```

---

#### 14. 创建 Nonce 账户

**用途**:创建持久化 nonce 账户以防止交易重放攻击

**使用场景**:
- 批量交易处理
- 防止交易重放攻击
- 确保交易排序

**步骤**:
1. 确保钱包已解锁(状态:已解锁)
2. 从主菜单选择 `14`
3. 输入 RPC 地址(按回车使用默认)
4. 系统创建 nonce 账户

**示例输出**:
```
🔑 创建 Nonce 账户

输入 RPC 地址 [https://api.mainnet-beta.solana.com]:

正在创建 nonce 账户...
✅ Nonce 账户创建并初始化成功!

📍 Nonce 地址: 5xKm...7xW3

💡 保存此 nonce 账户地址以供将来使用!
签名: 5xKm...9xW3
浏览器: https://solscan.io/tx/5xKm...9xW3
```

---

### 🏪 代币操作

#### 15. Pump.fun 卖出代币

**用途**:在 Pump.fun DEX 上卖出代币

**使用场景**:
- 在 Pump.fun 平台上交易代币
- 自动化卖出策略
- 快速流动性退出

**步骤**:
1. 确保钱包已解锁(状态:已解锁)
2. 从主菜单选择 `15`
3. 输入代币铸造地址
4. 配置卖出选项:
   - 滑点(基点,默认:9900)
   - Seed 优化(默认:是)
5. 确认交易
6. 系统卖出所有代币余额

**示例输出**:
```
🎪 Pump.fun 卖出代币

输入代币铸造地址: <代币铸造地址>

输入滑点(基点,默认 9900): [Enter]

使用 seed 优化?(yes/no,默认 yes) [Enter]

卖出所有代币...
✅ 卖出成功!

签名: 5xKm...9xW3
浏览器: https://solscan.io/tx/5xKm...9xW3
```

---

#### 16. PumpSwap 卖出代币

**用途**:在 PumpSwap DEX 上卖出代币

**使用场景**:
- 在 PumpSwap 平台上交易代币
- 访问多个流动性池
- 高级交易功能

**步骤**:
1. 确保钱包已解锁(状态:已解锁)
2. 从主菜单选择 `16`
3. 输入代币铸造地址
4. 配置卖出选项
5. 确认交易
6. 系统卖出代币

**示例输出**:
```
🔄 PumpSwap 卖出代币

输入代币铸造地址: <代币铸造地址>

输入滑点(基点,默认 9900): [Enter]

卖出代币...
✅ 卖出成功!

签名: 5xKm...9xW3
浏览器: https://solscan.io/tx/5xKm...9xW3
```

---

#### 17. Pump.fun 返现(查看与领取)

**用途**:查看和领取 pump.fun 返现(原生 SOL)

**使用场景**:
- 查看可用的返现余额
- 领取已赚取的返现

**步骤**:
1. 确保钱包已解锁(状态:已解锁)
2. 从主菜单选择 `17`
3. 系统查询并领取可用返现

**示例输出**:
```
💰 Pump.fun 返现

正在查询返现状态...
✅ 可用返现: 0.123 SOL

领取返现...
✅ 返现领取成功!

签名: 5xKm...9xW3
浏览器: https://solscan.io/tx/5xKm...9xW3
```

---

#### 18. PumpSwap 返现(查看与领取)

**用途**:查看和领取 PumpSwap 返现(WSOL)

**使用场景**:
- 查看可用的 WSOL 返现余额
- 领取已赚取的 WSOL 返现

**步骤**:
1. 确保钱包已解锁(状态:已解锁)
2. 从主菜单选择 `18`
3. 系统查询并领取可用返现

**示例输出**:
```
💰 PumpSwap 返现

正在查询返现状态...
✅ 可用返现: 0.05 WSOL

领取返现...
✅ 返现领取成功!

签名: 5xKm...9xW3
浏览器: https://solscan.io/tx/5xKm...9xW3
```

---

### 🔐 高级安全功能

#### 4. 设置 2FA 认证

**用途**:为钱包配置双重因素认证以增强安全性

**使用场景**:
- 为钱包添加额外的安全层
- 防止未授权访问
- 三因子钱包的必需功能

**步骤**:
1. 从主菜单选择 `4`
2. 系统收集硬件指纹
3. 设置主密码
4. 设置安全问题
5. 配置 TOTP(基于时间的一次性密码)

**要求**:
- 硬件指纹收集(设备相关)
- TOTP 认证器应用(Google Authenticator、Authy 等)
- 主密码(10-20 字符,3+ 字符类型)
- 安全问题(从预定义选项中选择)

**输出**:
- ✅ 硬件指纹(设备绑定)
- ✅ 主密码加密
- ✅ 安全问题验证
- ✅ TOTP 配置(6 位代码,30 秒轮换)

---

#### 5. 生成三因子钱包

**用途**:生成三因素认证钱包(硬件 + 密码 + 安全问题 + 2FA)

**安全特性**:
- ✅ 硬件指纹(设备绑定)
- ✅ 主密码加密
- ✅ 安全问题验证
- ✅ TOTP 动态代码(6 位,30 秒轮换)
- ✅ Durable nonce 账户支持

**使用场景**:
- 生产环境的最高安全性
- 多设备支持(使用 TOTP)
- 多种身份验证因素恢复

**步骤**:
1. 从主菜单选择 `5`
2. 系统收集硬件指纹
3. 设置主密码
4. 回答安全问题
5. 配置 TOTP 认证器
6. 系统生成加密钱包文件

**输出**:
- 加密钱包文件(三因素)
- 跨设备 keystore 备份
- 恢复说明

---

#### 6. 解锁三因子钱包

**用途**:解密三因素加密钱包

**要求**:
- 原始设备(用于硬件指纹)
- 主密码
- 安全问题答案
- 当前 TOTP 代码(6 位,每 30 秒变化)

**步骤**:
1. 从主菜单选择 `6`
2. 输入钱包文件路径(从选项 5 生成)
3. 输入主密码
4. 回答安全问题
5. 输入当前 TOTP 代码(6 位,30 秒内有效)
6. 系统解密并显示钱包

**安全性**:所有三种因素必须正确才能解锁。

---