区块链知识普及之 BIP39 助记词生成过程详解

了解区块链的人肯定会接触到区块链钱包,也知道助记词的重要性。有一种钱包可以存储助记词并解析助记词,它的专业名称是Deterministic Wallet。

Ψ那么这种助记词钱包如何保证我们链上资产的安全又给我们带来了什么改变,接下来将一一解析。

助记词是由十二到二十四个单词组成的密码,它被用于生成区块链账户系统中512位的种子(seed),而种子可以生成私钥(prikey),由私钥可以导出公钥(pubkey),公钥经过变换后可以得到我们经常在区块链账本上看到的地址(address)。

如果将区块链本身比作一家银行,而区块链账户系统就是你的银行账户,一旦你与某人交易,你需要告诉别人你的区块链地址(类似于银行卡号)。

由于区块链数据的公开性,一旦某人知道你的地址,就可以知道你所有的交易记录,所以如果对个人隐私比较注重,就需要为每一次交易生成一个新的地址(类似于每转一笔账就用身份证办一张卡)。

在交易频繁的情况下,因为不断生成新的地址且每个地址都有自己的密码,所需记录的账户密码信息必将十分庞大。

为了解决这个问题,区块链行业内出现了BIP39标准,使用助记词帮我们管理所有账户信息,个人不需要为区块链上的每一笔交易生成专有地址。

助记词所构造的系统会自动推演生成用于交易的地址,而仅需要记住助记词便可保证拥有对所有地址的操作权,这种情况下助记词相当于是区块链系统中的个人身份证。

助记词所构造的账户系统所带来的方便,相当于一张身份证下可以挂载无限张银行卡,每一次有新的交易需求总账户就可以生成一个新的地址,而且相比于在营业大厅排除等待办理新卡,网上生成地址仅需要一秒。

有了助记词后,就可以不再记忆众多单独的地址(银行卡)信息,只需要记住自己的身份证号(助记词)就可以保证你的所有交易信息都可查询。

ღ 1、生成随机数。

助记词来源于随机数,它由二进制数1010组成,分别有128,160,192,224,256位的生成方式。一般由电脑按真随机算法生成。

例:[11001010,11100110,00110011, . . . . . . ,10101100,01101110]便是一串随机数

当然也有较简单原始的生成方法:想要生成128位随机数,你可以连续掷128次硬币,正面是1,反面是0。记录下来后也可以当作你的原始数据。

其中256位长度的随机数比128长度的随机数更安全,相应的助记词也由十二个变成二十四个。

ღ 2、生成检测码(checksum)。

根据随机数的长度决定检测码的长度,如128位的随机数除以固定值32,可得128随机数生成的助记词的检测码是4位。而获取方式即:

生成方式 hash =sha256(随机数)

例:hash=sha256([11001010,11100110,00110011, . . . . . . ,10101100,01001110])=0xa...

检测码就是a,转化成二进制为1010.

ღ3、随机数+检测码生成助记词。

将随机数转换成十六进制形式:

3523ed96 5fef1d90 a15dc691 ebcdb6c3

由于BIP39文档从1开始,而十六进制数从0开始,所以将结果每位加一即

[ 426,252,813,1535,1935,1603,1068,1479,1168,756,878,1083 ]

最终映射的助记词为:

cry buyer grain save vault sign lyrics rhythm music fury horror mansion

至此,助记词的生成过程解析完毕。

如果说未来我们的生活与网络息息相关,那么真实世界与网络世界将再也没有差异,我们就会进入一个由网络构造的魔法世界.

ღ互联网就是世界的魔法元素,而每一个人都是魔法师,对魔法师而言,助记词就是你的“真名”这个世界上只有你自己才知道你的“真名”,一旦你的“真名”被泄露,你的财产将不再安全,你的生命也将被知道你“真名”的魔法师所掌握。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181016A1J0QD00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券