Web3 – 摩天大楼的地基 – 钱包在做什么?- 助记词

在总览中有过一个简单的一句话描述,助记词是一种使用人类友好的自然语言方式使用保管区块链身份,一个标准化协议,通过标准化实现在各个不同厂商的钱包之间通用可迁移。

我们提取一下关键词,自然语言和标准化。自然语言是我们使用的汉语英语等,标准化说明助记词在各个钱包之间是通用的,不会因为更换钱包就无法使用。

钱包示例

我们以 MetaMask 浏览器插件钱包举例说明,MetaMask 是目前使用最广泛的 EVM 生态钱包。大多数钱包的功能都是雷同的。钱包在助记词这里主要实现了 2 个功能。

初次打开钱包时会让用户选择使用方式,生成新的助记词或者导入助记词。

Web3 – 摩天大楼的地基 – 钱包在做什么?- 助记词

生成助记词

Web3 – 摩天大楼的地基 – 钱包在做什么?- 助记词

导入助记词

Web3 – 摩天大楼的地基 – 钱包在做什么?- 助记词

为什么需要助记词

这里有一个简短的背景介绍,介绍一下钱包的历史。我们从历史中分析助记词的由来和作用。

Qt 钱包

早期是没有助记词的,如果需要备份钱包,需要备份一个文件 wallet.dat。每次有新的交易都会生成新的私钥在这个文件里,如果在一次交易后忘了备份这个文件或者文件损坏,导入之前的备份使用的话,很遗憾部分资产就永远丢失了。

这是最早的区块链钱包,一个桌面端软件,现在也叫做 Bitcoin Core 它长这个样子。

Web3 – 摩天大楼的地基 – 钱包在做什么?- 助记词

HD 钱包

大家很快就觉得备份 wallet.dat 文件这种方式不靠谱,于是有了 BIP32 协议,我们不再需要每次交易后都备份一次 wallet.dat 文件,只需要备份一次根种子。所有的私钥都由这个根种子衍生。备份一次之后再也不用担心丢失部分资产了。

Web3 – 摩天大楼的地基 – 钱包在做什么?- 助记词

助记词

随着 HD 钱包的广泛使用,大家又开始发现备份根种子的不便之处。

首先是人类不可读,根种子的备份往往是一串随机的字符,容易抄错和无法理解。

xprv9s21ZrQH143K4E35p2KhPB8VXHsTXAC4D2yrNtuJs3kjH1Ebgvgg8oFABkoKUv3n732fg4J68L97brz9pEsZsLXmNV5LMM9G1YyTPEZ5RyN

然后是各个钱包的备份格式不统一,无法跨钱包转移。钱包推出各种导入工具处理不兼容的问题。一些历史比较长的钱包至今还有这些遗迹。

为了继续解决这个问题,提出了 BIP39 协议,使用人类友好的自然语言方式生成这个根种子,且标准化生成步骤。这样就只需要抄写 12 – 24 个自然语言单词。这些单词就是助记词。

and obvious siege escape lyrics love mansion profit stem memory capable raise

因为这个体验非常好,所以快速广泛接受,目前基本所有钱包通用。目前有英语、简体中文、繁体中文、日语、韩语等多个版本。

Web3 – 摩天大楼的地基 – 钱包在做什么?- 助记词

技术向-助记词的实现

接下来是助记词的具体技术实现,非码农可以快速跳过了。

我们使用 ohw-lib-wallets 库讲解助记词导入生成每一个步骤的实现。

Web3 – 摩天大楼的地基 – 钱包在做什么?- 助记词

图解

生成助记词

Mnemonic::from_entropy(&random)

Web3 – 摩天大楼的地基 – 钱包在做什么?- 助记词

导入助记词

Mnemonic::from_phrase(&words)

Web3 – 摩天大楼的地基 – 钱包在做什么?- 助记词

参考实现

https://github.com/butterfly-communtiy/ohw-lib-wallets/blob/main/src/mnemonic.rs

(0)
ChaoChao
上一篇 03/31/2025 17:06
下一篇 08/02/2023 19:40

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注