【翻译】 钱包和密钥

原文: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 钱包运行在浏览器上,并不需要下载区块链,而是通过专用全节点连接到区块链。

变色龙示威,[Yathin S Krishnappa](https://commons.wikimedia.org/wiki/User:Yathin_sk)摄,裁剪过

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 钱包选项:

  1. 生成新钱包 – 创建一个随机地址,下载一个密钥文件

  2. 用助记符创建 – 创建 12 个种子词生成的一个随机地址

  3. 从助记符恢复 – 使用 12 个 bip-039 种子词从另一个钱包恢复一个地址

  4. 从 WIF 恢复 – 从一个密钥中恢复一个地址

  5. 从手机钱包恢复 – 使用 12 个 “字典” 种子词从一个 Qtum 手机钱包中恢复一个地址

  6. 从密钥文件恢复 – 从 Web 钱包创建的密钥文件中恢复一个地址

  7. 从 Ledger 恢复 - 允许使用安全存储在 Ledger 硬件钱包中的私钥进行交易

让我们逐个详细地介绍这些选项。

  1. 生成新钱包

生成新钱包会创建一个随机地址并下载一个密钥文件,其名称由 unix 纪元时间(以毫秒为单位)给出,例如 “1532053935952.txt”,其中包含由密码加密的文本,例如:

1
{“version”:”0.1",”content”:”tFz3ctzaITRniFjD6lDm1m8Zyu7LeNjNm/j2ao/hxoIhYAwqlC9iZYZ9TCermbrxF2ljd/wTXnRq/Ca6nYPYZNJ4GC0=”}

将密钥文件保存在计算机上,并备份到多个USB设备。重新启动 / 恢复用“生成新钱包”选项创建的钱包的唯一方法是通过加载密钥文件并输入密码来“从密钥文件恢复”(请参阅​​下面的步骤6)。

使用又长又强的密码,而不是像“12345”这样的简单密码。

  1. 用助记符创建

“用助记符创建” 创建 12 个种子词生成的一个随机地址。你必须重新输入那 12 个种子词,确保你以及保存好种子词了。

用这个选项你只要下面的 3 步就能从助记符(种子词)中恢复钱包。你也能(必须能)通过“转储为密钥文件”创建一个密钥文件来备份钱包。现在你有 2 种方式恢复钱包,使用种子词和密钥文件。这很有效地使你恢复钱包的能力翻倍,但也意味着你现在需要安全地存储三样东西(密码,种子词和密钥文件)。

注意,助记符不同于 Core 钱包密码短语(这是一种自由格式的文本密码短语并且不是种子词)

  1. 从助记符恢复

“从助记符恢复”使用 12 个 bip-039 种子词从另一个钱包恢复一个地址。输入种子词时,他们必须和原种子词字字匹配。这意味着全部小写(永远没有大写字母)因为这是种子词生成的形式。任何差异或额外单词都会为钱包创建一个不同的随机的地址,也就是它会显示 0 零钱,这很危险,如果你发送 QTUM 给这个新地址的话。确保你检查过地址并确认那就是你要的地址。安全一点的是从助记符恢复以保存密钥文件,并使用密钥文件恢复钱包以打开钱包。

  1. 从 WIF 恢复

WIF 电子钱包导入格式(Wallet Import Format) 是私钥一种纠错和缩短的格式[参考文献3]。你遇到的大多数私钥都使用WIF,通常长度为52个字符,而本地私钥使用 64 个十六进制字符。 Web钱包和Core钱包提供私钥作为WIF,此选项将允许从WIF私钥恢复钱包地址。

  1. 从手机钱包恢复

“从手机钱包恢复”使用 12 个 “字典” 种子词从一个 Qtum 手机钱包中恢复一个地址。要让这种恢复正常工作,必须为每个字符正确输入手机钱包种子词(现在这听起来熟悉吗?)。单词总是小写,永远不会有大写字符。 此外,请勿在任何单词后面输入尾随空格,否则生成一个非常危险的新随机地址。 请确认这个选项创建的地址与你手机钱包中的地址相匹配(否则你输入的种子词不正确)。

选择 CONFIRM 后,选择要恢复的地址:

  1. 从密钥文件恢复

“从密钥文件恢复”从 Web 钱包创建的密钥文件中恢复一个地址。从电脑加载密钥文件并输入密码来恢复钱包地址。

  1. 从 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


参考:

  1. bip-039 参数bip-039种子词 英语单词表。 如果你的 bip-039 种子词不在这个表中,那么你写错了!

  2. “字典”种子词列表。 如果你的种子词不在这个列表中,你就错了!

  3. 钱包导入格式(Wallet Import Format),比特币的一个例子

  4. 转移私钥 - Core 到 Core 钱包(显示为 qtum-qt Desktop GUI Core 钱包)

在导出私钥之前,最好更新防病毒软件并运行完整的防病毒扫描。 永远不要把私钥给任何人,他们可以拿走你的 QTUM。

  1. 如果你有加密钱包,请解锁钱包(而不是仅用于 staking)
  • 转到“设置” - “解锁钱包”,取消选中“仅限 staking”,输入你的密码并按“确定”
  • 你应该看到小挂锁符号搭扣打开了

  1. 选择要导出私钥的 Qtum 地址
  • 转到“文件” - “接收地址…”,然后复制 Qtum 地址以导出私钥

  • 选择地址并按 COPY,关闭该窗口

  • 如果你的钱包有多个持有 QTUM 的接收地址,你可以找到哪些地址持有 QTUM,请转到“文件” - “调试窗口” - “控制台”并输入命令 listaddressgroupings 。

    滚动列表并复制保存 QTUM 的地址以导出这些私钥

  1. 打开控制台并输入命令以导出私钥
  • 转到“文件” - “调试窗口” - “控制台”

  • 在控制台底部,开始输入命令dumpprivkey

  • 然后粘贴你刚刚复制的地址。 这个命令看起来像这样:

    dumpprivkey QskjfhGF28374Daskfjh238742837482374

  • 输入命令

  1. 私钥将作为包含 52 个字符的文本字符串显示在控制台上
  • 将私钥复制到文本文件中并保证其安全。这是一个未加密的私钥,任何拥有这个私钥的人都可以使用你的 QTUM。 切勿将私钥交给任何人。
  1. 要在第二个 Qtum Core 钱包上导入这个私钥,请启动该钱包并将其解锁(如果已加密)

  2. 在控制台中输入 importprivkey 命令

  • 转到“文件” - “调试窗口” - “控制台”,并在底部开始输入命令importprivkey

  • 复制并粘贴先前转储的私钥。 该命令看起来像这样:
    importprivkey Siufy238746FGasj127356asjdhYTVss93845kajsfmyQTUM

  • 输入命令

  • 钱包将重新扫描本地区块链大约两分钟,以查找此新地址的交易,在此期间,调试窗口标题将显示“无响应(Not Responding)”

  • 然后响应 “null”

  • 你应该看到新私钥的未花费的交易的值已添加到钱包的总余额中。

你可能要将所有转移过的私钥(它将与你在步骤 2 中开始的地址)中的所有 QTUM 发送到另一个地址,因为私钥已导出并暴露在加密钱包之外(丢弃这个私钥)。

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器