2 个不稳定版本
0.2.0 | 2023年5月15日 |
---|---|
0.1.0 | 2023年4月20日 |
#5 in #walletd
在 3 crates 中使用
100KB
1K SLoC
BIP39 密码本种子 rust 库
示例
创建 BIP39 密码本短语和种子的基本示例
cargo run --manifest-path ./examples/basic/Cargo.toml
从短语创建 BIP39 密码本并创建种子的导入示例
cargo run --manifest-path ./examples/import/Cargo.toml
lib.rs
:
WalletD BIP39
这是一个 Rust 库,实现了 BIP39 标准
,用于 HD 钱包密码本短语。简化了 BIP39 密码本短语和种子的生成和导入。
快速入门指南
要访问这个 walletD 库中与 BIP39 密码本相关的不同功能,可以使用 [Bip39Mnemonic] 构建器 ([Bip39MnemonicBuilder]),也可以通过 [Bip39Mnemonic::builder()
] 使用默认设置。
使用默认设置创建
[Bip39MnemonicBuilder] 的默认设置是: 英语语言,密码本短语中包含 12 个单词,没有指定密码。您可以使用 [Bip39Mnemonic] 结构体中的 to_seed
方法获取密码本种子。
以下是如何使用默认设置创建新的随机 BIP39 密码本的示例。
use walletd_bip39::prelude::*;
fn bip39_mnemonics() -> Result<(), walletd_bip39::Error> {
let mnemonic = Bip39Mnemonic::builder().build()?;
// display the generated mnemonic phrase
println!("mnemonic phrase: {}", mnemonic.phrase());
// can use the hex format specifier to print the seed as hex
println!("mnemonic seed hex: {:x}", mnemonic.to_seed());
// can use the as_bytes method to get the seed as a byte array
println!("mnemonic seed as bytes: {:?}", mnemonic.to_seed().as_bytes());
Ok(())
}
指定选项
您可以通过提供所需的设置来覆盖默认设置。您还可以以可变的方式重用 [Bip39MnemonicBuilder] 对象来创建多个 BIP39 密码本,甚至可以覆盖以前的设置。
let mut mnemonic_builder = Bip39Mnemonic::builder();
// specify that the mnemonic phrase should consist of 24 words
let mnemonic_1 = mnemonic_builder.mnemonic_type(Bip39MnemonicType::Words24).build()?;
println!("mnemonic_1 phrase: {}", mnemonic_1.phrase());
println!("mnemonic_1 seed hex: {:x}", mnemonic_1.to_seed());
// see the number of entropy bits for the specified mnemonic type
println!("mnemonic_1 number of entropy bits: {}", mnemonic_1.mnemonic_type().entropy_bits());
// reuse builder but now specify 18 words in the mnemonic phrase
let mnemonic_2 = mnemonic_builder.mnemonic_type(Bip39MnemonicType::Words18).build()?;
println!("mnemonic_2 phrase: {}", mnemonic_2.phrase());
println!("mnemonic_2 seed hex: {:x}", mnemonic_2.to_seed());
println!("mnemonic_2 number of entropy bits: {}", mnemonic_2.mnemonic_type().entropy_bits());
在某些情况下,即使使用默认设置,提供所有规格可能也有用。
可选密码短语的使用
您可以为生成助记词指定一个密码短语。请注意,在恢复助记词时也必须使用相同的密码短语。
警告:如果使用密码短语规格生成[Bip39Mnemonic]助记短语,则恢复[Bip39Mnemonic]时需要助记短语和密码短语。指定的密码短语不会存储在[Bip39Mnemonic]结构中。重要的是要安全地存储您指定的密码短语以及助记短语,以便能够恢复[Bip39Mnemonic]。
let mnemonic_3 = Bip39Mnemonic::builder()
.passphrase("mypassphrase")
.mnemonic_type(Bip39MnemonicType::Words12)
.language(Bip39Language::English)
.build()?;
println!("mnemonic_3 phrase: {}", mnemonic_3.phrase());
println!("mnemonic_3 seed hex: {:x}", mnemonic_3.to_seed());
}
恢复助记词
[Bip39Mnemonic]可以从指定的有效助记短语恢复,如果生成助记词时指定了密码短语,也可以从指定的有效助记短语和密码短语中恢复。
let mnemonic_phrase = "outer ride neither foil glue number place usage ball shed dry point";
let restored_mnemonic_1 = Bip39Mnemonic::builder().mnemonic_phrase(mnemonic_phrase).build()?;
println!("restored_mnemonic_1 phrase: {}", restored_mnemonic_1.phrase());
println!("restored_mnemonic_1 seed hex: {:x}", restored_mnemonic_1.to_seed());
let specified_passphrase = "mypassphrase";
let restored_mnemonic_2 = Bip39Mnemonic::builder().mnemonic_phrase(mnemonic_phrase).passphrase(specified_passphrase).build()?;
println!("restored_mnemonic_2 phrase: {}", restored_mnemonic_2.phrase());
println!("restored_mnemonic_2 seed hex: {:x}", restored_mnemonic_2.to_seed());
依赖关系
~6MB
~132K SLoC