【翻译】 钱包和密钥
原文:https://medium.com/@jb395official/wallets-and-keys-july-23-2018-92abf2a2d2bf
译者:中山大学数学学院(珠海)林学渊
大二时给量子做的翻译,转载注明出处,谢谢
Wallets and Keys — July 25, 2018
钱包和密钥-2018年7月25日
本文考虑钱包和密钥。先简要介绍,再上例子。大多数例子基于浏览器上的 Qtum Web 钱包,类似于以太坊钱包 MyEtherWallet和MyCrypto。 Qtum Web 钱包运行在浏览器上,并不需要下载区块链,而是通过专用全节点连接到区块链。
Web 钱包是一个强大的变色龙,提供了很多恢复其他类型Qtum钱包的方式。没有 Web 钱包恢复不了的钱包(如果你用本博客的技术的话)。注意Web钱包具有完整QRC20令牌功能。
注意事项:本博客和钱包恢复步骤包括处理私钥和种子词。在你尝试这些步骤前,确保你完全理解流程且电脑没有恶意软件和病毒。简单地发送QTUM或代币到一个新钱包比乱动私钥更安全,但有时无法发送代币,比如,你的手机钱包掉马桶或被忘在浴缸里一整夜。永远不要把你的私钥或种子词给别人因为他们能拿走你的币。
我是一名独立研究员,偶尔写博客和主持社交媒体,十分中意Qtum的技术指导。如果你对本文有想法或批评,请在社交软件上发给我或在下面评论。
介绍
TL;DR Qtum 钱包的安装使用了随机生成的私钥或种子词。通过导出私钥或种子词,你能在各种钱包之间转移你的 Qtum 地址。重要的是保证私钥和种子词安全–保持你的私人私密!
你知道钱包在区块链建立它们的身份时使用了一个 Qtum地址 “Q…”。 这个地址生成自公钥,而公钥生成自私钥。
Satoshi 给比特币取了错误的名字 “钱包”, 因为钱包实际上不存任何币或代币,它们存在区块链里。“钱包”的正确名字应该是“密钥库”因为钱包的主要工作是保存和管理私钥,通过私钥来支持交易。
私钥和种子词
一个私钥是一个简陋的字符串,但它是通往王国的关键。私钥(不用密码)允许存储在由私钥生成的地址中的QTUM访问。你需要十分小心地使用私钥,因为如果任何一个人(黑客、恶意软件、甜言蜜语的热心人)拿了你的私钥,他们就可以拿了你的钱。
私钥也能用种子词生成。典型的是,钱包使用的种子词有两种,桌面钱包使用 bip-039 种子词,手机钱包使用“字典”种子词。这两种不相容,这个差别由 Web 钱包管理,它两种都能接受,是 bip-039 种子词则使用 “从助记符中恢复” ,是“字典”种子词则使用“从手机钱包恢复”。
比特币改进协议(Bitcoin Improvement Protocol 39 (bip-039))给出了规则,生成私钥要使用从 2,048 个单词列表中导出的 12 个种子词[参考文献1]。手机钱包使用的“字典”单词一列是 4,216个类似bip-039的单词[参考文献2]。
输入种子词来恢复钱包有风险,因为私钥是从种子词里精确地生成而来,多一个符号或一个空格都会生成一个完全不同的私钥和完全不同的 Qtum 地址。如果你错输了种子词,你会创建给钱包创建一个你不期望的 Qtum 地址。如果你发币给那个地址,你很有可能永远无法再输入那个错字恢复钱包地址,这就意味着你的币永久丢失了。
下图显示了用于创建钱包或恢复钱包的所有 Web 钱包选项:
生成新钱包 – 创建一个随机地址,下载一个密钥文件
用助记符创建 – 创建 12 个种子词生成的一个随机地址
从助记符恢复 – 使用 12 个 bip-039 种子词从另一个钱包恢复一个地址
从 WIF 恢复 – 从一个密钥中恢复一个地址
从手机钱包恢复 – 使用 12 个 “字典” 种子词从一个 Qtum 手机钱包中恢复一个地址
从密钥文件恢复 – 从 Web 钱包创建的密钥文件中恢复一个地址
从 Ledger 恢复 - 允许使用安全存储在 Ledger 硬件钱包中的私钥进行交易
让我们逐个详细地介绍这些选项。
- 生成新钱包
生成新钱包会创建一个随机地址并下载一个密钥文件,其名称由 unix 纪元时间(以毫秒为单位)给出,例如 “1532053935952.txt”,其中包含由密码加密的文本,例如:
1 | {“version”:”0.1",”content”:”tFz3ctzaITRniFjD6lDm1m8Zyu7LeNjNm/j2ao/hxoIhYAwqlC9iZYZ9TCermbrxF2ljd/wTXnRq/Ca6nYPYZNJ4GC0=”} |
将密钥文件保存在计算机上,并备份到多个USB设备。重新启动 / 恢复用“生成新钱包”选项创建的钱包的唯一方法是通过加载密钥文件并输入密码来“从密钥文件恢复”(请参阅下面的步骤6)。
使用又长又强的密码,而不是像“12345”这样的简单密码。
- 用助记符创建
“用助记符创建” 创建 12 个种子词生成的一个随机地址。你必须重新输入那 12 个种子词,确保你以及保存好种子词了。
用这个选项你只要下面的 3 步就能从助记符(种子词)中恢复钱包。你也能(必须能)通过“转储为密钥文件”创建一个密钥文件来备份钱包。现在你有 2 种方式恢复钱包,使用种子词和密钥文件。这很有效地使你恢复钱包的能力翻倍,但也意味着你现在需要安全地存储三样东西(密码,种子词和密钥文件)。
注意,助记符不同于 Core 钱包密码短语(这是一种自由格式的文本密码短语并且不是种子词)
- 从助记符恢复
“从助记符恢复”使用 12 个 bip-039 种子词从另一个钱包恢复一个地址。输入种子词时,他们必须和原种子词字字匹配。这意味着全部小写(永远没有大写字母)因为这是种子词生成的形式。任何差异或额外单词都会为钱包创建一个不同的随机的地址,也就是它会显示 0 零钱,这很危险,如果你发送 QTUM 给这个新地址的话。确保你检查过地址并确认那就是你要的地址。安全一点的是从助记符恢复以保存密钥文件,并使用密钥文件恢复钱包以打开钱包。
- 从 WIF 恢复
WIF 电子钱包导入格式(Wallet Import Format) 是私钥一种纠错和缩短的格式[参考文献3]。你遇到的大多数私钥都使用WIF,通常长度为52个字符,而本地私钥使用 64 个十六进制字符。 Web钱包和Core钱包提供私钥作为WIF,此选项将允许从WIF私钥恢复钱包地址。
- 从手机钱包恢复
“从手机钱包恢复”使用 12 个 “字典” 种子词从一个 Qtum 手机钱包中恢复一个地址。要让这种恢复正常工作,必须为每个字符正确输入手机钱包种子词(现在这听起来熟悉吗?)。单词总是小写,永远不会有大写字符。 此外,请勿在任何单词后面输入尾随空格,否则生成一个非常危险的新随机地址。 请确认这个选项创建的地址与你手机钱包中的地址相匹配(否则你输入的种子词不正确)。
选择 CONFIRM 后,选择要恢复的地址:
- 从密钥文件恢复
“从密钥文件恢复”从 Web 钱包创建的密钥文件中恢复一个地址。从电脑加载密钥文件并输入密码来恢复钱包地址。
- 从 Ledger 恢复
这个选项与其他选项的工作方式不同。“从 Ledger 恢复”允许使用安全存储在 Ledger 硬件钱包中的私钥进行交易。对于这个选项来说,私钥不会离开硬件钱包,而是 Ledger 签署交易(允许手动验证)和批准交易。
要使用 Ledger 硬件钱包,请在 Web 钱包上选择“从 Ledger 恢复”,连接你的 Ledger,登录并启动 Qtum 应用程序,然后选择CONNECT 来让 Web 钱包连接到 Ledger。
选择默认路径 m/44’/88’/0’/0 并单击绿色挂锁按钮:
在屏幕上默认路径 m/44’/88’/0’/0 选择所需的地址,然后单击绿色挂锁按钮:
这仅仅会启动标准 Web 钱包页面,因为私钥仍然锁定在Ledger中,没有可用的私钥,并且“转储到密钥文件” 按钮不可用。
测试网例子
接下来是在各种 Qtum 钱包之间转移私钥或种子词来恢复钱包的一些真实示例。在本练习中,我使用Qtum Testnet,如果你需要在 Testnet 上进行复习,请参阅这个博客。
让我说我对 Testnet QTUM 的价格发展感到非常失望。似乎 Testnet QTUM 大佬 正在操纵这种币抑制价格,这对于 Testnet QTUM 持有者来说是很伤心。 没有价格升值,而且这种币似乎永远停留在 0 satoshis。 Testnet QTUM 在任何主要交易所,任何小型交易所或任何交易所都没有交易对。 它基本上是一个毫无价值的币,我们唯一可以做的就是在 Qtum Testnet 上进行测试,所以我们就这样做。
A. 手机到 Web 钱包
要在网络钱包上恢复 Qtum 手机钱包,请在移动设备上转到个人资料 - 电子钱包备份并输入你的个人识别码以查看种子词(你之前也应保存它们)。 在 Web 钱包上,选择“从手机钱包恢复”,准确输入种子词,然后选择确认。 从 Qtum 地址列表中(除非你在移动设备上选择了其他地址,否则应该是最重要的地址)找到所需的 Qtum 地址并选择 CHOOSE。检查恢复的地址是否与你的移动钱包地址相同(如果没有,请重新输入种子词并仔细检查所有字符)。使用“转储作为密钥文件”成功还原后,你可能要备份密钥文件。
B. Core 到 Web 钱包
在 Qtum Core 钱包(显示 qtum-qt)上,选择 “帮助” - “调试窗口” - “命令”,并输入 dumpprivkey 命令需要的所有地址(有关多个地址的信息,请参阅参考资料4)。 复制 WIF 私钥,这里是 “cPuz…”。 在 Web 钱包上选择“从 WIF 恢复”,粘贴私钥,然后单击确认。 使用“转储为密钥文件”成功还原后,你可能要备份密钥文件。
C. Web 到 Core 钱包
这与上面的 B 正好相反。 在 Web 钱包上选择“查看钱包信息”,查看私钥并复制私钥。 在 qtum-qt Core 钱包上选择“帮助” - “调试窗口” - “控制台”并输入命令 importprivkey 并粘贴私钥:
Core 钱包将扫描区块链一两分钟,调试窗口标题将显示(Not Responding),Console 响应为“null”,你应该看到新地址加了 QTUM 余额。 你应该对 wallet.dat 文件重新备份,因为它包含一个新的私钥。
D. 手机到 Core 钱包
显然,做 A - 手机到 Web 钱包再做 C - Web 到 Core 钱包。
E. Qbao 到 Web 钱包
在Qbao上转到“我” - “助记符导出” - 输入你的 PIN(密码)并复制助记符(12个种子词 - 你之前应该保存这些)。 在 Web 钱包上,选择“从手机钱包恢复”,并仔细输入12个种子字(无额外空格)并选择确认。 通过选择 CHOOSE 从“从手机钱包恢复”列表中选择所需的地址。 你可能要使用“转储为密钥文件”来保存密钥文件。
F. Electrum 到 Web 钱包
要使用种子词将地址从 Electrum 钱包转移到 Web 钱包,你需要在初始安装中将 Electrum 设置为与 Qtum 手机种子词兼容(然后使用手机钱包种子词来恢复 Electrum 上的手机钱包 )。这个设置的 Electrum 配置截屏为:
在这个截图之后,你输入手机钱包种子词(这些单词也与“从手机钱包中恢复”的 Web 钱包选项兼容)。
如果你尚未将 Electrum 钱包设置为与手机钱包兼容,则可以使用私钥恢复 Web 钱包上的 Electrum 钱包。 在 Electrum 钱包上选择“钱包” - “私钥” - “导出”,你将导出文件 qtum-electrum-private-keys.csv 或只复制一个私钥。 在 Web 钱包上选择“从 WIF 恢复”,粘贴私钥并选择确认。 检查钱包地址是否正确。 你可能需要使用“转储为密钥文件”来保存密钥文件。
F. Core 到 Core
见下面的参考文献4。
我希望这个关于私钥和种子词的解释有助于你理解钱包。请记住,钱包不会存储硬币或代币。 硬币和代币总是存储在区块链中,但钱包存储私钥并使用私钥管理交易。 直接使用私钥和种子词时请务必小心。 确保你的计算机不含病毒和恶意软件,并且永远不要使用在线存储来存储私钥,种子词或密码
保持在线安全。
Jackson
参考:
bip-039 参数。 bip-039种子词 英语单词表。 如果你的 bip-039 种子词不在这个表中,那么你写错了!
“字典”种子词列表。 如果你的种子词不在这个列表中,你就错了!
钱包导入格式(Wallet Import Format),比特币的一个例子。
转移私钥 - Core 到 Core 钱包(显示为 qtum-qt Desktop GUI Core 钱包)
在导出私钥之前,最好更新防病毒软件并运行完整的防病毒扫描。 永远不要把私钥给任何人,他们可以拿走你的 QTUM。
- 如果你有加密钱包,请解锁钱包(而不是仅用于 staking)
- 转到“设置” - “解锁钱包”,取消选中“仅限 staking”,输入你的密码并按“确定”
- 你应该看到小挂锁符号搭扣打开了
- 选择要导出私钥的 Qtum 地址
转到“文件” - “接收地址…”,然后复制 Qtum 地址以导出私钥
选择地址并按 COPY,关闭该窗口
如果你的钱包有多个持有 QTUM 的接收地址,你可以找到哪些地址持有 QTUM,请转到“文件” - “调试窗口” - “控制台”并输入命令 listaddressgroupings 。
滚动列表并复制保存 QTUM 的地址以导出这些私钥
- 打开控制台并输入命令以导出私钥
转到“文件” - “调试窗口” - “控制台”
在控制台底部,开始输入命令dumpprivkey
然后粘贴你刚刚复制的地址。 这个命令看起来像这样:
dumpprivkey QskjfhGF28374Daskfjh238742837482374
输入命令
- 私钥将作为包含 52 个字符的文本字符串显示在控制台上
- 将私钥复制到文本文件中并保证其安全。这是一个未加密的私钥,任何拥有这个私钥的人都可以使用你的 QTUM。 切勿将私钥交给任何人。
要在第二个 Qtum Core 钱包上导入这个私钥,请启动该钱包并将其解锁(如果已加密)
在控制台中输入 importprivkey 命令
转到“文件” - “调试窗口” - “控制台”,并在底部开始输入命令importprivkey
复制并粘贴先前转储的私钥。 该命令看起来像这样:
importprivkey Siufy238746FGasj127356asjdhYTVss93845kajsfmyQTUM
输入命令
钱包将重新扫描本地区块链大约两分钟,以查找此新地址的交易,在此期间,调试窗口标题将显示“无响应(Not Responding)”
- 然后响应 “null”
- 你应该看到新私钥的未花费的交易的值已添加到钱包的总余额中。
你可能要将所有转移过的私钥(它将与你在步骤 2 中开始的地址)中的所有 QTUM 发送到另一个地址,因为私钥已导出并暴露在加密钱包之外(丢弃这个私钥)。