主页 > imtoken官方版 > 比特币区块链“5” | 钱包技术细节种子创建过程

比特币区块链“5” | 钱包技术细节种子创建过程

imtoken官方版 2023-02-16 07:26:02

比特币区块链「五」 | 钱包技术细节种子的创建过程插图

比特币区块链「五」 | 钱包技术细节种子的创建过程插图1

上一本书说,如果你要开发一个比特币钱包,它应该被构建成一个 HD 钱包。 那么,钱包如何运作? 钱包的行业标准是什么? 由于确定性钱包的密钥可以通过种子生成,HD 钱包用户可以仅使用原始种子生成所有密钥。 钱包的细节将在两篇文章中介绍。 第一部分介绍钱包种子是如何生成的,第二部分介绍如何使用种子创建HD钱包。 因此,本文将重点介绍创建 torrent 的过程。 本文结构如下:

全文结构 1. BIP比特币改进提案

比特币提案是为比特币社区提供信息或描述比特币的新功能、流程和环境的设计文档。 根据BIP-01,即BIP 01.Bitcoin的目的和准则,BIP分为标准BIP、信息BIP和过程BIP三种类型。 BIPs的文档在里面。这里简单介绍一下这三个BIPs:

[1] 标准BIP

描述影响比特币实施的拟议变更,此类提案具有“比特币行业标准”功能。 例如网络协议的变化、区块有效性规则的变化等。这类标准的主要作用是提出新功能、新标准、新改进,代表比特币社区的共识和建议。

[2] 信息BIP

描述比特币的设计问题,或者需要比特币社区的一般指导或信息创建比特币钱包,但不需要新功能。 此类 BIP 并不代表比特币社区的共识,读者和实施者可以忽略此类信息。

[3] 流程类BIP

描述一个比特币流程,或对该流程提出更改建议。 这种类型的 BIP 类似于标准 BIP,但适用于比特币协议本身以外的领域。 这样的 BIP 可能会提出一个实施方案,但该实施方案并未在比特币的代码库中实施。 BIP的流程需要社区的共识,用户不能随意忽略。

因此,在三类BIP协议中,信息型BIP可以忽略不计,而标准型BIP和过程型BIP对于比特币网络的完善非常重要,不容忽视。 以下比特币钱包标准源自这些标准 BIP。

2. 通用钱包标准

比特币钱包技术相对成熟,当然也有一些行业通用的标准。 这些行业标准使比特币钱包具有广泛的互操作性、易用性、安全性和灵活性。 常用标准有:

[1]助记词,基于BIP-39

[2] HD钱包,基于BIP-32

[3] 多用途HD钱包结构,基于BIP-43

[4] 多币种多账户钱包,基于BIP-44

这些标准已被广泛的软件和硬件钱包采用,使它们都可以互操作。 用户可以将一个钱包生成的助记词导入另一个钱包,恢复所有交易、密钥和地址。

支持这些标准的软件钱包包括(按字母顺序排列)、Copay、HD 等。 支持这些标准的硬件钱包包括(按字母顺序排列)和其他。 如果你打算开发一个比特币钱包,那么它应该被构建为一个 HD 钱包,种子编码为助记符以备备份,遵循 BIP-32、BIP-39、BIP-43 和 BIP-44 标准。

3.助记词(BIP-39)| 种子创建过程

助记符使用一系列英文单词来编码种子,该种子对应于确定性钱包中的随机数。 简单来说,助记词就是一串单词形式的种子,记住助记词就可以找回钱包。

确定性钱包是通过种子推导创建的。 为了便于使用,种子被编码为助记符。 种子是程序底部的 128 到 256 位随机数。 助记词是面向用户的 12 到 24 个单词的随机序列。 两者是统一事物的两种不同表现形式,本质是一样的。 下表显示了助记符及其对应的种子:

比特币区块链「五」 | 钱包技术细节种子的创建过程插图2

助记词种子对应表

助记词和“脑钱包”经常被混淆。 他们是不一样的! 主要区别在于01.比特币,大脑钱包通过用户选择的词序生成对应的种子,而助记词则由钱包随机生成并呈现给用户。 这个重要的区别使助记法更加安全,因为猜测随机数对人类来说是无能为力的。

使用BIP-39标准创建种子钱包的过程主要分为两部分。 第一部分是创建助记词,第二部分是从助记词生成种子。

种子短语由钱包使用 BIP-39 中定义的标准化流程自动生成。 钱包从熵源开始,添加校验和,然后将熵映射到词汇表,主要分为以下六个步骤:

创建 128 到 256 位(熵)的随机序列。 通过提取哈希的前几位(熵长度/32)来创建随机序列的校验和。 将校验和添加到随机序列的末尾。 将序列分成包含 11 位的不同部分。 通过将 11 个部分中每个部分的值与 2048 个预定义单词的字典相关联,生成的有序单词集就是助记符。

从以上步骤可以看出,在创建助记词的过程中,仍然使用了哈希函数、随机数、校验和等。 映射部分主要在第5步,下图展示了熵是如何生成助记词的。

助记词生成过程

在上面的例子中,我们使用 128 位的熵长度来生成一个 12 字的助记词。 在实际应用中,熵越长,校验码和助记词也会相应增加。 下图展示了熵数据的大小与助记词长度的关系:

熵 - 校验和 - 助记符长度 - 列表

从上面的过程可以看出,助记词实际上代表了128到256位的熵。 在接下来的过程中,将使用密钥扩展功能(-Based Key)导出更长(512 位)的种子。 生成的种子用于构建确定性钱包并获取其密钥。

密钥扩展函数有两个参数,助记符和盐。 salt 的目的是使构建能够进行暴力攻击的查找表变得更加困难。 在 BIP-39 标准摘要中,盐还有另一个用途创建比特币钱包,允许引入密码作为额外的安全因素来保护种子。 创建助记词后的7-9步如下:

键扩展函数的第一个参数是第6步生成的助记词。键扩展函数的第二个参数是salt。 由字符串常量“mnemonic”和可选的用户提供的连接密码字符串组成。 使用 HMAC 算法,助记符和盐参数用 2048 个哈希值扩展,产生一个 512 位值作为其最终输出。 这个 512 位的值就是种子!

下图显示了助记词是如何生成种子的:

助记词的生成过程

从上图中可以看出,BIP-39 标准允许在派生种子时使用可选密码。 如果不使用密码短语,助记符将用由常量字符串“”组成的盐扩展,从而为任何给定的助记符生成特定的 512 位种子。 如果使用密码短语,则密钥扩展函数使用相同的助记符生成不同的种子。 这样,助记词和可选密码的组合大大增加了生成种子的数量。

从种子生成过程中,我们可以看出使用了很多单向哈希函数。 最终生成的种子是一个 512 位的随机数。 仅仅因为有 512 位,这就提供了无限数量的地址。

参考链接:

比特币区块链「五」 | 钱包技术细节种子的创建过程插图

相关文章: 最长链比特币【比特币区块链】比特币最高价是多少【比特币最高价是多少】边比特币交易所【Ante交易所网址】比特币k线图怎么看【怎么看比特币k线图】币种k线图】比特币最早发行价【比特币最早发行价】BTC有哪些交易平台【BTC交易所有哪些】BTC还会涨吗【BTC为什么会涨】BTC交易靠谱吗【BTC交易所骗局】btc历史走势图【BTC走势图】btc资讯网【btc新浪网】数据:BTC市值重回3800亿美元以上 2019年btc价格【2017年btc价格】如何注册btc账户【btc钱包注册】btc暴跌历史【btc暴跌】李晨BTC【李晨北大奇才个人资料】BTC减产时间表【BTC减产时间表图】BTC一开始是多少【BTC初价】中本聪btcs公告【btcs周六 oshi Nakamoto 最新公告] Btc 区块链高度 [区块链区块高度] btc 的价格是多少 [Btc 报价]