Crates.io | slip-10 |
lib.rs | slip-10 |
version | 0.4.1 |
source | src |
created_at | 2024-02-16 13:11:20.116473 |
updated_at | 2024-10-17 14:57:12.295315 |
description | SLIP10 implementation in Rust |
homepage | |
repository | https://github.com/LFDT-Lockness/hd-wallet/tree/legacy/slip-10 |
max_upload_size | |
id | 1142427 |
size | 62,647 |
Warning
slip-10
crate has been restructured and renamed intohd-wallet
.slip-10
is not likely to receive any future updates. Please, consider switching to successor library.In order to migrate to the successor
hd-wallet v0.5
, include it into Cargo.toml:hd-wallet = "0.5"
Then you'll need to change
slip_10::
references in your code tohd_wallet::
. For instance,slip_10::HardenedIndex
becomeshd_wallet::HardenedIndex
.The functions for child wallet derivation has been moved. Derivation algorithm that is used in
slip_10
crate corresponds tohd_wallet::slip10_like
. E.g. if you were deriving a child key usingslip_10::derive_child_public_key
, now you need to usehd_wallet::slip10_like::derive_child_public_key
instead.If you have any problems with migration, don't hesitate to reach out to us in Discord
#lockness
room.
SLIP10 is a specification for implementing HD wallets. It aims at supporting many curves while being compatible with BIP32.
The implementation is based on generic-ec library that provides generic
elliptic curve arithmetic. The crate is no_std
and no_alloc
friendly.
Implementation currently does not support ed25519 curve. All other curves are supported: both secp256k1 and secp256r1. In fact, implementation may work with any curve, but only those are covered by the SLIP10 specs.
The crate also re-exports supported curves in supported_curves module (requires enabling a feature), but any other curve implementation will work with the crate.
std
: enables std library support (mainly, it just implements Error
trait for the error types)curve-secp256k1
and curve-secp256r1
add curve implementation into the crate supported_curves
moduleDerive a master key from the seed, and then derive a child key m/1H/10:
use slip_10::supported_curves::Secp256k1;
let seed = b"16-64 bytes of high entropy".as_slice();
let master_key = slip_10::derive_master_key::<Secp256k1>(seed)?;
let master_key_pair = slip_10::ExtendedKeyPair::from(master_key);
let child_key_pair = slip_10::derive_child_key_pair_with_path(
&master_key_pair,
[1 + slip_10::H, 10],
);