#hd-wallet #key #generation #bitcoin #hierarchical-deterministic

bitcoin-hd-keys

Key generation for Hierarchical-Deterministic (HD) Wallets

23 releases

0.1.23 Oct 4, 2022
0.1.22 Oct 4, 2022
0.1.21 Sep 29, 2022

#9 in #hd-wallet


Used in create-bitcoin-transactio…

MIT license

100KB
3.5K SLoC

☠️⚠️ Work In Progress ⚠️☠️

Bitcoin HD Keys

Key generation for Hierarchical-Deterministic (HD) Wallets

Install

Add package to Cargo.toml file

[dependencies]
bitcoin-hd-keys= "0.1.23"

Usage:

use bitcoin_hd_keys::{
    generate_bip32_hd_wallet_from_mnemonic_words, generate_bip44_hd_wallet_from_mnemonic_words,
    generate_bip49_hd_wallet_from_mnemonic_words, generate_bip84_hd_wallet_from_mnemonic_words,
    get_128_bits_of_entropy, get_mnemonic_words, AddressType, Network,
};

// Generate entropy
let entropy_array = get_128_bits_of_entropy();

// Get mnemonic words from entropy
let mnemonic_words = get_mnemonic_words(entropy_array.to_vec());

// Generate HD Wallet Keys (bip32) from mnemonic words
let bip32_hd_wallet = generate_bip32_hd_wallet_from_mnemonic_words(
	mnemonic_words.clone(),
	None,
	"m/0'/0'".to_string(),
	5,
	true,
	Network::Testnet,
);
println!("{:#?}", bip32_hd_wallet);
bip32_hd_wallet.pretty_print_derived_addressed(Network::Testnet, AddressType::P2PKH);

// Generate Multi-Account Hierarchy HD Keys (bip44) from mnemonic words.
let bip44_hd_wallet = generate_bip44_hd_wallet_from_mnemonic_words(
	mnemonic_words.clone(),
	None,
	0,
	5,
	true,
	Network::Testnet,
);
println!("{:#?}", bip44_hd_wallet);
bip44_hd_wallet.pretty_print_derived_addressed(Network::Testnet, AddressType::P2PKH);

// Generate Derivation scheme for P2WPKH-nested-in-P2SH based accounts HD Keys (bip49) from mnemonic words.
let bip49_hd_wallet = generate_bip49_hd_wallet_from_mnemonic_words(
	mnemonic_words.clone(),
	None,
	0,
	5,
	true,
	Network::Testnet,
);
println!("{:#?}", bip49_hd_wallet);
bip49_hd_wallet.pretty_print_derived_addressed(Network::Testnet, AddressType::P2SH);

// Generate HD Keys using Deterministic Entropy From BIP32 Keychains (bip85) from mnemonic words.
let bip84_hd_wallet = generate_bip84_hd_wallet_from_mnemonic_words(
	mnemonic_words.clone(),
	None,
	0,
	5,
	true,
	Network::Testnet,
);
println!("{:#?}", bip84_hd_wallet);
bip84_hd_wallet.pretty_print_derived_addressed(Network::Testnet, AddressType::Bech32);

Learn about HD Wallets

To learn more about HD Wallets and explore the resource material that was used to create this packacge, see Resources.md

License

MIT © Joe Gesualdo

Dependencies

~17MB
~360K SLoC