Qtum开发者教程系列——加密,备份和恢复 Qtum 钱包
mark7914
发表于 2022-11-22 13:54:19
2385
0
0
在继续之前,我想说明以下内容:
强烈建议先备份钱包,之后再加密(以防万一)
加密钱包会改变HD钱包的主私钥(详见下文)确保在加密后不使用旧钱包。' D" y+ t% j" G: y4 [
如果要复制或移动钱包文件(例如 wallet.dat),请务必先关闭钱包/节点程序(例如qtum-qt)。0 j* n. X, A7 e5 j3 L* |4 W: H+ ^6 @
在加密钱包时,建议使用 -noconnect 选项启动钱包/节点程序(例如qtum-qt)(详见下文)。
如果已经加密了钱包,必须要解锁(至少“只是为了 staking”)才能 stake QTUM 代币。
创造一个完美的(100%保证)安全系统几乎是不可能/不切实际的。因此,执行与安全相关的操作(例如输入密码等)总会存在一些风险。5 c2 k) l( H" ?$ g9 A F4 d
和以前一样,本文作如下假设:
你正在使用 macOS / OSX 或 Linux(例如 x86_64 / amd64 Ubuntu 16.04)。8 b3 {5 A P. F/ g. L d2 w* w
' o7 c" F9 |5 P! d
你熟悉使用 Unix shell(例如 bash),Unix 命令和工具(如 tar).windows 用户需要找一下等价的命令(在本文评论里问–或加入 Qtum 社区的 Slack或Reddit)
本文用的是 qtum-qt GUI 钱包,但你也可以用qtumd钱包(使用qtum-cli命令行工具)。2 z! M6 _# d- y- N, e3 J$ Y& ^8 i
安装和启动Qtum钱包 {9 @5 f$ S: |7 L0 q U
按我之前发布的教程安装并启动 Qtum GUI 钱包。务必下载最新的 Qtum 钱包(例如本文撰写时是 Skynet Release v1.2)。" W) C0 F# |$ f& f
注意:没必要下载 Qtum 区块链,因此建议指定以下命令行参数:
$ bin/qtum-qt -noconnect
5 R4 n/ N0 y( u; p: U v
使用 -noconnect 将阻止 qtum-qt(或qtumd)钱包/节点下载区块链。本文中,我们只在钱包上操作。
) |5 ]. Z* \: v7 f4 w/ w1 M! E
即使使用 -noconnect 命令行,钱包也会显示警告,似乎还是要连到 Qtum 网络 - 但实际上并非如此(这个小麻烦作为问题#315的一部分得到修复)。 你可以解除/隐藏警告。4 V2 Z' C9 l6 W+ f- N
回想一下,钱包文件(默认为 wallet.dat)安装目录(默认)跟操作系统有关:
4 X0 }3 S: }: h: Z2 B4 T& }; Y
Linux: ~/.qtum. Y' j2 Q# Z% U9 m" V" i
macOS/OSX: ~/Library/Application Support/Qtum- F9 p/ I& `0 O; T/ X, B# H
Windows: %APPDATA%\Qtum. u- E% M$ H* N6 a! A0 G- e( L
确保你可以找到 wallet.dat 文件。之后我们处理这个文件。
& J1 x9 x" V W( z. M* O7 q) M' ]1 {' {
调试控制台(Debug Console)$ [4 j8 g# }3 A) i
qtum-qt GUI 钱包包含一个内置的“调试”控制台,可以用控制台与钱包进行交互(比 GUI 功能多)。使用Debug Console 或多或少等同于使用 bin/qtum-cli 工具(即进行 RPC 调用)。
要访问调试控制台,选择“帮助”菜单栏下的“调试窗口”:
' s9 C$ H, j/ K6 E0 A
接下来,选择“控制台(Console)”1 z9 ?* K4 a+ G. U4 W+ ]
+ _* s1 I- c- i9 a+ P6 n
) d# y' r+ J1 {7 b! Q
在提示符处(在底部),可以输入 getwalletinfo 等命令:
; e1 b W8 r# ?
' W* S5 @3 _% U5 P$ o. ~
+ f& x! ]( d, P( h l2 t
按Enter / Return后,会有结果:; j4 t2 a, m8 H& ~# `9 B# Z' Q+ o- J
* u- V1 q, d9 Q- n. G% N" {+ o, _
可以输入 help 获取所有可用命令的列表。
; m0 U$ l6 n0 O0 z7 f1 ~+ D; o
HD 钱包
除非(奇怪地)指定其他方式(使用特殊的命令行选项),否则 Qtum 钱包类型就是HD 钱包。简单来说,这意味着钱包创建的地址是预先确定的。这很有用,因为每次分配新的 Qtum 地址时都不需要备份钱包。默认情况下,钱包预先创建 100 个地址,并根据需要添加更多地址。' M0 M+ h+ B: Q" F
正如注意事项部分所述,如果加密钱包,它也会更改主私钥 - 这意味着未来(预先确定的)地址(除加密前钱包中的地址)将会改变。
钱包地址转储(dump)到文件中
查看预创建的 HD 钱包地址的一种(可选)不安全方式是将钱包中的密钥和地址转储(dump)到文件中。钱包转储文件将包含所有(私)钥及其关联的 Qtum 地址 - 因此,这不推荐在打算保持安全的钱包上执行。! N/ w4 X6 a0 f" e# X; q
可能你想自定义 -datadir= 命令行参数(而不是 -noconnect)来实现上面这个操作。这会创建一个新钱包(即 wallet.dat 文件)和其他文件、目录等到你自定义的目录下。实现这个操作后,请删除这个临时文件夹。
用调试控制台(前面介绍过)输入:* N L" d2 t6 o( Y
> dumpwallet /tmp/wallet_dump.txt$ X* X/ c) N8 Q" G
注意:将 /tmp/wallet_dump.txt(上面)替换为你喜欢的目录/文件名。
) u3 {5 }" h; {
随便打开 /tmp/wallet_dump.txt。可以看到:2 y; b, J# G8 l7 ]! B$ _0 v) H
# Wallet dump created by Qtum v0.14.2.0-797c365-dirty! F, `- I G3 Q4 H ~
# * Created on 2017-09-04T22:01:27Z
# * Best block at time of backup was 16752 (9d57d56217fff0ba9fe948189529b6b05eab9634b511b96fad7665f2a6685a83),$ l7 w2 H [2 r
# mined on 2017-09-04T22:00:32Z
2 X- d* F! x" E/ i
# extended private masterkey: xprv9s21ZrQH143K32GwedMSgRTR4dFQeHX27y8QpyzdoUv58e9n4MfJiEwyAvJc974i48GGJMqrhA2tPQyYyr7FrUnh7vwUN3wUo2bUFCuj4w20 h+ k6 r6 Q B7 r. q
/ G* }1 a* t! J8 m+ L- i# U# R
L1Pu11NpYqNcozCYFpojbAff3sCMRoubgSJHN6S8Vc3BD8qaeug5 2017-09-04T21:55:04Z reserve=1 # addr=QLf8eTZwSMEsud9P1gBWUb4HM6u9asTH1o hdkeypath=m/0'/0'/9'/ ^6 v4 Q2 x7 t. J: P4 x" z
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'
...
# K4 o4 T, {) t' o- M1 a
L48dP3kLACS71g8czia14iJA5beepyYLBWpXgasgfHWbc8pAZZ6y 2017-09-04T21:55:04Z hdmaster=1 # addr=QaXBqRoPcFGfa3cuqYJ6nvAstZioKt2yBx hdkeypath=m
...
1 r# A W7 x5 v6 a/ o2 d2 F1 \
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'1 j) c5 ^) v) e. J2 W
L3Sh2JsPZw8dhVFWLCh1rupSPGwtjazUhsxFhfskRRCk4AzvEz8G 2017-09-04T21:55:10Z reserve=1 # addr=QiBpoHSfGwJbtJqRsNFTua7hGaMv8zGbGe hdkeypath=m/0'/0'/100'
& y! S4 @! Z. c$ M* e
# End of dump( ~! \% u6 E: o
( W5 S, p% G. \+ e! ]
大概有创建了 101 个地址(即 m/0’/0’/0’ 到 m/0’/0’/100’)再加上hdmaster。0 C5 Y) D$ x5 d1 |4 I2 [# x2 Z
1 s) ^0 F8 z x$ a7 }- R
备份钱包
5 i$ N# ?( v( v9 A
希望你找到你的 wallet.dat 文件了(参见前面的部分,找到它的位置)。有两个备份钱包的选择:2 {) K: R1 P$ `! ~5 Z) b) Z8 B/ p: W
6 ~( J' [2 } K! l) W
将wallet.dat文件复制到安全位置。
在调试控制台中运行 backupwallet 命令,将钱包文件写入安全位置。
选第一项的话,请确保 Qtum 钱包/节点程序(例如 qtum-qt)未运行。& |- v5 {. Y' N" Q; m1 q0 h' q8 d0 y
/ G+ p% R" ~2 a
选第二项的话,只需在 Debug Console 提示符下输入 backupwallet,获取有关如何使用该命令的帮助(即,它需要 1个 参数来指定目录或带有文件名的路径)。
确保将钱包备份文件放在安全的位置(例如安全的U盘里等)
0 _( f7 k7 w8 o$ L; |
加密钱包- j7 C1 y N# x: V
强烈建议在加密钱包之前先备份好钱包。
要加密钱包,请选择“设置”菜单栏下的“加密钱包…”选项:
}; M' _/ H+ R0 x7 K' i
接着,确保输入一个安全密码用来解锁钱包。
9 P; C- S) H( ^7 }0 `$ o; g
+ u% l* [! c, }& o+ a
阅读并接受警告(是的,请记住密码):
! J, y* U5 ^% D; N0 ^
* ?( u' t& A: C" d B
加密完成后,收到另一条消息:1 m) `- V) r' j8 }" K) h% S
4 M4 n# \2 O; C. ?3 Z& X, c
# E! l& a8 q. ]9 I5 h
单击“确定”,然后关闭钱包/节点程序(如qtum-qt)。* T& Z; C. r' f) }
关闭钱包/节点程序后,建议用前面提到的第一项备份钱包(即复制加密的 wallet.dat 文件),然后重启 qtum-qt。6 H; `/ V+ `8 l( f- o; F5 g0 U3 H' L
解锁钱包; j4 b: R9 D) q3 [
重启加密的 Qtum 钱包后,你会在右下角看到“锁定”图标:
; `6 `* {& h5 L& K' J) d( b d
0 d4 P/ f! n5 _1 I- g. S$ \2 r
这意味着(加密)钱包目前已被锁定。你不能用锁定的钱包 staking QTUM 代币。
注意:启动后的一段时间内,钱包可能看起来没有响应。这是正常的。: J1 C, v/ ]% s2 ~
要解锁钱包,请选择“设置”菜单栏下的“解锁钱包…”选项:
! E: \) t: g0 I" k; {' v" ?
! W7 F5 U6 N/ ~3 W8 }' u
然后,可以看到欢迎页面:
* U/ Q8 `! A* j" c+ Z
$ M* q0 b, q7 V& a
输入加密钱包时设置的密码。还可以选择是否只为 staking 而解锁钱包。如果选择这个选项,则你(或任何访问正在运行的钱包/节点的人)将无法从钱包中转移代币,或执行任何需要访问钱包的操作 - 例如将钱包转储(dump)到文件(在调试控制台中使用 dumpwallet 命令)。 不过,backupwallet 命令仍然有效。 t+ n, Y# H# S' l4 {. ~$ u$ L
5 c- w5 @6 q% {5 {
如果仅为 staking 解锁,你会注意到右下角的图标如下所示:
" e; z+ h% y; k* e; y
如果不是仅为 staking 解锁,你会看到一个略有不同的图标(和悬停消息):
7 u/ H- F) n" G
如果你刚刚在第一次加密钱包后就解锁钱包,我建议你再进行一次备份。
" z, b6 Y# J5 K
锁定钱包
' _4 H t7 N0 o( F3 ~1 h3 z' d
要再次锁定钱包(例如,如果想让钱包/节点保持运行而不staking 代币),只需选择“设置”菜单栏下的“锁定钱包…”选项:
恢复钱包9 c) T3 i9 h0 `
; ~, b$ z& `, I3 [
如果你完全丢失了正在运行的钱包(以及区块链区块数据),可以通过将(先前)备份的钱包文件复制到(跟操作系统有关)数据目录中,然后重启 Qtum 钱包,轻松恢复钱包/node程序(例如qtum-qt)。
1 {0 G2 @4 l& e1 B
如果数据目录不见了(比如你换了台新电脑),最简单的是:
. X! d' p2 A1 \+ |
使用 -noconnect 命令行参数启动 Qtum 钱包/节点程序,以便重新创建数据目录。
钱包/节点程序运行后(大约10秒左右),再次关闭它。
# d. N6 O$ T) O
将(跟操作系统有关的)数据目录中创建的 wallet.dat 文件替换为最新的钱包(即 wallet.dat 文件)备份文件。4 J- J! ^' Y: a; ^% n
7 c0 g2 k) `) l. c
不使用 -noconnect 命令行参数重启 Qtum 钱包/节点程序。/ I6 ~$ Z0 r9 a2 |9 `
% A+ B% ~% @% H5 s# m
上面重要的一步是确保钱包文件(即 wallet.dat 文件)在正确的(跟操作系统有关)目录。
注意:这不是Qtum(Quantum)团队的官方文章。我只是一个粉丝。
成为第一个吐槽的人