如果QTUM量子链打到了莱特币地址怎么办?

互联网 2019-06-26 15:43:42

近期,Qtum社群中有人不小心将QTUM发送到莱特币地址后,在热心的社区技术人员帮助下利用WIF的创建机制,尝试并找回了丢失QTUM,如果你也担心会出现这样的情况,不妨收藏本篇文章吧。

数字钱包的设计为了方便更多的社区用户,采用钱包导入格式(Wallet Import Format)来显示私钥。对于那些容易操作失误的人来说,私钥的某些特性可以让他们更加安全地使用加密钱包(见参考资料1),本文将会讲述WIF私钥的构造和分解,帮助找回发送到莱特币地址的QTUM。

1、如果我的QTUM打到了莱特币地址怎么办?

如果你不小心把QTUM发送到了其他地址,通常情况下,这些QTUM肯定就永久丢失了。

这个案例较为特殊,错误的地址属于莱特币钱包,但是这个地址恰是可以找回的。为什么这么说呢?因为莱特币和Qtum从钱包底层技术来说是“同父异母的兄弟”。这两款钱包都基于比特币开发的代码和功能,并分别做了一些修改和更新。莱特币核心钱包默认创建SegWit(隔离见证-支付给脚本哈希隔离见证)地址;这些地址以“M”开头,与部分以“M”开头的Qtum地址一样。

一定要确认好地址再发送! 一定要确认好地址再发送! 一定要确认好地址再发送!

在找回QTUM之前,先快速回顾下WIF私钥的特点。WIF有三个特点使得它比原生的64位字符的私钥更安全:

删除了易混淆字符的Base58编码;

用于标识区块链的1个字节;

用于校验和的4个字节;

2、base58 编码

私钥是64个十六进制(以16为基数)数字。中本聪在设计时为了防止长字符串和数字的结合容易出错,尤其是出现这些容易混淆的字符时:

“ I - 大写字母“i” l - 小写字母“L”;

O - 大写字母 “o”0 - 数字0;

/ - 正斜杠 = - 等号;

” 为了减少难以区分的字符串使得不能记住私钥,中本聪团队提出了base58编码,它只是简单地舍去了这6个容易令人混淆的字符。

对于base58编码来说,表示字母和数字的64个字符被映射到一个由58个字符构成的数据集中。现在你知道为什么在加密地址中从来没有看到“I”、“l”、“O”和“0”了吧,中本聪十年前就再也不用了。(见参考资料2)

3、区块链标识前缀

WIF的第一个字节(两个字符)将区块链定义如下:

已注册的bip-0044前缀见已注册的bip-0044 Token 前缀:https://github.com/satoshilabs/slips/blob/master/slip-0044.md

4、校验和

校验和是一种检测数字是否错误或损坏的技术。莱特币和Qtum使用SHA-256哈希算法为WIF私钥创建校验和,实际上他们应用了SHA-256算法两次。要获得正确的校验和结果,需要确保SHA-256哈希的输入是十六进制的数据,而不是ASCII文本。

将莱特币私钥更改为Qtum私钥的详细步骤见下面的步骤。如果您想复制这些步骤,这些私钥不会被混淆,他们对于莱特币和QTUM都是完全有效的。

5、创建一个WIF

介绍完毕,下面是创建Qtum WIF的步骤,由一个原生私钥开始:

添加一个区块链前缀 (对于Qtum主网而言是0x80)

使用SHA-256 哈希

再次使用SHA-256 哈希

将第二个SHA-256哈希的前8个字符作为校验和

整体使用base58进行编码

WIF生成完毕(见参考资料3)

丢失Qtum按照以下步骤执行,一步步地,将莱特币WIF转换为Qtum WIF 就可以找回来啦。

*私钥请保密,在线使用时请确保安全性

1、提取莱特币私钥

在您的莱特币核心钱包(需要被解锁)的控制台(帮助-调试窗口-控制台)中使用dumpprivkey命令:

dumpprivkey MALEJA87Syy9iTm14v7A7Jo7Sfx9J6jZZr

该命令将返回一个私钥

结果:

TB85YEE8uu23cFc7wZDEPkLdT2mwoBHHU18RfkE9QhsUcPDmHxoU

将私钥复制到文本文件并保存在计算机上.

退出莱特币钱包.

2、在你的电脑浏览器中载入这两个网址

https://incoherency.co.uk/base58/

https://anyhash.com/sha256

这些站点加载完毕后,断开计算机的网络连接,这些站点仍然可以工作

3、 将步骤1中生成的私钥解码为原始十六进制数据

在https://incoherency.co中,将步骤1中的私钥复制粘贴到右侧的“base58数据”(下图未显示),并按下解码按钮。(将单选按钮设置为十六进制)

结果b0f0cf31978d2b92ca2a6f4b72de5458a944944f89cba3932bb2a6fd72eef891b501d19dc203

删除前面的“b0”(用于莱特币主网)和尾部的8个字符“d19dc203”(校验和):

f0cf31978d2b92ca2a6f4b72de5458a944944f89cba3932bb2a6fd72eef891b501

这就是原生的64个十六进制的字符私钥

4、创建一个Qtum WIF 私钥

在前面添加字符“80”(80 -用于Qtum主网)

结果:

80f0cf31978d2b92ca2a6f4b72de5458a944944f89cba3932bb2a6fd72eef891b501

5、https://anyhash.com/sha256生成SHA256哈希

请确保选中“十六进制”复选框

复制粘贴第四步的结果到 “输入”框中:

结果:

b263d8dfa27c2558e41c125e79341a81067c6b0d32d077cc58df85fe7a9c8a24

6、生成第二个 SHA256 哈希

将第五步的结果再次复制粘贴到AnyHash 站点的 “输入” 框中。

结果:

2e2a2aa01a55f8d928492f793d6e90b2fd24572494ac79d47a97136330b990d9

7、将2e2a2aa0作为校验和添加到上面步骤4中

结果:

80f0cf31978d2b92ca2a6f4b72de5458a944944f89cba3932bb2a6fd72eef891b5012e2a2aa0

8、在 https://incoherency.co.uk/base58/中进行base58 编码将步骤7的结果复制粘贴到左侧并按下编码按钮

结果:

L5Hp6UvxWX3SqQyFPvGNBPoFWB8dj6GPeoEAowbbqjhK6VboC1QK

这就是Qtum的WIF 私钥了, 复制并保存到文本文件中

退出浏览器,重启计算机并且重新连接到网络

9、将此私钥导入至Qtum Core钱包中

启动Qtum Core钱包,同步区块链并解锁钱包。

在控制台中使用命令importprivkey并复制粘贴步骤8中的私钥:

importprivkey L5Hp6UvxWX3SqQyFPvGNBPoFWB8dj6GPeoEAowbbqjhK6VboC1QK

钱包将重新扫描几分钟,读取整个区块链以获取新地址的余额,然后在控制台会显示结果“null”。如果你查看文件---接收地址,你应该会看到新地址:MALEJA87Syy9iTm14v7A7Jo7Sfx9J6jZZr

以“M”开头的Qtum地址是“p2sh-segwit”(支付给遗留包装的脚本哈希隔离见证)地址。导入私钥还会在钱包中创建另外两个以“Q”和“qc1”开头的地址:

Qdkz3dRBC4YH8HjhDTE6UBN59MjhsfCFQZ — “legacy” 非隔离见证地址

qc1qhskagsa2t763vhkqf8cq9ph07eynazxea4zml5 — “bech32” (比特币增强提案173) 原生的隔离见证地址

以上三个都是有效的Qtum地址

10、发送QTUM (清除私钥)

因为该私钥已经暴露在钱包之外(在您计算机上的文本文件中),所以最好将这个新地址的全部余额发送到另一个地址(该地址的私钥没有被暴露)。

这可以是同一个钱包里的另一个地址,如果要这样做,选择发送,并在QTUM控制功能中,选择输入…按钮,然后选择从这个新地址发送。

相关资讯Relevent