主页 > imtoken冷钱包安全吗 > 一篇文章了解HD Wallet |一套征服世界的助记词

一篇文章了解HD Wallet |一套征服世界的助记词

imtoken冷钱包安全吗 2023-09-10 05:10:11

今天我们将讨论一些基本但刚需的内容。

前言

不知道你在使用钱包的时候有没有想过一个问题?

为什么只能用一套助记词控制多条链上的资产?通常情况下,比特币不应该在比特币链上,以太坊在以太坊链上吗?地址由私钥和公钥派生而来。为什么不同地址的助记符都一样?

例如在比特派钱包上?多链钱包是否只需要备份一套助记词?

为什么比特币要求为每笔交易生成一个新地址(新私钥)?

在了解私钥管理方法之前,我们首先要解决一个问题:为什么比特币要求每笔交易都需要生成一个新地址(新私钥)?如果我只有一个比特币钱包,我不就只备份一个私钥吗?

比特币有一种特殊的兑换机制。在频繁交易的过程中,会产生大量找零地址,每个地址对应一个密钥对(私钥+公钥)。那么什么是找零地址呢?假设 A 有 20 BTC,他需要将 5 BTC 转给用户 B。交易的输出部分应该是:A 支付 5 BTC 给 B,15 BTC 支付给 A。

你找到了吗?这个有找零(15 BTC),转回A的地址就是找零地址。为了匿名区块链钱包地址是如何生成的,这个找零地址一般指定为新地址。

当然,你可以使用和找零地址一样的地址,这样你就只备份了一个私钥区块链钱包地址是如何生成的,或者你只有一个比特币地址,但一般不会。

一般情况下,找零地址是一个新地址,A的每笔交易的找零地址都是一个全新的地址,不是固定的。这样做的好处是可以保护用户的隐私,避免一些安全风险。

(关于变化,我这里简单解释一下,有兴趣的可以找一些文章,了解一些UTXO模型。)

非确定性钱包(Non-deterministic wallet)钱包)

根据上述,一个钱包在用户交易的过程中需要生成大量的私钥。非确定性钱包生成的私钥没有关联,这意味着私钥的管理和备份会变得非常麻烦。如果用户的交易量足够大,地址数量会变得非常多,钱包需要保存的私钥数量也会非常多。钱包和用户都需要经常备份,否则有丢失 BTC 的风险。

掌握比特币说:

例如,Bitcoin Core 客户端预先生成 100 个随机私钥,从一开始就生成足够多的私钥并且每个密钥只使用一次。图片

但是,现在非确定性钱包已被确定性钱包所取代。

确定性钱包

确定性钱包,你可以简单理解为确定性钱包可以通过一个种子推导出一系列子私钥。备份时,只需要备份种子即可。完美解决了非确定性钱包中私钥不相关,备份不便的问题。因此,确定性钱包也可以称为种子钱包。

分层确定性钱包 | HD Wallet(分层确定性钱包)

HD Wallet 是现在最常见的“高级版”确定性钱包。最早的实现基于BIP32协议(目前常用的BIP39和BIP44协议)。按照 BIP32 协议的定义,HD 钱包以树形结构导出密钥(私钥和公钥),即种子生成主私钥(或主密钥对),然后通过主私钥,可以推导出一系列子私钥,每个子私钥又可以推导出一系列孙密钥,以此类推,可以不断推导出来。

从主私钥派生出子私钥的过程是不可逆的。子私钥不能从父私钥向上推导,同级私钥也不能横向推导。因此,可以以非常安全的方式对私钥进行分层管理。

BIP39 协议

虽然只需要备份一个种子,就可以掌握大量的子私钥,但是BIP32协议的种子是一个16字节的十六进制随机数,非常难记。于是比特币开发社区在BIP39协议中提出了一种助记词方案。

说到助记词,大家应该都很熟悉了。每次您注册您的钱包时,系统都会要求您备份它。很多人可能会误以为助记词是为了方便保存私钥,是钱包公司创建的一种保存私钥的方式。其实恰恰相反,BIP39协议中提出的助记词是为了方便记录种子,而主私钥就是从助记词中衍生出来的。

生成私钥的整个过程很复杂。可以简单理解为,助记词是使用PBKDF2转换成种子,然后通过HMAC-SHA512生成主私钥。

用十六进制表示的种子:0C1E24E5917779D297E14D45F14E1A1A 用助记词表示的种子:军车防御携带嫉妒真垃圾声称回声媒体使紧缩

BIP44 协议

从协议的数字化来看,不难知道这是又一个升级版。 BIP44 基于 BIP32 协议,对 HD 钱包树形结构中的每一层赋予特殊意义(5 层)。同一个种子可以支持多币种、多账户等。

每一层的定义如下: m / purpose' / coin_type' / account' / change / address_index 第二层中的“coin_type”指的是不同的币种,多链HD钱包可以在此分类级别开发不同系统的数字货币钱包。比如比特币钱包、以太坊钱包……

到此,文章开头的问题就彻底解决了:为什么我可以只用一个私钥/助记词来控制多条链资产?

由于采用了BIP44协议的HD钱包,可以分离不同系统币种的私钥。意思是主私钥可以生成比特币钱包私钥,也可以生成以太坊钱包私钥……而且由于使用了相同的主私钥和助记词,用户备份非常方便。

总结

1、由于比特币的UXTO模型,每次交易最好生成一个新地址作为找零地址,每个地址对应一个私钥,也就是说比特币交易频繁,大量生成私钥。 2、非确定性钱包生成的私钥没有关联,对于钱包和用户备份非常不方便。 3、HD钱包生成的私钥是相关的,只需要记住一个种子就可以访问所有地址的钱,无需为每个地址备份私钥,HD钱包基于在BIP44协议上还可以支持多币种、多账户。 4、BIP32、BIP39、BIP44等,是HD钱包技术的底层协议。 HD钱包主要基于BIP-32协议。助记符主要基于 BIP-39 协议。多币种多账户钱包,基于BIP-44协议

另外:HD钱包最适合比特币

HD钱包几种协议(BIP32/BIP39/BIP44)最适合的就是比特币。主要是因为比特币是基于UTXO的,HD钱包可以用来为每笔交易分配一个新的地址,而公开的以太坊和EOS等链都使用账户系统,也就是说,无需更改地址,交易后的余额将存储在旧账户中。

但是,在BIP44协议之后,HD Wallet允许一个钱包管理多个货币和多个账户,这已经是一个非常实用和高效的选择。