我们为什么需要助记词?

什么是助记词

助记词(mnemonic phrase)是从一个固定的单词列表中选出的12、15、18、21或24个单词,这些单词按照顺序排列,可用于备份和恢复加密货币钱包。

我们在之前BTC钱包的文章中,也使用到了助记词

两个重要的比特币改进提案(BIP)

BIP-0039

BIP-0039 是比特币改进提案(Bitcoin Improvement Proposal,BIP)中的一个标准,它定义了一种用于生成助记词(mnemonic phrase)的系统,这些助记词通常用于备份和恢复加密货币钱包。

解决的问题:用助记词替代私钥,方便记忆,方便存储

BIP-0044

BIP-44(Bitcoin Improvement Proposal 44)是比特币改进提案中的一个标准,它定义了一种多币种层次确定性钱包(HD Wallets)的结构,以及用于派生不同加密货币地址的规范。HD Wallets 是一种钱包体系结构,通过一个种子(seed)可以生成多个密钥对,每个密钥对都对应一个地址和私钥。下一节,我们会展开讲讲BIP-0044。

助记词

为什么需要助记词

  1. 易于记忆: 助记词通常是一组易于记忆的单词,相比长串的私钥,用户更容易记住这些单词。这使得用户在备份时更加方便,因为他们只需要记住助记词而不是复杂的密码或私钥。
  2. 便于备份: 助记词是一种人类可读的备份形式,用户可以写下或记录这组单词并妥善保存。相对于备份私钥或钱包文件,这提供了更直观和用户友好的备份方式。
  3. 方便恢复: 如果用户失去了钱包或需要在不同的设备上恢复钱包,助记词可以用于恢复与之关联的私钥和地址。这样,用户只需输入助记词,而不必记住或找回复杂的私钥。
  4. 标准化和互操作性: 使用 BIP-0039 等标准的助记词列表确保了不同钱包实现之间的兼容性。用户可以在一个钱包生成助记词,然后在另一个钱包中使用这些助记词进行恢复,从而提高了用户对于不同钱包之间切换的自由度。
  5. 安全性: 通过使用助记词,用户不必频繁地处理私钥,减少了私钥泄露的风险。同时,助记词生成算法中通常包含校验和,以帮助检测用户是否正确输入了助记词

助记词都有哪些

助记词词本

生成代码

代码地址

#!/usr/bin/env python3

from hdwallet import HDWallet
from hdwallet.utils import generate_entropy
from hdwallet.symbols import BTC as SYMBOL
from typing import Optional

import json

# 以下的`位`没有特殊说明都是指的bit
# 选择`熵`长度, 默认128位,最长256位,必须是32的倍数
# 校验和 = sha256(`熵`)的哈希值 的 前(`熵`的位数 / 32)位 -- 如果128位的熵,那么就是取前4位
# 助记词的数量 = (`熵`的位数 + 校验和的位数) / 11 -- 这里的 + 表示拼接的意思,每11位bit就是从 0-2047 中的一个数字,这个数字就是词本中的具体哪个单词
STRENGTH: int = 128
# language english, french, italian, spanish, chinese_simplified, chinese_traditional, japanese or korean
# 这里使用英文词本
LANGUAGE: str = "english"  # Default is english
# 用16进制的字符串表示`熵`
ENTROPY: str = generate_entropy(strength=STRENGTH)
# 这里可以选择一个密码,我们暂时不用
PASSPHRASE: Optional[str] = None  # "meherett"
# 初始化
hdwallet: HDWallet = HDWallet(symbol=SYMBOL, use_default_path=False)
# 生成助记词
hdwallet.from_entropy(
    entropy=ENTROPY, language=LANGUAGE, passphrase=PASSPHRASE
)

# Derivation from path
# hdwallet.from_path("m/44'/0'/0'/0/0")
# Or derivation from index
# 确定私钥的生成规则
hdwallet.from_index(44, hardened=True)
hdwallet.from_index(0, hardened=True)
hdwallet.from_index(0, hardened=True)
hdwallet.from_index(0)
hdwallet.from_index(0)

# 输出生成的结果
print(json.dumps(hdwallet.dumps(), indent=4, ensure_ascii=False))

关注我,关注我的专栏,一起探索Web3的世界

  • 29
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值