Qtum开发者教程系列——加密,备份和恢复 Qtum 钱包
mark7914
发表于 2022-11-22 13:54:19
2327
0
0
- k. d S0 V N3 J7 v3 Z
在继续之前,我想说明以下内容:+ X8 p/ _+ l0 G
强烈建议先备份钱包,之后再加密(以防万一)
加密钱包会改变HD钱包的主私钥(详见下文)确保在加密后不使用旧钱包。& A1 @# [' H+ \ m3 L
如果要复制或移动钱包文件(例如 wallet.dat),请务必先关闭钱包/节点程序(例如qtum-qt)。 D# V" w' k5 X
在加密钱包时,建议使用 -noconnect 选项启动钱包/节点程序(例如qtum-qt)(详见下文)。
如果已经加密了钱包,必须要解锁(至少“只是为了 staking”)才能 stake QTUM 代币。5 @) @; D1 a- M& O- w
创造一个完美的(100%保证)安全系统几乎是不可能/不切实际的。因此,执行与安全相关的操作(例如输入密码等)总会存在一些风险。1 b" R' c3 a5 P! j9 p
和以前一样,本文作如下假设:
; F3 K; k' h# b% h6 N
你正在使用 macOS / OSX 或 Linux(例如 x86_64 / amd64 Ubuntu 16.04)。
7 z v- C* y' w2 w% I4 j
你熟悉使用 Unix shell(例如 bash),Unix 命令和工具(如 tar).windows 用户需要找一下等价的命令(在本文评论里问–或加入 Qtum 社区的 Slack或Reddit)! y) z1 C' [+ w* H2 {1 M8 U
3 o0 A) T" h( Z+ r3 a
本文用的是 qtum-qt GUI 钱包,但你也可以用qtumd钱包(使用qtum-cli命令行工具)。* x( p0 F) i2 P' m( p0 |5 N
; t1 _: `" N) V. q! a7 K' ~
安装和启动Qtum钱包
* }1 B2 c/ S% N( T! b) K; m
按我之前发布的教程安装并启动 Qtum GUI 钱包。务必下载最新的 Qtum 钱包(例如本文撰写时是 Skynet Release v1.2)。0 [+ ]! C" Z. z. K0 V
; o& S( o4 _& T# L# Q5 q4 \. q
注意:没必要下载 Qtum 区块链,因此建议指定以下命令行参数:& e5 {$ O; L( @0 ^0 i7 _+ Z
5 v8 ]! o- a# I8 m; B
$ bin/qtum-qt -noconnect/ Q5 s5 n4 `9 Q4 h( T3 E* B
/ F: u/ m/ `- c
使用 -noconnect 将阻止 qtum-qt(或qtumd)钱包/节点下载区块链。本文中,我们只在钱包上操作。
即使使用 -noconnect 命令行,钱包也会显示警告,似乎还是要连到 Qtum 网络 - 但实际上并非如此(这个小麻烦作为问题#315的一部分得到修复)。 你可以解除/隐藏警告。
回想一下,钱包文件(默认为 wallet.dat)安装目录(默认)跟操作系统有关:# f- P' X# W. D5 z# c8 }2 ^# Z
* V9 r; \$ b5 M! S! c
Linux: ~/.qtum
macOS/OSX: ~/Library/Application Support/Qtum, B$ Q2 Q- b L2 _! ~8 M
Windows: %APPDATA%\Qtum' j7 R l; s- A9 J% A
U1 b# i) @6 u2 K- L1 V
确保你可以找到 wallet.dat 文件。之后我们处理这个文件。
调试控制台(Debug Console)
qtum-qt GUI 钱包包含一个内置的“调试”控制台,可以用控制台与钱包进行交互(比 GUI 功能多)。使用Debug Console 或多或少等同于使用 bin/qtum-cli 工具(即进行 RPC 调用)。; z6 T0 S5 E% x2 c6 ]
) y# `2 b3 {% V
要访问调试控制台,选择“帮助”菜单栏下的“调试窗口”:
q0 l- |6 c# x7 g, k7 z; I& _
接下来,选择“控制台(Console)”
8 s" `: E# P; I" _6 Y1 X
在提示符处(在底部),可以输入 getwalletinfo 等命令:
按Enter / Return后,会有结果:. M! e0 A% e: _
可以输入 help 获取所有可用命令的列表。
HD 钱包. o/ h& e4 N u% c
除非(奇怪地)指定其他方式(使用特殊的命令行选项),否则 Qtum 钱包类型就是HD 钱包。简单来说,这意味着钱包创建的地址是预先确定的。这很有用,因为每次分配新的 Qtum 地址时都不需要备份钱包。默认情况下,钱包预先创建 100 个地址,并根据需要添加更多地址。1 C; z$ Q, P t0 A: w
/ U0 q. k' p7 K/ o
正如注意事项部分所述,如果加密钱包,它也会更改主私钥 - 这意味着未来(预先确定的)地址(除加密前钱包中的地址)将会改变。; S3 z( N. ^2 ]& [4 }2 p
& J% e& t( F$ J2 d7 F
钱包地址转储(dump)到文件中
3 j. i% e3 K" H" S3 J* b x$ B; P, x
查看预创建的 HD 钱包地址的一种(可选)不安全方式是将钱包中的密钥和地址转储(dump)到文件中。钱包转储文件将包含所有(私)钥及其关联的 Qtum 地址 - 因此,这不推荐在打算保持安全的钱包上执行。
可能你想自定义 -datadir= 命令行参数(而不是 -noconnect)来实现上面这个操作。这会创建一个新钱包(即 wallet.dat 文件)和其他文件、目录等到你自定义的目录下。实现这个操作后,请删除这个临时文件夹。
用调试控制台(前面介绍过)输入:3 l6 a1 O9 v/ q S" `. P
> dumpwallet /tmp/wallet_dump.txt+ X+ j5 g- j' t J$ K3 g8 }
注意:将 /tmp/wallet_dump.txt(上面)替换为你喜欢的目录/文件名。
随便打开 /tmp/wallet_dump.txt。可以看到:
# Wallet dump created by Qtum v0.14.2.0-797c365-dirty/ ]" Y; t2 r: G& K
# * Created on 2017-09-04T22:01:27Z% f2 ?0 h0 m, \& P7 U# h
# * Best block at time of backup was 16752 (9d57d56217fff0ba9fe948189529b6b05eab9634b511b96fad7665f2a6685a83),
# mined on 2017-09-04T22:00:32Z
# extended private masterkey: xprv9s21ZrQH143K32GwedMSgRTR4dFQeHX27y8QpyzdoUv58e9n4MfJiEwyAvJc974i48GGJMqrhA2tPQyYyr7FrUnh7vwUN3wUo2bUFCuj4w22 }/ c7 H) q: w9 o1 r; F+ i
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'# k+ x; [- n" U5 @- v& _
L5DbkJaPBDMiPApP43fzaHZEdZ1GcQcgwbWJMyygBcf2MsKmSS3Q 2017-09-04T21:55:04Z reserve=1 # addr=QMRdFtfAJ52hC5pL6p1xi6EUJ94C6aYSD2 hdkeypath=m/0'/0'/3'/ U" b% v0 q) E2 O
...
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'
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'5 f' {5 ^0 z" b6 b$ ]
# End of dump- ?2 W3 Y3 T; y" o6 E
大概有创建了 101 个地址(即 m/0’/0’/0’ 到 m/0’/0’/100’)再加上hdmaster。
4 e8 B7 d8 h X
备份钱包
0 { E+ O9 j! h9 [1 O$ v2 u
希望你找到你的 wallet.dat 文件了(参见前面的部分,找到它的位置)。有两个备份钱包的选择:3 L/ V/ {- P( m6 w5 s) I0 j
将wallet.dat文件复制到安全位置。
* Q1 U R; |! \3 R6 c7 N
在调试控制台中运行 backupwallet 命令,将钱包文件写入安全位置。; y# }; [2 r; e) j/ i
( T- D) _+ l( W& e+ O: o2 J8 l
选第一项的话,请确保 Qtum 钱包/节点程序(例如 qtum-qt)未运行。
选第二项的话,只需在 Debug Console 提示符下输入 backupwallet,获取有关如何使用该命令的帮助(即,它需要 1个 参数来指定目录或带有文件名的路径)。
确保将钱包备份文件放在安全的位置(例如安全的U盘里等)7 x2 [6 P, H- u0 y9 T$ ?# v1 Z
9 N$ a2 E( e0 w/ t
加密钱包
4 V0 b/ }1 b- a2 ~7 y
强烈建议在加密钱包之前先备份好钱包。
+ o* ?) \( D2 B0 @0 w; ]% Z7 l; L
要加密钱包,请选择“设置”菜单栏下的“加密钱包…”选项:; X: @% Z! h1 f, M3 D/ ?! d
4 f7 X2 D0 l1 e B- J9 @
接着,确保输入一个安全密码用来解锁钱包。0 W) z5 l3 J0 v ~5 R
: Y, B# P$ a) B( p# w; V
0 U% E# `) Y O$ o% u. z
阅读并接受警告(是的,请记住密码):, A$ c$ M8 w$ h- G
- w" ^. B+ s. D0 H4 ^) |! [5 d
加密完成后,收到另一条消息:1 F5 f+ B6 ~8 f) y7 Z! r' R
% @5 c9 `$ n8 n: @9 ^* s r
单击“确定”,然后关闭钱包/节点程序(如qtum-qt)。$ R8 n$ U( e. x7 F1 ?
% L5 B. m4 k+ d* `4 Q" _
关闭钱包/节点程序后,建议用前面提到的第一项备份钱包(即复制加密的 wallet.dat 文件),然后重启 qtum-qt。
解锁钱包8 F6 q. a0 O! c3 j+ q7 Z5 y
% y9 g3 t" @& D3 u$ e
重启加密的 Qtum 钱包后,你会在右下角看到“锁定”图标:
, \, g7 O: ^" G8 ?( z; @
' t0 e, S, w2 R" F* I
这意味着(加密)钱包目前已被锁定。你不能用锁定的钱包 staking QTUM 代币。/ w' v Z4 y# V" C" |
注意:启动后的一段时间内,钱包可能看起来没有响应。这是正常的。, A8 K2 [1 r2 ]! W
要解锁钱包,请选择“设置”菜单栏下的“解锁钱包…”选项:
~1 J6 |6 G1 B4 ]
然后,可以看到欢迎页面:6 r$ F& l( e R: h
/ X2 C# @7 {+ {. S) o# I, q- V
% c+ K6 ~/ T- ^; _0 R0 s
4 V0 _, b5 j* v% Y3 {8 ^
输入加密钱包时设置的密码。还可以选择是否只为 staking 而解锁钱包。如果选择这个选项,则你(或任何访问正在运行的钱包/节点的人)将无法从钱包中转移代币,或执行任何需要访问钱包的操作 - 例如将钱包转储(dump)到文件(在调试控制台中使用 dumpwallet 命令)。 不过,backupwallet 命令仍然有效。
如果仅为 staking 解锁,你会注意到右下角的图标如下所示:1 q/ d, H2 k$ V
如果不是仅为 staking 解锁,你会看到一个略有不同的图标(和悬停消息):
( t0 E( G2 t+ k' l" \( W/ {
如果你刚刚在第一次加密钱包后就解锁钱包,我建议你再进行一次备份。
, J) t, A0 g5 {" Q4 I- ~3 {' ~
锁定钱包( L( _$ Z/ S" U$ j8 j/ X* ]/ [
0 s( t: z, Y. h
要再次锁定钱包(例如,如果想让钱包/节点保持运行而不staking 代币),只需选择“设置”菜单栏下的“锁定钱包…”选项:3 @1 I3 B" ^* |" X7 E) r
恢复钱包
: m+ a2 N: N- S' i, \4 l1 Q
如果你完全丢失了正在运行的钱包(以及区块链区块数据),可以通过将(先前)备份的钱包文件复制到(跟操作系统有关)数据目录中,然后重启 Qtum 钱包,轻松恢复钱包/node程序(例如qtum-qt)。
如果数据目录不见了(比如你换了台新电脑),最简单的是:/ |- D) @$ q, L6 n+ I( r. ^
2 o( P$ E$ U6 v$ C
使用 -noconnect 命令行参数启动 Qtum 钱包/节点程序,以便重新创建数据目录。& N3 [! o: u0 S8 G6 e3 Q2 W
钱包/节点程序运行后(大约10秒左右),再次关闭它。
* ]$ C/ R X8 r3 |+ [$ S. S
将(跟操作系统有关的)数据目录中创建的 wallet.dat 文件替换为最新的钱包(即 wallet.dat 文件)备份文件。2 ]; L [. J1 p2 p J$ e
不使用 -noconnect 命令行参数重启 Qtum 钱包/节点程序。3 D- m- N! ]0 q4 w0 Z
上面重要的一步是确保钱包文件(即 wallet.dat 文件)在正确的(跟操作系统有关)目录。
' b# C" l" H( [ w( {. ?% W# j
注意:这不是Qtum(Quantum)团队的官方文章。我只是一个粉丝。
成为第一个吐槽的人