比特币学习3-BIP39翻译解读

[TOC]

前言

BIP39英文地址

原文地址:https://www.jianshu.com/p/2472bb87f04b
作者:梦幻艾斯
备注:欢迎转载,请保留原文地址。

摘要

这个BIP描述了一个使用一组方便记忆的单词(简称助记词)生成确定性钱包种子的方案

它由两部分组成:

  1. 生成助记词

  2. 将助记词转化成二进制种子。

    这个种子可以通过BIP-0032方法或者类似方法生成一个确定性钱包。

解决的问题

与处理钱包种子的原始二进制或十六进制表示相比,助记码或句子对于人类更容易理解和记忆。助记词可以写在纸上或通过电话说出来。

本指南旨在将计算机生成的随机性与人类可读的转录相结合。这不是一种将用户创建的句子(也称为脑袋)处理成钱包种子的方式。

生成助记词

助记词必须将熵的长度编码为32的倍数。熵的长度越长,安全系数越高,相应的生成的助记词长度越长。我们将初始熵的长度称为ENT。ENT允许的长度是128-256位。

首先,生成一个ENTbits的熵。通过SHA256生成熵的hash,取<pre>ENT / 32</pre> bits当作checksum。这个checksum加在初始熵的后面。

接下来,这些连接的比特被分成11位的组,每个编码从0到2047的数字,用作词表中的索引。最后,我们将这些数字转换成单词,并将这些连词作为助记句。

下表描述了 初始化熵长度 (ENT), checksum 长度 (CS) 和 生成的助记词长度
(MS) 之间的关系

<pre>
CS = ENT / 32
MS = (ENT + CS) / 11

| ENT | CS | ENT+CS | MS |
+-------+----+--------+------+
| 128 | 4 | 132 | 12 |
| 160 | 5 | 165 | 15 |
| 192 | 6 | 198 | 18 |
| 224 | 7 | 231 | 21 |
| 256 | 8 | 264 | 24 |
</pre>

疑问:

  1. 为什么将ENT+CS分割成11位的组?

    因为211等于2048,助记词单词列表的个数为2048个。所以11位长度就可以完全覆盖单词列表的索引。

  2. 为什么ENT的长度是32的倍数

    通过公式我们得出MS = (ENT + CS) / 11=(ENT + ENT / 32) / 11得到最终结果:
    3ENT = 32 MS

    因为ENT和MS都是整数,所以得出ENT是32的倍数,MS是3的倍数

单词表

理想的单词列表具有以下特征:

  1. 最好的单词选择方式

    选择的单词最好只需要输入单词的前4位就可以唯一标识单词

  2. 避免类似单词

    像"build" 和 "built", "woman" 和 "women", 或者 "quick" 和 "quickly"这类单词容易记错或者写错。应该避免使用

  3. 单词排好序

    • 单词列表被排序,允许更高效地查找代码单词
      (即实现可以使用二分搜索而不是线性搜索)
    • 这也允许使用trie(前缀树),例如为了更好的压缩

单词列表可以包含本地字符,但它们必须使用规范化表单兼容性分解(NFKD)以UTF-8编码。

从助记词生成种子

用户应该使用密码来保护他们的助记词。如果用户没有提供密码,程序将会用空字符串""代替。

为了从助记词中生成二进制的种子。我们使用PBKDF2函数,以一个助记词句子(以UTF-8 NFKD表示)为参数,使用"mnemonic" + 密码作为盐(以UTF-8 NFKD表示)。迭代次数设置为2048次,HMAC-SHA512函数作为为随机函数。生成的密钥长度为512位(等于64字节)。

盐格式示例:

  1. 密码为空时盐="mnemonic"
  2. 密码为"111111"时,盐="mnemonic111111"

这个种子可以在后续使用BIP-0032或类似方法生成确定性钱包。

助记词的选择和助记词生成种子的方法是独立的。这样做使得代码变得很简单。由于对助记词句子对结构没有约束,客户端可以自用的实现他们的单词列表或者助记词生成器。从而简称拼写错误或者其它需求。

虽然使用不是由“生成助记符”部分中描述的算法生成的助记符是可能的,但不建议这样做,并且软件必须使用单词表计算助记符句子的校验和,并且如果它无效则发出警告。

所描述的方法还提供了合理的可否认性,因为每个密码短语都会生成有效的种子(因此也就是确定性的钱包),但只有正确的种子才能使所需的钱包可用。

助记词单词列表

移动到单独的文档

这里是这种语言作为助记词单词列表的使用方式,客户端可以根据需求定制自己的助记词单词列表。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342