Skip to main content

Deriver

Struct Deriver 

Source
pub struct Deriver<'a> { /* private fields */ }
Expand description

Bitcoin address deriver from a unified wallet seed.

This deriver takes a seed from kobe::Wallet and derives Bitcoin addresses following BIP32/44/49/84 standards.

Implementations§

Source§

impl<'a> Deriver<'a>

Source

pub fn new(wallet: &'a Wallet, network: Network) -> Result<Self, Error>

Create a new Bitcoin deriver from a wallet.

§Errors

Returns an error if the master key derivation fails.

Source

pub fn derive(&self, index: u32) -> Result<DerivedAddress, Error>

Derive a Bitcoin address using P2WPKH (Native SegWit) by default.

Uses path: m/84'/0'/0'/0/{index} for mainnet

§Arguments
  • index - The address index
§Errors

Returns an error if derivation fails.

Source

pub fn derive_with( &self, address_type: AddressType, index: u32, ) -> Result<DerivedAddress, Error>

Derive a Bitcoin address with a specific address type.

This method supports different address formats:

  • P2pkh (Legacy): m/44'/coin'/0'/0/{index}
  • P2shP2wpkh (Nested SegWit): m/49'/coin'/0'/0/{index}
  • P2wpkh (Native SegWit): m/84'/coin'/0'/0/{index}
  • P2tr (Taproot): m/86'/coin'/0'/0/{index}
§Arguments
  • address_type - Type of address (determines BIP purpose: 44/49/84/86)
  • index - The address index
§Errors

Returns an error if derivation fails.

Source

pub fn derive_many( &self, start: u32, count: u32, ) -> Result<Vec<DerivedAddress>, Error>

Derive multiple addresses using P2WPKH (Native SegWit) by default.

§Arguments
  • start - Starting address index
  • count - Number of addresses to derive
§Errors

Returns an error if any derivation fails.

Source

pub fn derive_many_with( &self, address_type: AddressType, start: u32, count: u32, ) -> Result<Vec<DerivedAddress>, Error>

Derive multiple addresses with a specific address type.

§Arguments
  • address_type - Type of address to derive
  • start - Starting index
  • count - Number of addresses to derive
§Errors

Returns an error if any derivation fails.

Source

pub fn derive_path( &self, path: &DerivationPath, address_type: AddressType, ) -> Result<DerivedAddress, Error>

Derive an address at a custom derivation path.

This is the lowest-level derivation method, allowing full control over the derivation path.

§Arguments
  • path - BIP-32 derivation path
  • address_type - Type of address to generate
§Errors

Returns an error if derivation fails.

§Panics

This function will not panic under normal circumstances. The internal expect is guaranteed to succeed for valid private keys.

Source

pub const fn network(&self) -> Network

Get the network.

Trait Implementations§

Source§

impl<'a> Debug for Deriver<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a> Freeze for Deriver<'a>

§

impl<'a> RefUnwindSafe for Deriver<'a>

§

impl<'a> Send for Deriver<'a>

§

impl<'a> Sync for Deriver<'a>

§

impl<'a> Unpin for Deriver<'a>

§

impl<'a> UnwindSafe for Deriver<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.