生成助记词
聊到 web3,就不得不说一个重要概念: 助记词。 通过助记词,通过秘钥派生算法,可以完成钱包子账户的派生。 完全可以这么说: 控制一个助记词,等于控制了钱包中所有的账户。
助记词一般为一组单词,词库由 BIP39 提供。 单词的长度可以为 12 个,15 个,18 个,21 个,24 个。
安装
rust 中,通过 bip39
的 crate 可以完成助记词的生成和使用。根据不同的语言,需要开启不同的 features。
比如:
- 中文简体:
chinese-simplified
- 繁体中文:
chinese-traditional
同时为了,可以随机生成助记词,需要开启 rand_core
的 feature。
cargo add bip39 --features "chinese-simplified rand_core"
cargo add rand
生成助记词
助记词生成,需要一个随机数发生器。指定语言,指定助记词长度即可。
use bip39::{Language, Mnemonic}; fn main() { let mut rng = rand::thread_rng(); let words = Mnemonic::generate_in_with(&mut rng, Language::English, 12).unwrap(); println!("{}", words); }
助记词导入及使用
助记词导入,直接使用 from_str
方法即可。使用的时候,可以指定一个 password 来增加安全性。
#![allow(unused)] fn main() { let words = Mnemonic::from_str( &"rural soup rose assist derive isolate lobster receive seek guilt verify glow", ) .unwrap(); println!("{:?}", words); let seeds = words.to_seed("abc"); println!("{:?}", hex::encode(seeds)); }
大多数的 web 钱包都会使用助记词的方式来管理秘钥。 但是,考虑到导入助记词过程的复杂性,很多钱包都直接使用了 空的 password 来导入助记词。