13 releases (7 breaking)
| 0.13.0 | Jul 29, 2025 |
|---|---|
| 0.12.0 | Jul 27, 2024 |
| 0.11.1 | Jun 9, 2024 |
| 0.8.7 | Aug 23, 2023 |
| 0.3.0 | Jul 6, 2021 |
#5 in #bip-32
312,910 downloads per month
Used in 405 crates
(11 directly)
115KB
2.5K
SLoC
coins-bip32
This is an implementation of BIP32. It uses k256 and re-exports several of its traits and types.
It can be used to build wallets and applications for Bitcoin and Ethereum.
Building
$ cargo build
$ cargo build --target wasm32-unknown-unknown
Run tests (make sure to run with all feature combinations):
$ cargo test
Run bench marks
$ cargo bench
$ cargo bench --no-default-features
lib.rs:
This crate provides a basic implementation of BIP32, BIP49, and BIP84. It can be easily adapted to support other networks, using the paramaterizable encoder.
Typically, users will want to use the MainnetEncoder, DerivedXPub, DerivedXPriv types,
which are available at the crate root. If key derivations are unknown, use the XPub and
XPriv objects instead. These may be deserialized using a network-specific Encoder from the
enc module.
Useful traits will need to be imported from the enc or model modules.
We also provide a prelude module with everything you need to get started.
Warnings:
- This crate is NOT designed to be used in adversarial environments.
- This crate has NOT had a comprehensive security review.
Usage
use coins_bip32::prelude::*;
let digest = coins_core::hashes::Hash256::default();
let xpriv_str = "xprv9s21ZrQH143K3QTDL4LXw2F7HEK3wJUD2nW2nRk4stbPy6cq3jPPqjiChkVvvNKmPGJxWUtg6LnF5kejMRNNU3TGtRBeJgk33yuGBxrMPHi".to_owned();
let xpriv: XPriv = xpriv_str.parse().unwrap();
let child_xpriv = xpriv.derive_child(33)?;
let (sig, _recovery_id): (Signature, RecoveryId) = child_xpriv.sign_digest(digest.clone());
// Signing key types are associated with verifying key types. You can always derive a pubkey
let child_xpub = child_xpriv.verify_key();
child_xpub.verify_digest(digest.clone(), &sig)?;
MainnetEncoder::xpub_to_base58(&child_xpub)?;
Dependencies
~6MB
~108K SLoC