Qtum开发者教程系列——加密,备份和恢复 Qtum 钱包
mark7914
发表于 2022-11-22 13:54:19
2323
0
0
, {5 @; v. _' s% [
在继续之前,我想说明以下内容:
强烈建议先备份钱包,之后再加密(以防万一)
加密钱包会改变HD钱包的主私钥(详见下文)确保在加密后不使用旧钱包。4 d# ]% V' H' M% B+ X6 H6 I
如果要复制或移动钱包文件(例如 wallet.dat),请务必先关闭钱包/节点程序(例如qtum-qt)。5 n3 ~( R7 p! u8 X5 g
在加密钱包时,建议使用 -noconnect 选项启动钱包/节点程序(例如qtum-qt)(详见下文)。
如果已经加密了钱包,必须要解锁(至少“只是为了 staking”)才能 stake QTUM 代币。8 |, [0 x1 Y& |1 J0 `
创造一个完美的(100%保证)安全系统几乎是不可能/不切实际的。因此,执行与安全相关的操作(例如输入密码等)总会存在一些风险。4 O- s- }" z1 Y# A% J+ `
和以前一样,本文作如下假设:
你正在使用 macOS / OSX 或 Linux(例如 x86_64 / amd64 Ubuntu 16.04)。& |* h6 F T3 ?: R6 @" [/ c2 C
6 B/ D2 v3 ]. Q5 j0 B2 c7 _% X
你熟悉使用 Unix shell(例如 bash),Unix 命令和工具(如 tar).windows 用户需要找一下等价的命令(在本文评论里问–或加入 Qtum 社区的 Slack或Reddit)$ C0 ]' H0 z8 h4 I) o- b
本文用的是 qtum-qt GUI 钱包,但你也可以用qtumd钱包(使用qtum-cli命令行工具)。
安装和启动Qtum钱包
按我之前发布的教程安装并启动 Qtum GUI 钱包。务必下载最新的 Qtum 钱包(例如本文撰写时是 Skynet Release v1.2)。
! S& Z6 U- P5 Q% V& @% r+ R
注意:没必要下载 Qtum 区块链,因此建议指定以下命令行参数:1 P) m. ^) f% ~+ h; \, X1 W
$ bin/qtum-qt -noconnect; S3 R7 c/ ~- a0 p) Z: t+ ]$ R/ |
y' I3 \" k4 `5 N1 S$ `
使用 -noconnect 将阻止 qtum-qt(或qtumd)钱包/节点下载区块链。本文中,我们只在钱包上操作。' b5 \. T! S7 C! V% }
3 y8 J5 P/ ~% U7 |" a/ N5 d& l
即使使用 -noconnect 命令行,钱包也会显示警告,似乎还是要连到 Qtum 网络 - 但实际上并非如此(这个小麻烦作为问题#315的一部分得到修复)。 你可以解除/隐藏警告。
) x# I7 N4 s7 V: m5 G6 r; @7 y1 Y
回想一下,钱包文件(默认为 wallet.dat)安装目录(默认)跟操作系统有关:
6 x! L6 m( `! Y1 w/ ]' ]
Linux: ~/.qtum
macOS/OSX: ~/Library/Application Support/Qtum1 D% m, |# ?4 k7 _% S
Windows: %APPDATA%\Qtum
3 u, d8 ?* h$ s2 A- h6 L) C" c: F
确保你可以找到 wallet.dat 文件。之后我们处理这个文件。
& G1 y6 ?6 j6 m' i/ l' Z9 z& s) r& ^
调试控制台(Debug Console)
qtum-qt GUI 钱包包含一个内置的“调试”控制台,可以用控制台与钱包进行交互(比 GUI 功能多)。使用Debug Console 或多或少等同于使用 bin/qtum-cli 工具(即进行 RPC 调用)。: q. w1 z H: Z# G' J5 v
+ O- j2 j O, q" ?5 `
要访问调试控制台,选择“帮助”菜单栏下的“调试窗口”:. B( F9 v8 ?) }( Q# T5 G' I
. Y: Q B+ I. h- z
4 x. [7 ^( q: o& \( O1 z( _
接下来,选择“控制台(Console)”
在提示符处(在底部),可以输入 getwalletinfo 等命令:' A/ [3 f+ b0 S' E
- `0 o* m8 i' W! Q
按Enter / Return后,会有结果:
9 }$ J7 S) Q! |$ T
' f- n$ c9 _ t4 e! g* t* Y
5 P$ u- h6 J; B
可以输入 help 获取所有可用命令的列表。
HD 钱包
| R: L* y" W% U) ]" j
除非(奇怪地)指定其他方式(使用特殊的命令行选项),否则 Qtum 钱包类型就是HD 钱包。简单来说,这意味着钱包创建的地址是预先确定的。这很有用,因为每次分配新的 Qtum 地址时都不需要备份钱包。默认情况下,钱包预先创建 100 个地址,并根据需要添加更多地址。7 h! k1 i2 v7 N$ Z) B# N3 |6 L
正如注意事项部分所述,如果加密钱包,它也会更改主私钥 - 这意味着未来(预先确定的)地址(除加密前钱包中的地址)将会改变。
钱包地址转储(dump)到文件中
查看预创建的 HD 钱包地址的一种(可选)不安全方式是将钱包中的密钥和地址转储(dump)到文件中。钱包转储文件将包含所有(私)钥及其关联的 Qtum 地址 - 因此,这不推荐在打算保持安全的钱包上执行。( D6 A. F, @5 o9 }. z% ]- e5 G
- K$ D$ b& E: g
可能你想自定义 -datadir= 命令行参数(而不是 -noconnect)来实现上面这个操作。这会创建一个新钱包(即 wallet.dat 文件)和其他文件、目录等到你自定义的目录下。实现这个操作后,请删除这个临时文件夹。+ h$ W9 i5 ?+ b. j6 G
3 x' h; q# x; }# Q0 P% b
用调试控制台(前面介绍过)输入:
- |# ]- o/ K% L- ^: X- O
> dumpwallet /tmp/wallet_dump.txt% r8 _& r& D% N% m
注意:将 /tmp/wallet_dump.txt(上面)替换为你喜欢的目录/文件名。
2 H( D" S4 Q; z# V) w" w
随便打开 /tmp/wallet_dump.txt。可以看到:
# Wallet dump created by Qtum v0.14.2.0-797c365-dirty6 F: {7 c/ x2 a1 W
# * Created on 2017-09-04T22:01:27Z. Y. P" T7 v8 [# H! s
# * Best block at time of backup was 16752 (9d57d56217fff0ba9fe948189529b6b05eab9634b511b96fad7665f2a6685a83), {+ V! k: A" K" I4 V' ~
# mined on 2017-09-04T22:00:32Z
# extended private masterkey: xprv9s21ZrQH143K32GwedMSgRTR4dFQeHX27y8QpyzdoUv58e9n4MfJiEwyAvJc974i48GGJMqrhA2tPQyYyr7FrUnh7vwUN3wUo2bUFCuj4w2
, @# Y( f0 K+ F q9 ^% ~4 P
L1Pu11NpYqNcozCYFpojbAff3sCMRoubgSJHN6S8Vc3BD8qaeug5 2017-09-04T21:55:04Z reserve=1 # addr=QLf8eTZwSMEsud9P1gBWUb4HM6u9asTH1o hdkeypath=m/0'/0'/9'# @* @# p" o7 l
KwwnFgfhdNEm6ZeNZpf5Q77oBymcT6hgDY9DNaHF3xbM5PdLUQwP 2017-09-04T21:55:04Z label= # addr=QM4SUqLkzoMM5TStmNeWQU18wbqzbNtUDo hdkeypath=m/0'/0'/0'0 U# H7 n! b$ a% x8 g
L5DbkJaPBDMiPApP43fzaHZEdZ1GcQcgwbWJMyygBcf2MsKmSS3Q 2017-09-04T21:55:04Z reserve=1 # addr=QMRdFtfAJ52hC5pL6p1xi6EUJ94C6aYSD2 hdkeypath=m/0'/0'/3'5 G+ a" k0 b* A* I5 @4 O' K+ w
...% G# [2 p8 c4 \# Y
L48dP3kLACS71g8czia14iJA5beepyYLBWpXgasgfHWbc8pAZZ6y 2017-09-04T21:55:04Z hdmaster=1 # addr=QaXBqRoPcFGfa3cuqYJ6nvAstZioKt2yBx hdkeypath=m! a2 {/ F/ O# f. o9 e6 z% l2 x
...1 Q( a) u( ~9 T9 K* E# y+ V7 H6 Q# p1 k
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') h& l0 K- }+ c$ ^: T \( e) {# u
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'
/ j- y% T1 Q, Q f
# End of dump. |6 P7 F2 X4 ]- c" A# D- u
7 g+ d% d4 s4 H
大概有创建了 101 个地址(即 m/0’/0’/0’ 到 m/0’/0’/100’)再加上hdmaster。' E9 O# y% C6 A
! Q6 L0 y6 d. Y* l
备份钱包3 H/ D8 D7 _7 t; q) D2 q
希望你找到你的 wallet.dat 文件了(参见前面的部分,找到它的位置)。有两个备份钱包的选择:3 @: ]4 Q5 s) N
将wallet.dat文件复制到安全位置。
在调试控制台中运行 backupwallet 命令,将钱包文件写入安全位置。. Y6 ~: H, Z# K$ Q" q
选第一项的话,请确保 Qtum 钱包/节点程序(例如 qtum-qt)未运行。
" j% {/ c2 ?* ?5 H4 G
选第二项的话,只需在 Debug Console 提示符下输入 backupwallet,获取有关如何使用该命令的帮助(即,它需要 1个 参数来指定目录或带有文件名的路径)。. v4 K1 }; S( P
确保将钱包备份文件放在安全的位置(例如安全的U盘里等)1 f l! q, H7 ]' B2 p
加密钱包6 d/ P# D' o8 S) i
8 x6 g% L" A3 f- k: F: Y
强烈建议在加密钱包之前先备份好钱包。
1 H6 t8 [* U. X# Q) G
要加密钱包,请选择“设置”菜单栏下的“加密钱包…”选项:
接着,确保输入一个安全密码用来解锁钱包。
6 K) w. T4 D4 c0 g) J
8 e1 S5 h; U4 ^9 n/ E! _% r9 b
阅读并接受警告(是的,请记住密码):9 K6 B0 w5 Z* M$ B
8 V# J. e8 K- |9 i
加密完成后,收到另一条消息:# Q' Q. _6 ?7 h4 f- m) }2 F' j
. z/ u4 S1 v) B: G6 e$ U! F
单击“确定”,然后关闭钱包/节点程序(如qtum-qt)。" H+ \) p4 f. p [) s
关闭钱包/节点程序后,建议用前面提到的第一项备份钱包(即复制加密的 wallet.dat 文件),然后重启 qtum-qt。
9 K* D' U* |3 c/ e8 x
解锁钱包
4 D8 u0 F7 X9 h8 h- ?
重启加密的 Qtum 钱包后,你会在右下角看到“锁定”图标:+ p2 {. O6 C! P4 p/ o3 J
/ ] E! n M9 M: F# I! w5 c9 o
这意味着(加密)钱包目前已被锁定。你不能用锁定的钱包 staking QTUM 代币。
注意:启动后的一段时间内,钱包可能看起来没有响应。这是正常的。6 i! A F- Z" R! m# G6 d
要解锁钱包,请选择“设置”菜单栏下的“解锁钱包…”选项:
$ X( Z) x- Y: O
然后,可以看到欢迎页面:& O$ S" E, ]( W+ q( l Q
1 c5 l0 c2 G" }* d& o9 s& |
7 F$ P: j1 s+ A; v3 P. R P) [! h
2 H, t# j F3 v+ o' J, m# R
输入加密钱包时设置的密码。还可以选择是否只为 staking 而解锁钱包。如果选择这个选项,则你(或任何访问正在运行的钱包/节点的人)将无法从钱包中转移代币,或执行任何需要访问钱包的操作 - 例如将钱包转储(dump)到文件(在调试控制台中使用 dumpwallet 命令)。 不过,backupwallet 命令仍然有效。( \7 E$ ]) h2 H! R/ j1 h1 [
, K. ?( h2 H. j6 z' Y2 e% P+ c
如果仅为 staking 解锁,你会注意到右下角的图标如下所示:
0 [+ [2 o4 ?, W$ [0 T' Y( B
如果不是仅为 staking 解锁,你会看到一个略有不同的图标(和悬停消息):7 u2 w( x2 m. L' g5 w4 M
L1 i- M9 Q. L" M' }+ N6 Z
2 d$ m' _/ c/ S, Z
L" N) i' P( I# A" J$ M* C
如果你刚刚在第一次加密钱包后就解锁钱包,我建议你再进行一次备份。
锁定钱包
要再次锁定钱包(例如,如果想让钱包/节点保持运行而不staking 代币),只需选择“设置”菜单栏下的“锁定钱包…”选项:
6 T. o) j+ M- k; J0 [
& f* v8 {2 V2 o/ b- D( Q, i A: f
恢复钱包2 A4 L& Z; d5 G- b9 @
如果你完全丢失了正在运行的钱包(以及区块链区块数据),可以通过将(先前)备份的钱包文件复制到(跟操作系统有关)数据目录中,然后重启 Qtum 钱包,轻松恢复钱包/node程序(例如qtum-qt)。
如果数据目录不见了(比如你换了台新电脑),最简单的是:7 |9 k! a, Q* s, D: a% ~
使用 -noconnect 命令行参数启动 Qtum 钱包/节点程序,以便重新创建数据目录。6 m0 }. P, t; Z/ [* R
6 Y, Q- \0 I E
钱包/节点程序运行后(大约10秒左右),再次关闭它。; R. O# q( R y+ ~
& q: o9 w5 d7 l6 e) x- R5 `/ F
将(跟操作系统有关的)数据目录中创建的 wallet.dat 文件替换为最新的钱包(即 wallet.dat 文件)备份文件。 P: k* I. v9 k* r ~
, S" a- c1 J% @" u
不使用 -noconnect 命令行参数重启 Qtum 钱包/节点程序。
上面重要的一步是确保钱包文件(即 wallet.dat 文件)在正确的(跟操作系统有关)目录。; Z2 i* o" `; h2 h; @7 \
0 U& k- T& U# v! g" O( d- H
注意:这不是Qtum(Quantum)团队的官方文章。我只是一个粉丝。
成为第一个吐槽的人