Qtum开发者教程系列——加密,备份和恢复 Qtum 钱包
mark7914
发表于 2022-11-22 13:54:19
2381
0
0
6 ^' M. r" S6 b/ w* Z
在继续之前,我想说明以下内容:
强烈建议先备份钱包,之后再加密(以防万一)+ H0 P, e. Z, L c; n/ C* Z7 X5 h3 w
加密钱包会改变HD钱包的主私钥(详见下文)确保在加密后不使用旧钱包。 H3 d, J. H: W/ Z& }4 N
如果要复制或移动钱包文件(例如 wallet.dat),请务必先关闭钱包/节点程序(例如qtum-qt)。, j9 `8 m- V! B
在加密钱包时,建议使用 -noconnect 选项启动钱包/节点程序(例如qtum-qt)(详见下文)。& x, |4 P( O0 i$ Q
如果已经加密了钱包,必须要解锁(至少“只是为了 staking”)才能 stake QTUM 代币。" T0 U$ B0 W% g& L' @ ~+ [/ T' H
创造一个完美的(100%保证)安全系统几乎是不可能/不切实际的。因此,执行与安全相关的操作(例如输入密码等)总会存在一些风险。
和以前一样,本文作如下假设:
6 |/ e+ `$ r/ z3 E0 { g0 w
你正在使用 macOS / OSX 或 Linux(例如 x86_64 / amd64 Ubuntu 16.04)。
! V8 S" h' t( w& ?5 f- n5 F! s4 v
你熟悉使用 Unix shell(例如 bash),Unix 命令和工具(如 tar).windows 用户需要找一下等价的命令(在本文评论里问–或加入 Qtum 社区的 Slack或Reddit)
本文用的是 qtum-qt GUI 钱包,但你也可以用qtumd钱包(使用qtum-cli命令行工具)。 O* S: Z7 j8 {
安装和启动Qtum钱包( E- D7 m: h: m/ D: }
+ v0 q. @' [6 ]& ~) m
按我之前发布的教程安装并启动 Qtum GUI 钱包。务必下载最新的 Qtum 钱包(例如本文撰写时是 Skynet Release v1.2)。
注意:没必要下载 Qtum 区块链,因此建议指定以下命令行参数:
" t* }$ X0 ?3 q8 L( q& {
$ bin/qtum-qt -noconnect4 r( G+ P4 V' t0 ~
1 D. v: k4 h' b5 W# i0 E0 S B
使用 -noconnect 将阻止 qtum-qt(或qtumd)钱包/节点下载区块链。本文中,我们只在钱包上操作。
即使使用 -noconnect 命令行,钱包也会显示警告,似乎还是要连到 Qtum 网络 - 但实际上并非如此(这个小麻烦作为问题#315的一部分得到修复)。 你可以解除/隐藏警告。
7 M% i/ b7 p0 i2 q/ H
回想一下,钱包文件(默认为 wallet.dat)安装目录(默认)跟操作系统有关:$ T$ m/ N3 P( X1 w# Q8 J& c# V( ?
& _3 {6 V7 G8 v- H6 b; \* ~
Linux: ~/.qtum% |9 U* {# G8 U! A& o2 ?/ K* x1 Q
macOS/OSX: ~/Library/Application Support/Qtum
Windows: %APPDATA%\Qtum- L5 N3 b* j+ I) A
' l+ w2 o9 z- N# x
确保你可以找到 wallet.dat 文件。之后我们处理这个文件。
调试控制台(Debug Console)
* v0 A6 P" H; t: N$ Z
qtum-qt GUI 钱包包含一个内置的“调试”控制台,可以用控制台与钱包进行交互(比 GUI 功能多)。使用Debug Console 或多或少等同于使用 bin/qtum-cli 工具(即进行 RPC 调用)。6 E# Q( m5 _4 C4 M" E' R$ }
要访问调试控制台,选择“帮助”菜单栏下的“调试窗口”:
, P- W/ n" b. H5 }
接下来,选择“控制台(Console)” {9 ]9 {6 W/ e# h
" ]9 X% g6 Z3 X9 x' T8 ?
在提示符处(在底部),可以输入 getwalletinfo 等命令:: D4 z/ g& H' M6 H
1 i* o+ L) w1 A A8 v- y- a
按Enter / Return后,会有结果:3 B: v% u1 X" w: w* ~6 |
3 Z1 a2 t; h6 x' ?9 `% ?
: W" y; C3 L7 E5 `' i0 y
可以输入 help 获取所有可用命令的列表。8 ~& l+ r3 C5 K# ]1 [8 D
7 m4 k* ?+ z; B/ D5 g
HD 钱包; b* Q+ y. {7 l! C6 h7 S
除非(奇怪地)指定其他方式(使用特殊的命令行选项),否则 Qtum 钱包类型就是HD 钱包。简单来说,这意味着钱包创建的地址是预先确定的。这很有用,因为每次分配新的 Qtum 地址时都不需要备份钱包。默认情况下,钱包预先创建 100 个地址,并根据需要添加更多地址。
正如注意事项部分所述,如果加密钱包,它也会更改主私钥 - 这意味着未来(预先确定的)地址(除加密前钱包中的地址)将会改变。' l* g0 r% `0 P- {
钱包地址转储(dump)到文件中9 j& B6 r8 L* B) S# Q0 f7 l. Q
查看预创建的 HD 钱包地址的一种(可选)不安全方式是将钱包中的密钥和地址转储(dump)到文件中。钱包转储文件将包含所有(私)钥及其关联的 Qtum 地址 - 因此,这不推荐在打算保持安全的钱包上执行。2 |, Q* N: b/ X* l
可能你想自定义 -datadir= 命令行参数(而不是 -noconnect)来实现上面这个操作。这会创建一个新钱包(即 wallet.dat 文件)和其他文件、目录等到你自定义的目录下。实现这个操作后,请删除这个临时文件夹。" u& m/ g( G' L2 x: _
用调试控制台(前面介绍过)输入:" g7 @+ X, ?. H9 o+ J
> dumpwallet /tmp/wallet_dump.txt* g8 m5 B8 H0 h+ P
注意:将 /tmp/wallet_dump.txt(上面)替换为你喜欢的目录/文件名。
随便打开 /tmp/wallet_dump.txt。可以看到:. M% K2 }! z6 Q! D* b. H
# Wallet dump created by Qtum v0.14.2.0-797c365-dirty
# * Created on 2017-09-04T22:01:27Z( J8 P1 N* I3 g* P2 N+ Z
# * Best block at time of backup was 16752 (9d57d56217fff0ba9fe948189529b6b05eab9634b511b96fad7665f2a6685a83),
# mined on 2017-09-04T22:00:32Z7 ^7 R2 N# ~, Y" c( H
; D& w. W2 N! t: e9 S
# extended private masterkey: xprv9s21ZrQH143K32GwedMSgRTR4dFQeHX27y8QpyzdoUv58e9n4MfJiEwyAvJc974i48GGJMqrhA2tPQyYyr7FrUnh7vwUN3wUo2bUFCuj4w2
L1Pu11NpYqNcozCYFpojbAff3sCMRoubgSJHN6S8Vc3BD8qaeug5 2017-09-04T21:55:04Z reserve=1 # addr=QLf8eTZwSMEsud9P1gBWUb4HM6u9asTH1o hdkeypath=m/0'/0'/9'! u1 }+ |! x/ d& s' C- L
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'
...8 A) d7 N1 C& J4 O/ D7 w
L48dP3kLACS71g8czia14iJA5beepyYLBWpXgasgfHWbc8pAZZ6y 2017-09-04T21:55:04Z hdmaster=1 # addr=QaXBqRoPcFGfa3cuqYJ6nvAstZioKt2yBx hdkeypath=m
...
KyeTUmMrMezBLkTeMtjuExUxQ4Sb6KVaznCdNwaCmkwG3qSUrqsf 2017-09-04T21:55:10Z reserve=1 # addr=QZFZfsfim7os3349ydRC7F1FBqCQvmjLic hdkeypath=m/0'/0'/97'% p. _2 C# C* a8 x7 n
KxXbhnbzK7Y9SrAoL196NXunUzCBT7arobxadA5UMFLEW9bQS6DQ 2017-09-04T21:55:10Z reserve=1 # addr=Qdh9sZQDd3tqT2emHsvh5Exhgf527iLG2v hdkeypath=m/0'/0'/95'
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'6 Y& p* z% i7 p! Y/ @% ~
# End of dump
大概有创建了 101 个地址(即 m/0’/0’/0’ 到 m/0’/0’/100’)再加上hdmaster。9 d' N3 p( T0 L8 ~/ T. `. B
备份钱包, ]* h- ^, C' R
3 |+ |& `; V' |! h
希望你找到你的 wallet.dat 文件了(参见前面的部分,找到它的位置)。有两个备份钱包的选择:
将wallet.dat文件复制到安全位置。
, F: S( f: T; w" f
在调试控制台中运行 backupwallet 命令,将钱包文件写入安全位置。3 v1 o- a3 J# y6 \
& G4 H! V3 D' g, R' P7 m" y
选第一项的话,请确保 Qtum 钱包/节点程序(例如 qtum-qt)未运行。
8 c) }9 `/ U+ t9 B
选第二项的话,只需在 Debug Console 提示符下输入 backupwallet,获取有关如何使用该命令的帮助(即,它需要 1个 参数来指定目录或带有文件名的路径)。/ E4 q1 M4 L7 a1 ~9 [8 l3 I
3 v1 ]( c& D6 R- D- A( \8 M6 H
确保将钱包备份文件放在安全的位置(例如安全的U盘里等)
' Y$ G+ |$ i+ ~
加密钱包
强烈建议在加密钱包之前先备份好钱包。
要加密钱包,请选择“设置”菜单栏下的“加密钱包…”选项:; c1 j$ f3 n T% Z0 ~
; X7 A5 G( A9 {- n! e( ~9 c
接着,确保输入一个安全密码用来解锁钱包。
, \& ]0 Q0 @0 f' I, U. ^. n
% m/ C! }9 ~9 M
阅读并接受警告(是的,请记住密码):
& h% z0 H5 }$ A% {, T
加密完成后,收到另一条消息:
单击“确定”,然后关闭钱包/节点程序(如qtum-qt)。3 ~5 P9 X6 }* r4 h' g9 ?! r$ J
6 C, N3 c6 t& B9 j
关闭钱包/节点程序后,建议用前面提到的第一项备份钱包(即复制加密的 wallet.dat 文件),然后重启 qtum-qt。
解锁钱包
重启加密的 Qtum 钱包后,你会在右下角看到“锁定”图标:
0 [" B( ?+ B0 `
这意味着(加密)钱包目前已被锁定。你不能用锁定的钱包 staking QTUM 代币。# |7 \ a! K* T( q. R( C" S; H# i! K
) f$ O! e* x0 I
注意:启动后的一段时间内,钱包可能看起来没有响应。这是正常的。
. U" u6 u2 x: r2 V$ w
要解锁钱包,请选择“设置”菜单栏下的“解锁钱包…”选项:
) M4 p. s# n% I0 s
; T/ X6 d9 `% ~$ s9 L, V
% e' K/ j4 b; |5 @( U
然后,可以看到欢迎页面:1 X% B [' p& H4 R$ l# D' _
; Z2 r; f9 k& s% }* J9 x3 `
* z! Z! E/ t$ ~
输入加密钱包时设置的密码。还可以选择是否只为 staking 而解锁钱包。如果选择这个选项,则你(或任何访问正在运行的钱包/节点的人)将无法从钱包中转移代币,或执行任何需要访问钱包的操作 - 例如将钱包转储(dump)到文件(在调试控制台中使用 dumpwallet 命令)。 不过,backupwallet 命令仍然有效。* `3 C; p ?# X8 _) n4 c
如果仅为 staking 解锁,你会注意到右下角的图标如下所示:
4 ~+ e# ?" ]3 p, ]2 K8 {
+ n: M- M/ T2 A" ^7 m
如果不是仅为 staking 解锁,你会看到一个略有不同的图标(和悬停消息):
! w6 v o1 z- L9 u8 f
) b& T- |- E! J; f/ o l7 u
如果你刚刚在第一次加密钱包后就解锁钱包,我建议你再进行一次备份。
" \. R* `# Y1 O8 { N, S
锁定钱包
要再次锁定钱包(例如,如果想让钱包/节点保持运行而不staking 代币),只需选择“设置”菜单栏下的“锁定钱包…”选项:0 Z1 [- ]2 F. {2 I+ a( T0 W
恢复钱包
如果你完全丢失了正在运行的钱包(以及区块链区块数据),可以通过将(先前)备份的钱包文件复制到(跟操作系统有关)数据目录中,然后重启 Qtum 钱包,轻松恢复钱包/node程序(例如qtum-qt)。
# u6 }8 t& T" t6 \& V/ s0 D4 W$ g
如果数据目录不见了(比如你换了台新电脑),最简单的是:
7 C3 G2 W- \6 t& y2 y1 `, m6 Z: Y
使用 -noconnect 命令行参数启动 Qtum 钱包/节点程序,以便重新创建数据目录。" L7 L: F4 W5 Q, F
2 V, L2 J! {* N) U, w
钱包/节点程序运行后(大约10秒左右),再次关闭它。
将(跟操作系统有关的)数据目录中创建的 wallet.dat 文件替换为最新的钱包(即 wallet.dat 文件)备份文件。, H; |5 v7 ^( Y0 l: v+ H4 q
不使用 -noconnect 命令行参数重启 Qtum 钱包/节点程序。: C8 [# k' m) Q2 j% o
上面重要的一步是确保钱包文件(即 wallet.dat 文件)在正确的(跟操作系统有关)目录。: c1 c( {- a2 J- @/ T
注意:这不是Qtum(Quantum)团队的官方文章。我只是一个粉丝。
成为第一个吐槽的人