解决了记很多私钥的问题之後,
人类面对着另外一个问题,因为对他们(我们啦)来说,记一个种子还是太困难了。
所以BIP 39 就来拯救脑袋渺小的人类了!
如果你有用任何钱包软件申请一个钱包的话,
你会得到的是一串单字,而不是一串乱码(当然你也可以得到)
而这串单字,其实就是私钥的存在,
这就是BIP39做到的事情。
这是从github上截下来的图,内容是BIP39。
看到第三行 Mnemonic code,是助记词的意思,就是我前面讲的内容。
那究竟这个助记词是怎麽变来的,
我们继续看下去。
首先要先建立一个初始熵(就是一串二进位的数字),长度为ENT。
ENT必须是32的倍数,且只能介於128-256 bits。
将这串数字进入SHA-256後取前 ENT/32 个位元作为校验和,接在初始熵後。
将这总共ENT+ENT/32个位元每11个为一组。
接着用查表的方式将每一组得到一个字。
举例来说,
如果我们使用ENT=128,
总长度就会是128+128/32=132。
最後会得到132/11=12个单字。
这个单字表有做成各个语言的版本,在这里可以看到,
里面有英文、日文、韩文、中文(还分简体繁体)......
不管甚麽语言,这个表都是经过设计的,
理想的单字表符合一些条件
助记词若想转换成种子,需要使用一种密钥推导函数PBKDF2,
该函数有五个输入参数:伪随机函数、主密码、盐*、重复次数、需产生多少位元的密码。
而转换过程使用的参数分别是:HMAC-SHA512、助记词、"mnemonic"+"(自选密码)"、2048、512。
*盐就只是一个增加破解难度的数字而已,取其加盐的意象。
最後你就会得到一个热腾腾的种子,可以用 BIP32 定义的方式生出一个钱包。
以上就是BIP39内容。
回想一下昨天的BIP32,
在master key 底下可以生成出无限多的子密钥、孙密钥、...。
所以如果你随便使用了一个地址,你很难找到他所属的私钥在哪里,於是我们需要BIP44。
BIP44定义了密钥的路径规范,这样的规范定义了各个层级,
使不同帐户、不同币种分属在固定的路径之下。
路径的格式如上图。
第一个m代表的是master node。
第二个purpose固定是44,代表使用BIP44所规范的路径。
第三个coin_type提供不同加密货币的区隔,每个货币都有一个编号,
BTC是0、ETH是60,这里有所有已登记的币的编号。
第四个account提供不同用途的帐户。
第五个change分成两个,0是外部链(对外公开)可用来收钱,1是内部链(对外不公开)用来找零。
第六层即是你的地址编号,从0开始逐一递增。
如此一来就定义了整个HD wallet。
图片来源:
https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki
参考资料:
https://www.youtube.com/watch?v=p_SJKiff5Ng
https://github.com/bitcoin/bips
布局排板大板型左右留边 Container 接下来就是这个Container里头需要载运那些内容了 ...
在我们学习统计学之前应该清楚理解何谓统计学,这样才能够学以致用,并有效利用excel等工具来帮助我们...
这其实是有点长的故事,但我觉得这种缘分有点有趣,所以就决定在最後一天整理一下。 从开赛前几天说起 在...
这次的问题是上一篇文的延伸 上一篇是使用者输入参数後,再将指定栏位的值改为1 那这次是输入参数後检查...
Hello 大家, 不知不觉来到连假的最後一天了, 要开始收心罗~ 是不是有一些朋友又请了三天特休来...