Qtum开发者教程系列——加密,备份和恢复 Qtum 钱包
mark7914
发表于 2022-11-22 13:54:19
2387
0
0
( u3 r! D4 t0 }7 g( K8 y
在继续之前,我想说明以下内容:: w$ b) ~7 N8 ~) ?
强烈建议先备份钱包,之后再加密(以防万一)) }" ?0 j0 k# s7 }& k
加密钱包会改变HD钱包的主私钥(详见下文)确保在加密后不使用旧钱包。
如果要复制或移动钱包文件(例如 wallet.dat),请务必先关闭钱包/节点程序(例如qtum-qt)。
在加密钱包时,建议使用 -noconnect 选项启动钱包/节点程序(例如qtum-qt)(详见下文)。5 l2 q0 s$ ?1 j4 f
如果已经加密了钱包,必须要解锁(至少“只是为了 staking”)才能 stake QTUM 代币。4 r; Z" F0 @5 A, I* G
创造一个完美的(100%保证)安全系统几乎是不可能/不切实际的。因此,执行与安全相关的操作(例如输入密码等)总会存在一些风险。6 i% n( [# ? `; H! _* |5 J
和以前一样,本文作如下假设:
/ Y* [: N' I# g: v: e2 v
你正在使用 macOS / OSX 或 Linux(例如 x86_64 / amd64 Ubuntu 16.04)。8 i( |2 F# R }6 b) E" \5 B+ t
你熟悉使用 Unix shell(例如 bash),Unix 命令和工具(如 tar).windows 用户需要找一下等价的命令(在本文评论里问–或加入 Qtum 社区的 Slack或Reddit)
本文用的是 qtum-qt GUI 钱包,但你也可以用qtumd钱包(使用qtum-cli命令行工具)。7 [4 M7 w$ q! V* o ^
) R& ^' ?8 J9 j2 n" `3 I
安装和启动Qtum钱包6 ?& G6 {, ^9 b. b3 Z" n8 p) {
2 ` d; b8 i: w( N
按我之前发布的教程安装并启动 Qtum GUI 钱包。务必下载最新的 Qtum 钱包(例如本文撰写时是 Skynet Release v1.2)。
注意:没必要下载 Qtum 区块链,因此建议指定以下命令行参数:; L( O f) u. G& h7 a0 p4 a1 A
1 B! [# `, U* H. R, D- E; L J
$ bin/qtum-qt -noconnect) f4 O* x) I. n9 t
6 M( |7 q- P. h: b: l
使用 -noconnect 将阻止 qtum-qt(或qtumd)钱包/节点下载区块链。本文中,我们只在钱包上操作。
即使使用 -noconnect 命令行,钱包也会显示警告,似乎还是要连到 Qtum 网络 - 但实际上并非如此(这个小麻烦作为问题#315的一部分得到修复)。 你可以解除/隐藏警告。" R: A/ z& h7 a& [
回想一下,钱包文件(默认为 wallet.dat)安装目录(默认)跟操作系统有关:
Linux: ~/.qtum
macOS/OSX: ~/Library/Application Support/Qtum
Windows: %APPDATA%\Qtum
1 X" B1 q" L2 u3 ]) q
确保你可以找到 wallet.dat 文件。之后我们处理这个文件。+ R$ v! a% M: Q0 x
调试控制台(Debug Console)" E/ Z, k m( X3 [5 z
; B- U0 O1 C$ R8 a: N* R0 i
qtum-qt GUI 钱包包含一个内置的“调试”控制台,可以用控制台与钱包进行交互(比 GUI 功能多)。使用Debug Console 或多或少等同于使用 bin/qtum-cli 工具(即进行 RPC 调用)。) q- h& Z3 i$ S) v% M
9 ~2 [- ~9 P o2 G( b0 R; }
要访问调试控制台,选择“帮助”菜单栏下的“调试窗口”:
7 B% X! f5 _- h
- x% T! h9 ]9 E: Z* ~
! Y) Q+ d4 b2 [5 D
接下来,选择“控制台(Console)”
在提示符处(在底部),可以输入 getwalletinfo 等命令:7 Q8 y) k( f* x
' M3 t, @5 G1 `
按Enter / Return后,会有结果:" X2 S# V- @3 } S
/ z, a( `: {+ r
可以输入 help 获取所有可用命令的列表。
HD 钱包
除非(奇怪地)指定其他方式(使用特殊的命令行选项),否则 Qtum 钱包类型就是HD 钱包。简单来说,这意味着钱包创建的地址是预先确定的。这很有用,因为每次分配新的 Qtum 地址时都不需要备份钱包。默认情况下,钱包预先创建 100 个地址,并根据需要添加更多地址。
0 H$ I% l: K$ [' j8 `9 s) E
正如注意事项部分所述,如果加密钱包,它也会更改主私钥 - 这意味着未来(预先确定的)地址(除加密前钱包中的地址)将会改变。
钱包地址转储(dump)到文件中
查看预创建的 HD 钱包地址的一种(可选)不安全方式是将钱包中的密钥和地址转储(dump)到文件中。钱包转储文件将包含所有(私)钥及其关联的 Qtum 地址 - 因此,这不推荐在打算保持安全的钱包上执行。) P, E& G6 s/ }( x4 w
; J( @7 ], k o; [: v, [
可能你想自定义 -datadir= 命令行参数(而不是 -noconnect)来实现上面这个操作。这会创建一个新钱包(即 wallet.dat 文件)和其他文件、目录等到你自定义的目录下。实现这个操作后,请删除这个临时文件夹。 E/ i: z I% B6 r" a F
* G. [) o6 K; C/ q' p) e& {
用调试控制台(前面介绍过)输入:2 Y/ x* V& @$ }2 b8 P, l
> dumpwallet /tmp/wallet_dump.txt
) S* K5 \6 F6 i; G& q- q5 ^2 B. i: `
注意:将 /tmp/wallet_dump.txt(上面)替换为你喜欢的目录/文件名。
2 M' {/ s7 y. L g
随便打开 /tmp/wallet_dump.txt。可以看到:5 s% ?4 O( D- b5 N* E/ W
) N( _0 k" c9 x l
# Wallet dump created by Qtum v0.14.2.0-797c365-dirty8 c g* E+ l) z+ p, H
# * Created on 2017-09-04T22:01:27Z
# * Best block at time of backup was 16752 (9d57d56217fff0ba9fe948189529b6b05eab9634b511b96fad7665f2a6685a83),
# mined on 2017-09-04T22:00:32Z
( j7 A3 x" V" N: I
# extended private masterkey: xprv9s21ZrQH143K32GwedMSgRTR4dFQeHX27y8QpyzdoUv58e9n4MfJiEwyAvJc974i48GGJMqrhA2tPQyYyr7FrUnh7vwUN3wUo2bUFCuj4w2 c l) h8 c$ C
L1Pu11NpYqNcozCYFpojbAff3sCMRoubgSJHN6S8Vc3BD8qaeug5 2017-09-04T21:55:04Z reserve=1 # addr=QLf8eTZwSMEsud9P1gBWUb4HM6u9asTH1o hdkeypath=m/0'/0'/9'% V8 E+ l. @2 K5 F6 I& y- S
KwwnFgfhdNEm6ZeNZpf5Q77oBymcT6hgDY9DNaHF3xbM5PdLUQwP 2017-09-04T21:55:04Z label= # addr=QM4SUqLkzoMM5TStmNeWQU18wbqzbNtUDo hdkeypath=m/0'/0'/0'
L5DbkJaPBDMiPApP43fzaHZEdZ1GcQcgwbWJMyygBcf2MsKmSS3Q 2017-09-04T21:55:04Z reserve=1 # addr=QMRdFtfAJ52hC5pL6p1xi6EUJ94C6aYSD2 hdkeypath=m/0'/0'/3'
...
& Z4 o1 Z& G! G. ]
L48dP3kLACS71g8czia14iJA5beepyYLBWpXgasgfHWbc8pAZZ6y 2017-09-04T21:55:04Z hdmaster=1 # addr=QaXBqRoPcFGfa3cuqYJ6nvAstZioKt2yBx hdkeypath=m
...' ]7 D+ q7 g! q" `+ j, u- {
KyeTUmMrMezBLkTeMtjuExUxQ4Sb6KVaznCdNwaCmkwG3qSUrqsf 2017-09-04T21:55:10Z reserve=1 # addr=QZFZfsfim7os3349ydRC7F1FBqCQvmjLic hdkeypath=m/0'/0'/97'
KxXbhnbzK7Y9SrAoL196NXunUzCBT7arobxadA5UMFLEW9bQS6DQ 2017-09-04T21:55:10Z reserve=1 # addr=Qdh9sZQDd3tqT2emHsvh5Exhgf527iLG2v hdkeypath=m/0'/0'/95'# \9 B4 V3 y- R: z$ L. E
L1g2UcRTm3JyV7DRjqpKGkRbGBhdhgqVZ9GFdRnvRcQBgWt26o4q 2017-09-04T21:55:10Z reserve=1 # addr=QeV4zHE6Vb7sFYhs26R1XNMokQSr3EKpyk hdkeypath=m/0'/0'/96'
L3Sh2JsPZw8dhVFWLCh1rupSPGwtjazUhsxFhfskRRCk4AzvEz8G 2017-09-04T21:55:10Z reserve=1 # addr=QiBpoHSfGwJbtJqRsNFTua7hGaMv8zGbGe hdkeypath=m/0'/0'/100', a' A5 @2 F3 `# J [5 d- {
! ?5 q- \0 U* `$ T" Z+ L# X3 B
# End of dump* H0 `( d$ V3 @
大概有创建了 101 个地址(即 m/0’/0’/0’ 到 m/0’/0’/100’)再加上hdmaster。: o" s3 \) K9 O) \
F0 c! L( W/ H7 E ]
备份钱包
$ i4 T5 f! l' T/ d% [8 b2 x
希望你找到你的 wallet.dat 文件了(参见前面的部分,找到它的位置)。有两个备份钱包的选择:
将wallet.dat文件复制到安全位置。! M; T. O+ X. }. M. D J" i# J7 I
在调试控制台中运行 backupwallet 命令,将钱包文件写入安全位置。
选第一项的话,请确保 Qtum 钱包/节点程序(例如 qtum-qt)未运行。
选第二项的话,只需在 Debug Console 提示符下输入 backupwallet,获取有关如何使用该命令的帮助(即,它需要 1个 参数来指定目录或带有文件名的路径)。4 Z' P6 k8 A+ X7 ?3 g! V6 H2 U
: f( n7 I. A$ y: F! C: Q- E
确保将钱包备份文件放在安全的位置(例如安全的U盘里等)( m$ K" ^. G% w. u; k
7 {& |# k+ J2 m' G5 A
加密钱包9 j. T1 [- B0 U% Y1 z0 G
强烈建议在加密钱包之前先备份好钱包。
要加密钱包,请选择“设置”菜单栏下的“加密钱包…”选项:
. t( [2 K9 x1 [# ?/ K8 w% x% F
接着,确保输入一个安全密码用来解锁钱包。
0 ^+ P1 F/ a! @! s" c+ W
" Q+ o2 A. M5 ?
& G2 N1 v& C: u2 q k" p# D* i
阅读并接受警告(是的,请记住密码):
加密完成后,收到另一条消息:* C, E- y6 @0 e: u
7 @+ \4 b8 l* H: {, f; J8 `1 K
, m M1 q2 f4 u( ^" n8 O
3 |6 y1 x" o- P$ `' B% k
单击“确定”,然后关闭钱包/节点程序(如qtum-qt)。* F6 P4 ^% x8 M+ E, W9 e, K3 v
关闭钱包/节点程序后,建议用前面提到的第一项备份钱包(即复制加密的 wallet.dat 文件),然后重启 qtum-qt。* S4 n! b& k2 d* ~( M; p
解锁钱包
8 `( F$ N Y+ Q- @4 ^% j0 A6 c! b
重启加密的 Qtum 钱包后,你会在右下角看到“锁定”图标:
+ E, z! T, U4 r% w2 H4 i9 U+ U
5 [0 x4 p1 {- r* j8 R8 s" k: q
8 C8 }' v+ `6 H, E n
这意味着(加密)钱包目前已被锁定。你不能用锁定的钱包 staking QTUM 代币。' F2 |) Z# P6 E6 k/ D3 g9 a
7 V9 r4 C% I/ {. a' {9 H
注意:启动后的一段时间内,钱包可能看起来没有响应。这是正常的。
6 J( {+ V5 d: v$ y8 R2 _
要解锁钱包,请选择“设置”菜单栏下的“解锁钱包…”选项:
4 |$ q/ A- R- p+ r
然后,可以看到欢迎页面:
q1 b9 }! m! u D% H2 N
5 R6 b8 ]) L, X$ E% V3 z/ f4 r
. ~) P/ n5 R0 C* R# g4 |7 W
输入加密钱包时设置的密码。还可以选择是否只为 staking 而解锁钱包。如果选择这个选项,则你(或任何访问正在运行的钱包/节点的人)将无法从钱包中转移代币,或执行任何需要访问钱包的操作 - 例如将钱包转储(dump)到文件(在调试控制台中使用 dumpwallet 命令)。 不过,backupwallet 命令仍然有效。7 d0 w" j; r6 C0 N
如果仅为 staking 解锁,你会注意到右下角的图标如下所示:
9 |1 s! _/ C$ M$ ]
如果不是仅为 staking 解锁,你会看到一个略有不同的图标(和悬停消息):7 O$ @9 P/ {2 r/ K4 F
如果你刚刚在第一次加密钱包后就解锁钱包,我建议你再进行一次备份。# t9 g3 c2 R" r) O. d# w% d$ F' `
锁定钱包
要再次锁定钱包(例如,如果想让钱包/节点保持运行而不staking 代币),只需选择“设置”菜单栏下的“锁定钱包…”选项:
. D, R# L& k2 ]8 W. g
恢复钱包' g" |7 i! i2 F; `
# G4 a5 V6 h5 P; h
如果你完全丢失了正在运行的钱包(以及区块链区块数据),可以通过将(先前)备份的钱包文件复制到(跟操作系统有关)数据目录中,然后重启 Qtum 钱包,轻松恢复钱包/node程序(例如qtum-qt)。
+ l' [& p# `* A$ k) R( H: z
如果数据目录不见了(比如你换了台新电脑),最简单的是:
使用 -noconnect 命令行参数启动 Qtum 钱包/节点程序,以便重新创建数据目录。
钱包/节点程序运行后(大约10秒左右),再次关闭它。7 N8 n" i" f4 l# A* M
; f% r" W: }# Z: g4 I& J
将(跟操作系统有关的)数据目录中创建的 wallet.dat 文件替换为最新的钱包(即 wallet.dat 文件)备份文件。# h$ f d3 X) |3 s$ {- P7 g
不使用 -noconnect 命令行参数重启 Qtum 钱包/节点程序。$ r4 r5 g0 s6 c& [! x
8 j" G7 ^, E7 h' h
上面重要的一步是确保钱包文件(即 wallet.dat 文件)在正确的(跟操作系统有关)目录。0 s- |! @: `) g% x7 P
注意:这不是Qtum(Quantum)团队的官方文章。我只是一个粉丝。
成为第一个吐槽的人



