Expand description
§HD wallets derivation
This crate supports the following HD derivations:
To perform HD derivation, use HdWallet
trait.
§Example: SLIP10 derivation
Derive a master key from the seed, and then derive a child key m/1H/10:
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:
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 moduleall-curves
adds all curves listed aboveslip10
,edwards
,stark
addslip10
,edwards
, andstark
HD derivations respectivelyserde
addsserde::{Serialize, Deserialize}
traits implementation to the types in the library
§Join us in Discord!
Feel free to reach out to us in Discord!
Re-exports§
Modules§
- curves
- Curves supported out of the box
- edwards
- Edwards HD derivation
- errors
- When something goes wrong
- slip10
- SLIP10 derivation
- stark
- Stark HD derivation
Structs§
- Derived
Shift - A shift that can be applied to parent key to obtain a child key
- Extended
KeyPair - Pair of extended secret and public keys
- Extended
Public Key - Extended public key
- Extended
Secret Key - Extended secret key
- Hardened
Index - Child index in range $2^{31} \le i < 2^{32}$ corresponding to a hardened wallet
- NonHardened
Index - Child index in range $0 \le i < 2^{31}$ corresponding to a non-hardened wallet
Enums§
- Child
Index - Child index, whether hardened or not
Constants§
- H
- Beginning of hardened child indexes
Traits§
- Derive
Shift - Core functionality of HD wallet derivation, everything is defined on top of it
- HdWallet
- HD derivation
Type Aliases§
- Chain
Code - Chain code of extended key as defined in SLIP-10