Qtum开发者教程系列——加密,备份和恢复 Qtum 钱包
mark7914
发表于 2022-11-22 13:54:19
2379
0
0
" s' E) u* S/ w1 C7 r
在继续之前,我想说明以下内容:" V/ m% v+ p1 F6 b6 \; x% D
强烈建议先备份钱包,之后再加密(以防万一)
加密钱包会改变HD钱包的主私钥(详见下文)确保在加密后不使用旧钱包。
如果要复制或移动钱包文件(例如 wallet.dat),请务必先关闭钱包/节点程序(例如qtum-qt)。
在加密钱包时,建议使用 -noconnect 选项启动钱包/节点程序(例如qtum-qt)(详见下文)。
如果已经加密了钱包,必须要解锁(至少“只是为了 staking”)才能 stake QTUM 代币。
创造一个完美的(100%保证)安全系统几乎是不可能/不切实际的。因此,执行与安全相关的操作(例如输入密码等)总会存在一些风险。5 r8 P: Y- n5 e/ N# e
和以前一样,本文作如下假设:3 U- h- w) q" q. D) J
你正在使用 macOS / OSX 或 Linux(例如 x86_64 / amd64 Ubuntu 16.04)。0 \1 M; @, l0 h: g* i$ E0 ?
* [# t) B. t2 D6 ?
你熟悉使用 Unix shell(例如 bash),Unix 命令和工具(如 tar).windows 用户需要找一下等价的命令(在本文评论里问–或加入 Qtum 社区的 Slack或Reddit)9 x7 x, r. [5 a5 @7 [' m
本文用的是 qtum-qt GUI 钱包,但你也可以用qtumd钱包(使用qtum-cli命令行工具)。# b; N2 f% D% K% g* [8 m2 ?1 L1 E
$ P6 n8 Q& |& [4 R
安装和启动Qtum钱包0 R% c: Z6 `) ~0 u, Z
- \! Y) q# s9 W+ T
按我之前发布的教程安装并启动 Qtum GUI 钱包。务必下载最新的 Qtum 钱包(例如本文撰写时是 Skynet Release v1.2)。) W4 S; Y& ^: g+ M
注意:没必要下载 Qtum 区块链,因此建议指定以下命令行参数:) g- o% W' e3 i' k/ \) V& g; a
$ bin/qtum-qt -noconnect- q5 j. b" ~# {9 V/ c+ a+ P
" E" i% o7 u& `, B# [% l6 F. B6 u6 p
使用 -noconnect 将阻止 qtum-qt(或qtumd)钱包/节点下载区块链。本文中,我们只在钱包上操作。8 |# u3 p' e4 F
8 `5 W2 G% n/ N. e
即使使用 -noconnect 命令行,钱包也会显示警告,似乎还是要连到 Qtum 网络 - 但实际上并非如此(这个小麻烦作为问题#315的一部分得到修复)。 你可以解除/隐藏警告。
, ^$ H; E9 U. n
回想一下,钱包文件(默认为 wallet.dat)安装目录(默认)跟操作系统有关:
- \; |( a! f6 ]! G% e- x
Linux: ~/.qtum% J& c" s, I' r8 n
macOS/OSX: ~/Library/Application Support/Qtum2 T0 o) Z4 I9 j; Z4 K$ L
Windows: %APPDATA%\Qtum
确保你可以找到 wallet.dat 文件。之后我们处理这个文件。
/ `0 f; ]- z: s& }( L
调试控制台(Debug Console). x7 s5 F3 ^% t- @
6 a8 J W" ^5 U
qtum-qt GUI 钱包包含一个内置的“调试”控制台,可以用控制台与钱包进行交互(比 GUI 功能多)。使用Debug Console 或多或少等同于使用 bin/qtum-cli 工具(即进行 RPC 调用)。 E) y* H i- s* W. H
要访问调试控制台,选择“帮助”菜单栏下的“调试窗口”:
# A- X6 ^, Q' E* s
接下来,选择“控制台(Console)” f! X- @- J3 n! ?1 a
' g, Z$ I5 B4 h3 A+ K3 e- g9 ]$ A$ i7 ~
在提示符处(在底部),可以输入 getwalletinfo 等命令:& ~- l9 @$ T$ {8 q( [2 b
; f6 E; E+ N8 W/ L& `- G
/ i- m+ I0 ^; s0 }" c
7 V/ W( b2 S) X$ m: G2 ]5 ?
按Enter / Return后,会有结果:, b2 Y$ ^8 _% ^$ e0 e) G$ O
& F+ L' O ^" a
0 q" }' ?9 R$ s I
1 U& w6 Y! Z( C8 V3 A
可以输入 help 获取所有可用命令的列表。
+ {, N7 S2 f7 H. S2 P' E% u
HD 钱包0 v" l' X$ ?3 z+ t9 H
4 y2 i: u9 a, u$ u7 }
除非(奇怪地)指定其他方式(使用特殊的命令行选项),否则 Qtum 钱包类型就是HD 钱包。简单来说,这意味着钱包创建的地址是预先确定的。这很有用,因为每次分配新的 Qtum 地址时都不需要备份钱包。默认情况下,钱包预先创建 100 个地址,并根据需要添加更多地址。* c0 N, l* H0 j5 r
7 S" z6 `$ N9 P* Z1 k( j! T; h p
正如注意事项部分所述,如果加密钱包,它也会更改主私钥 - 这意味着未来(预先确定的)地址(除加密前钱包中的地址)将会改变。
- c- b) T- _; I8 M4 p) D
钱包地址转储(dump)到文件中0 Z# }! {: ]4 v* K! b% u
. K7 K' M- t! \" ]) o! a- T
查看预创建的 HD 钱包地址的一种(可选)不安全方式是将钱包中的密钥和地址转储(dump)到文件中。钱包转储文件将包含所有(私)钥及其关联的 Qtum 地址 - 因此,这不推荐在打算保持安全的钱包上执行。. M k4 q( J/ B# g( I/ ?
可能你想自定义 -datadir= 命令行参数(而不是 -noconnect)来实现上面这个操作。这会创建一个新钱包(即 wallet.dat 文件)和其他文件、目录等到你自定义的目录下。实现这个操作后,请删除这个临时文件夹。* F7 D* u2 M& U. R( }; \
用调试控制台(前面介绍过)输入:
> dumpwallet /tmp/wallet_dump.txt, b9 f& `& N U; R$ w
4 p1 B& u' K: B2 i; n+ O* d
注意:将 /tmp/wallet_dump.txt(上面)替换为你喜欢的目录/文件名。0 v) G8 {; k, u f2 E
6 j) u |7 j, a: b0 g# _+ O+ Y# x
随便打开 /tmp/wallet_dump.txt。可以看到:
1 d9 k7 G) E+ h7 Y3 s
# Wallet dump created by Qtum v0.14.2.0-797c365-dirty
# * Created on 2017-09-04T22:01:27Z0 C7 ~# y( H" U- r0 {
# * Best block at time of backup was 16752 (9d57d56217fff0ba9fe948189529b6b05eab9634b511b96fad7665f2a6685a83),
# mined on 2017-09-04T22:00:32Z
- X' P! c1 {3 U: ~
# extended private masterkey: xprv9s21ZrQH143K32GwedMSgRTR4dFQeHX27y8QpyzdoUv58e9n4MfJiEwyAvJc974i48GGJMqrhA2tPQyYyr7FrUnh7vwUN3wUo2bUFCuj4w2
L1Pu11NpYqNcozCYFpojbAff3sCMRoubgSJHN6S8Vc3BD8qaeug5 2017-09-04T21:55:04Z reserve=1 # addr=QLf8eTZwSMEsud9P1gBWUb4HM6u9asTH1o hdkeypath=m/0'/0'/9'
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'
...
L48dP3kLACS71g8czia14iJA5beepyYLBWpXgasgfHWbc8pAZZ6y 2017-09-04T21:55:04Z hdmaster=1 # addr=QaXBqRoPcFGfa3cuqYJ6nvAstZioKt2yBx hdkeypath=m ~( ?4 b' b- O. ~4 z: V
... q# i$ R+ T% K8 g) b2 {2 L5 l5 z
KyeTUmMrMezBLkTeMtjuExUxQ4Sb6KVaznCdNwaCmkwG3qSUrqsf 2017-09-04T21:55:10Z reserve=1 # addr=QZFZfsfim7os3349ydRC7F1FBqCQvmjLic hdkeypath=m/0'/0'/97'; W" {' J9 m# H3 d# t- Z4 F) Y
KxXbhnbzK7Y9SrAoL196NXunUzCBT7arobxadA5UMFLEW9bQS6DQ 2017-09-04T21:55:10Z reserve=1 # addr=Qdh9sZQDd3tqT2emHsvh5Exhgf527iLG2v hdkeypath=m/0'/0'/95' M0 ~& n* o" |0 O2 N: M
L1g2UcRTm3JyV7DRjqpKGkRbGBhdhgqVZ9GFdRnvRcQBgWt26o4q 2017-09-04T21:55:10Z reserve=1 # addr=QeV4zHE6Vb7sFYhs26R1XNMokQSr3EKpyk hdkeypath=m/0'/0'/96'& W; p- @& X2 h$ b: j' I
L3Sh2JsPZw8dhVFWLCh1rupSPGwtjazUhsxFhfskRRCk4AzvEz8G 2017-09-04T21:55:10Z reserve=1 # addr=QiBpoHSfGwJbtJqRsNFTua7hGaMv8zGbGe hdkeypath=m/0'/0'/100'9 W7 D/ @5 t8 V- v: o: ^" a
# End of dump
大概有创建了 101 个地址(即 m/0’/0’/0’ 到 m/0’/0’/100’)再加上hdmaster。
备份钱包1 m( ~- J, c1 r+ c6 g
0 l: o# d+ N2 C5 t
希望你找到你的 wallet.dat 文件了(参见前面的部分,找到它的位置)。有两个备份钱包的选择:' G' C. O) |+ c' i3 r
" }$ E6 }6 C& h6 P0 P+ W; J# S
将wallet.dat文件复制到安全位置。
, i& Z! n+ g- ]& \( }
在调试控制台中运行 backupwallet 命令,将钱包文件写入安全位置。
. Y0 x6 F# S- w9 b5 l3 v
选第一项的话,请确保 Qtum 钱包/节点程序(例如 qtum-qt)未运行。* O* Q1 p6 l1 l) C: V' P
" t, g3 V" _+ Q$ \
选第二项的话,只需在 Debug Console 提示符下输入 backupwallet,获取有关如何使用该命令的帮助(即,它需要 1个 参数来指定目录或带有文件名的路径)。* z, _: L5 }. s! ~( P
确保将钱包备份文件放在安全的位置(例如安全的U盘里等)
- m& J }6 u! z/ r" V
加密钱包
; p+ h/ v' E4 ^% z) L
强烈建议在加密钱包之前先备份好钱包。" k( R/ c& l- I; a4 X! t+ {) A
! M: {6 _7 O% E( ?
要加密钱包,请选择“设置”菜单栏下的“加密钱包…”选项:
接着,确保输入一个安全密码用来解锁钱包。
- G6 Q4 K+ y4 ?; F6 m
阅读并接受警告(是的,请记住密码):
/ E/ B4 e7 P; W- w* |, f
; w3 k. b" R! I- V2 `4 V0 ?' o! f' D
加密完成后,收到另一条消息:
: x2 F% F1 h* c5 Y9 w9 ^
单击“确定”,然后关闭钱包/节点程序(如qtum-qt)。9 [; F& R( y/ H, D! N9 @( b
关闭钱包/节点程序后,建议用前面提到的第一项备份钱包(即复制加密的 wallet.dat 文件),然后重启 qtum-qt。9 H0 p) g" P6 f9 Q
解锁钱包! l- h- _6 y! j. J
$ A! J: n* u; w+ M, R
重启加密的 Qtum 钱包后,你会在右下角看到“锁定”图标:
这意味着(加密)钱包目前已被锁定。你不能用锁定的钱包 staking QTUM 代币。0 F" P. `& z" n+ e; O1 ?
' N) j5 o. y d0 A' [' @
注意:启动后的一段时间内,钱包可能看起来没有响应。这是正常的。( p0 e0 ]. \& k* C
% j* S U* o2 r; ]/ S D+ W
要解锁钱包,请选择“设置”菜单栏下的“解锁钱包…”选项:
* D: Z# K* A& H( s$ M6 z# K
/ v2 ~" {% C K" X6 @; V$ X3 A2 i
+ Z9 z# D5 D9 U b
然后,可以看到欢迎页面:$ O0 F8 z, O; o! D, [: L
* o- D; f% ^2 ~3 F( Y' y
输入加密钱包时设置的密码。还可以选择是否只为 staking 而解锁钱包。如果选择这个选项,则你(或任何访问正在运行的钱包/节点的人)将无法从钱包中转移代币,或执行任何需要访问钱包的操作 - 例如将钱包转储(dump)到文件(在调试控制台中使用 dumpwallet 命令)。 不过,backupwallet 命令仍然有效。0 k+ q! m8 H; Z& P! t& @/ q, l
如果仅为 staking 解锁,你会注意到右下角的图标如下所示:
) i6 I2 @; q3 x* Z
6 y% ]8 [0 F) d( T9 k) {9 R
如果不是仅为 staking 解锁,你会看到一个略有不同的图标(和悬停消息):8 b: v: e7 H8 b* F0 M% S$ _0 Q
K) F* L$ S. w1 [; b! T z- I
如果你刚刚在第一次加密钱包后就解锁钱包,我建议你再进行一次备份。! P' g0 W% U) s6 `0 I1 }; |/ l8 O
锁定钱包, b8 w" f# Y& ?1 l
9 u5 A9 ` a1 c+ \
要再次锁定钱包(例如,如果想让钱包/节点保持运行而不staking 代币),只需选择“设置”菜单栏下的“锁定钱包…”选项:% B" r M5 H. J# H' n7 ]% J
9 g+ h! [- O; A6 f. F2 w( v( t4 m
! K* j% b9 c0 n( m
恢复钱包
2 K( a$ _" t4 m1 {5 [
如果你完全丢失了正在运行的钱包(以及区块链区块数据),可以通过将(先前)备份的钱包文件复制到(跟操作系统有关)数据目录中,然后重启 Qtum 钱包,轻松恢复钱包/node程序(例如qtum-qt)。' _6 C1 x& G+ I K2 @, h
, @' ?2 V6 D+ r0 H/ p+ I
如果数据目录不见了(比如你换了台新电脑),最简单的是:
使用 -noconnect 命令行参数启动 Qtum 钱包/节点程序,以便重新创建数据目录。4 r, k' t, h, c6 W
钱包/节点程序运行后(大约10秒左右),再次关闭它。" z$ O2 y2 A- o L
. h0 q5 @* F( \ p W- R
将(跟操作系统有关的)数据目录中创建的 wallet.dat 文件替换为最新的钱包(即 wallet.dat 文件)备份文件。# T/ Y. P& K% w" ]' ]# y
% ?& _2 F& T5 N/ ?
不使用 -noconnect 命令行参数重启 Qtum 钱包/节点程序。- S" O. h/ R* E) I' n
上面重要的一步是确保钱包文件(即 wallet.dat 文件)在正确的(跟操作系统有关)目录。' n0 E, F; F" R3 d+ @& f, o
注意:这不是Qtum(Quantum)团队的官方文章。我只是一个粉丝。
成为第一个吐槽的人