#bip-39 #bitcoin #bip-32 #ethereum #bip44

nam-tiny-hderive

(Namada fork) Tiny BIP44/BIP32 derivation for BIP39 seeds

2 releases

0.3.1-nam.1 Sep 10, 2025
0.3.1-nam.0 Jan 15, 2025

#4 in #bip44

Download history 1100/week @ 2025-09-21 673/week @ 2025-09-28 875/week @ 2025-10-05 481/week @ 2025-10-12 512/week @ 2025-10-19 409/week @ 2025-10-26 618/week @ 2025-11-02 350/week @ 2025-11-09 390/week @ 2025-11-16 323/week @ 2025-11-23 537/week @ 2025-11-30 304/week @ 2025-12-07 207/week @ 2025-12-14 107/week @ 2025-12-21 148/week @ 2025-12-28 222/week @ 2026-01-04

694 downloads per month
Used in 13 crates (via qp-rusty-crystals-hdwalle…)

GPL-3.0-or-later

23KB
261 lines

tiny-hderive

A library for deriving secp256k1 secret keys from BIP39 seeds, using BIP32 crypto and BIP44 path formats.

use tiny_hderive::bip32::ExtendedPrivKey;

// Seed should be generated from your BIP39 phrase first!
let seed: &[u8] = &[42; 64];
let ext = ExtendedPrivKey::derive(seed, "m/44'/60'/0'/0/0").unwrap();

// Byte array of the secp256k1 secret key that can be used with Bitcoin or Ethereum.
assert_eq!(&ext.secret(), b"\x98\x84\xbf\x56\x24\xfa\xdd\x7f\xb2\x80\x4c\xfb\x0c\xb6\xf7\x1f\x28\x9e\x21\x1f\xcf\x0d\xe8\x36\xa3\x84\x17\x57\xda\xd9\x70\xd0");

// Deriving child keys from base one is also possible
use tiny_hderive::bip44::ChildNumber;
use std::str::FromStr;

let base_ext = ExtendedPrivKey::derive(seed, "m/44'/60'/0'/0").unwrap();
// child_ext is a key which is derived from this path: m/44'/60'/0'/0/0
let child_ext = base_ext.child(ChildNumber::from_str("0").unwrap()).unwrap();

assert_eq!(ext, child_ext);

Dependencies

~3.5MB
~73K SLoC