diff --git a/README.md b/README.md index a3ce8f2..a51d98a 100644 --- a/README.md +++ b/README.md @@ -10,18 +10,42 @@ To perform HD derivation, use `HdWallet` trait. Derive a master key from the seed, and then derive a child key m/1H/10: ```rust -use hd_wallet::{HdWallet, Slip10, curves::Secp256k1}; +use hd_wallet::{slip10, curves::Secp256k1}; let seed = b"16-64 bytes of high entropy".as_slice(); -let master_key = hd_wallet::slip10::derive_master_key::(seed)?; +let master_key = slip10::derive_master_key::(seed)?; let master_key_pair = hd_wallet::ExtendedKeyPair::from(master_key); -let child_key_pair = Slip10::derive_child_key_pair_with_path( +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::{Slip10Like, curves::Secp256r1}; + +fn derive_using_generic_algo>( + master_key: hd_wallet::ExtendedKeyPair, +) -> hd_wallet::ExtendedKeyPair +{ + 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::(master_key_pair); + +``` + ### Features * `std`: enables std library support (mainly, it just implements `Error` trait for the error types)