Wallet

Struct Wallet 

Source
pub struct Wallet {
    pub wallet_type: WalletType,
    pub network_id: NetworkId,
    pub addresses: Addresses,
    pub fetcher: Option<Box<dyn Fetcher>>,
    pub submitter: Option<Box<dyn Submitter>>,
    pub account: Option<Account>,
}
Expand description

Represents a Cardano wallet.

A wallet manages addresses and cryptographic keys needed for transaction signing and verification. It supports different wallet types, including mnemonic-based, root key-based, and CLI-based wallets.

Fields§

§wallet_type: WalletType§network_id: NetworkId§addresses: Addresses§fetcher: Option<Box<dyn Fetcher>>§submitter: Option<Box<dyn Submitter>>§account: Option<Account>

Implementations§

Source§

impl Wallet

Source

pub fn new(wallet_type: WalletType) -> Result<Self, WError>

Creates a new wallet with the specified wallet type.

This is a generic constructor that initializes addresses based on the wallet type.

§Arguments
  • wallet_type - The type of wallet to create
§Returns

A new Wallet instance with initialized addresses

Source

pub fn new_cli(cli_skey: &str) -> Result<Self, WError>

Creates a new CLI-based wallet using the provided signing key.

§Arguments
  • cli_skey - The signing key string in hex format
§Returns

A new Wallet instance

Source

pub fn new_mnemonic(mnemonic_phrase: &str) -> Result<Self, WError>

Creates a new mnemonic-based wallet using the provided mnemonic phrase.

§Arguments
  • mnemonic_phrase - The BIP39 mnemonic phrase
§Returns

A new Wallet instance with initialized addresses

Source

pub fn new_root_key(root_key: &str) -> Result<Self, WError>

Creates a new root key-based wallet using the provided root key.

§Arguments
  • root_key - The bech32-encoded root key
§Returns

A new Wallet instance with initialized addresses

Source

pub fn with_network_id(self, network_id: NetworkId) -> Self

Sets the network ID for the wallet and reinitializes addresses.

§Arguments
  • network_id - The network ID to use (Preprod or Mainnet)
§Returns

The updated wallet with reinitialized addresses

Source

pub fn with_fetcher<F: Fetcher + 'static>(self, fetcher: F) -> Self

Attaches a fetcher implementation to the wallet.

A fetcher is used to fetch UTxOs and other blockchain data.

§Arguments
  • fetcher - The fetcher implementation to use
§Returns

The updated wallet with fetcher capability

Source

pub fn with_submitter<S: Submitter + 'static>(self, submitter: S) -> Self

Attaches a submitter implementation to the wallet.

A submitter is used to submit transactions to the blockchain.

§Arguments
  • submitter - The submitter implementation to use
§Returns

The updated wallet with submitter capability

Source

pub fn payment_account( &mut self, account_index: u32, key_index: u32, ) -> Result<&mut Self, WError>

Sets the payment account indices for the wallet.

This updates the derivation path for the payment address.

§Arguments
  • account_index - The account index to use
  • key_index - The key index to use
§Returns

A mutable reference to self for method chaining

Source

pub fn stake_account( &mut self, account_index: u32, key_index: u32, ) -> Result<&mut Self, WError>

Sets the stake account indices for the wallet.

This updates the derivation path for the stake address.

§Arguments
  • account_index - The account index to use
  • key_index - The key index to use
§Returns

A mutable reference to self for method chaining

Source

pub fn drep_account( &mut self, account_index: u32, key_index: u32, ) -> Result<&mut Self, WError>

Sets the delegation representative (DRep) account indices for the wallet.

This updates the derivation path for the DRep address.

§Arguments
  • account_index - The account index to use
  • key_index - The key index to use
§Returns

A mutable reference to self for method chaining

Source

pub fn init_addresses(&mut self) -> &mut Self

Initializes or re-initializes wallet addresses based on the wallet type and current network ID.

This method generates base and enterprise addresses for mnemonic and root key wallets. It’s automatically called when constructing a wallet or when changing wallet parameters that affect addresses.

§Returns

A mutable reference to self for method chaining.

§Panics

May panic if there are issues creating a mnemonic or decoding a root key. Consider using a version that returns Result instead if you need to handle these errors.

Source

pub fn sign_tx(&self, tx_hex: &str) -> Result<String, WError>

Source

pub fn get_account(wallet_type: &WalletType) -> Result<Account, WError>

Source

pub fn get_change_address( &self, address_type: AddressType, ) -> Result<String, WError>

Gets a wallet address based on the specified address type.

§Arguments
  • address_type - The type of address to get (Payment or Enterprise)
§Returns

A Result containing either the bech32-encoded address or an error

Source

pub async fn get_utxos( &self, address_type: Option<AddressType>, asset: Option<&str>, ) -> Result<Vec<UTxO>, WError>

Fetches unspent transaction outputs (UTxOs) for a wallet address.

§Arguments
  • address_type - Optional address type (Payment or Enterprise). Defaults to Payment if not specified.
  • asset - Optional asset ID to filter UTxOs. If specified, only UTxOs containing the asset will be returned.
§Returns

A Result containing either a vector of UTxOs or an error

§Errors

Returns an error if no fetcher is configured or if there’s an issue getting the address or fetching UTxOs.

Source

pub async fn get_collateral( &self, address_type: Option<AddressType>, ) -> Result<Vec<UTxO>, WError>

Fetches suitable collateral UTXOs from the wallet.

Collateral UTXOs must:

  1. Contain only lovelace (no other assets)
  2. Have at least 5,000,000 lovelace (5 ADA)

This method returns the smallest suitable UTxO to minimize locked collateral.

§Arguments
  • address_type - Optional address type to fetch UTXOs from. Defaults to Payment.
§Returns

A Result containing either a vector with the smallest suitable collateral UTxO, or an empty vector if no suitable UTxO is found, or an error.

Source

pub async fn submit_tx(&self, tx_hex: &str) -> Result<String, WError>

Submits a transaction to the Cardano blockchain.

This method uses the configured submitter to send the transaction to the network. A submitter must be attached to the wallet using with_submitter before calling this method.

§Arguments
  • tx_hex - The transaction in hexadecimal format to submit
§Returns

A Result containing either the transaction hash (if successful) or an error

§Errors

Returns an error if:

  • No submitter is configured for the wallet
  • The submitter encounters an issue while submitting the transaction
  • The transaction format is invalid

Trait Implementations§

Source§

impl Default for Wallet

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl Freeze for Wallet

§

impl !RefUnwindSafe for Wallet

§

impl Send for Wallet

§

impl Sync for Wallet

§

impl Unpin for Wallet

§

impl !UnwindSafe for Wallet

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
§

impl<T> Conv for T

§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
§

impl<T> FmtForward for T

§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. 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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

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

§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

impl<T> Tap for T

§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V