
[](https://docs.rs/hd-wallet)
[](https://crates.io/crates/hd-wallet)
[](https://discordapp.com/channels/905194001349627914/1285268686147424388)
# HD wallets derivation
This crate supports the following HD derivations:
* [SLIP10][slip10-spec] (compatible with [BIP32][bip32-spec]), see `Slip10`
* Non-standard `Edwards` derivation for ed25519 curve
To perform HD derivation, use `HdWallet` trait.
### Example: SLIP10 derivation
Derive a master key from the seed, and then derive a child key m/1<sub>H</sub>/10:
```rust
use hd_wallet::{slip10, curves::Secp256k1};
let seed = b"16-64 bytes of high entropy".as_slice();
let master_key = slip10::derive_master_key::<Secp256k1>(seed)?;
let master_key_pair = hd_wallet::ExtendedKeyPair::from(master_key);
let child_key_pair = slip10::derive_child_key_pair_with_path(
&master_key_pair,
[1 + hd_wallet::H, 10],
);
```
### Example: via HdWallet trait
`HdWallet` trait generalizes HD derivation algorithm, you can use it with generics:
```rust
use hd_wallet::{Slip10, curves::Secp256r1};
fn derive_using_generic_algo<E: generic_ec::Curve, Hd: hd_wallet::HdWallet<E>>(
master_key: hd_wallet::ExtendedKeyPair<E>,
) -> hd_wallet::ExtendedKeyPair<E>
{
Hd::derive_child_key_pair_with_path(
&master_key,
[1 + hd_wallet::H, 10],
)
}
// Use it with any HD derivation:
let seed = b"16-64 bytes of high entropy".as_slice();
let master_key = hd_wallet::slip10::derive_master_key(seed)?;
let master_key_pair = hd_wallet::ExtendedKeyPair::from(master_key);
let child_key = derive_using_generic_algo::<Secp256r1, Slip10>(master_key_pair);
```
### Features
* `curve-secp256k1`, `curve-secp256r1`, `curve-ed25519`, `curve-stark` add curve implementation
into the crate curves module
* `all-curves` adds all curves listed above
* `slip10`, `edwards`, `stark` add `slip10`, `edwards`, and `stark` HD derivations respectively
* `serde` adds `serde::{Serialize, Deserialize}` traits implementation to the types in the library
## Join us in Discord!
Feel free to reach out to us [in Discord](https://discordapp.com/channels/905194001349627914/1285268686147424388)!
[slip10-spec]: https://github.com/satoshilabs/slips/blob/master/slip-0010.md
[bip32-spec]: https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki