Wallet

Struct Wallet 

Source
pub struct Wallet<F: SecureWalletFile + Debug> { /* private fields */ }
Expand description

The interface to the Dusk Network

The Wallet exposes all methods available to interact with the Dusk Network.

A new Wallet can be created from a bip39-compatible mnemonic phrase or an existing wallet file.

The user can generate as many Profile as needed without an active connection to the network by calling [Wallet::new_address] repeatedly.

A wallet must connect to the network using a [RuskEndpoint] in order to be able to perform common operations such as checking balance, transfernig funds, or staking Dusk.

Implementations§

Source§

impl<F: SecureWalletFile + Debug> Wallet<F>

Source

pub async fn phoenix_transfer( &self, sender_idx: u8, receiver_pk: &PhoenixPublicKey, memo: Option<String>, amt: Dusk, gas: Gas, ) -> Result<Transaction, Error>

Transfers funds between shielded accounts.

Source

pub async fn moonlight_transfer( &self, sender_idx: u8, rcvr: &BlsPublicKey, memo: Option<String>, amt: Dusk, gas: Gas, ) -> Result<Transaction, Error>

Transfers funds between public accounts.

Source

pub async fn phoenix_execute( &self, sender_idx: u8, deposit: Dusk, gas: Gas, data: TransactionData, ) -> Result<Transaction, Error>

Executes a generic contract call, paying gas with a shielded account.

Source

pub async fn moonlight_execute( &self, sender_idx: u8, transfer_value: Dusk, deposit: Dusk, gas: Gas, exec: Option<impl Into<TransactionData>>, ) -> Result<Transaction, Error>

Executes a generic contract call, paying gas from a public account.

Source

pub async fn phoenix_stake( &self, profile_idx: u8, owner_idx: Option<u8>, amt: Dusk, gas: Gas, ) -> Result<Transaction, Error>

Stakes Dusk using shielded notes.

Source

pub async fn moonlight_stake( &self, profile_idx: u8, owner_idx: Option<u8>, amt: Dusk, gas: Gas, ) -> Result<Transaction, Error>

Stakes Dusk using a public account.

Source

pub async fn phoenix_unstake( &self, profile_idx: u8, gas: Gas, ) -> Result<Transaction, Error>

Unstakes Dusk into shielded notes.

Source

pub async fn moonlight_unstake( &self, profile_idx: u8, gas: Gas, ) -> Result<Transaction, Error>

Unstakes Dusk onto a public account.

Source

pub async fn phoenix_stake_withdraw( &self, sender_idx: u8, gas: Gas, ) -> Result<Transaction, Error>

Withdraws accumulated staking to a shielded account.

Source

pub async fn moonlight_stake_withdraw( &self, sender_idx: u8, gas: Gas, ) -> Result<Transaction, Error>

Withdraws accumulated staking reward to a public account.

Source

pub async fn phoenix_to_moonlight( &self, profile_idx: u8, amt: Dusk, gas: Gas, ) -> Result<Transaction, Error>

Converts Dusk from a shielded account to a public account.

Source

pub async fn moonlight_to_phoenix( &self, profile_idx: u8, amt: Dusk, gas: Gas, ) -> Result<Transaction, Error>

Converts Dusk from a public account to a shielded account.

Source

pub async fn phoenix_deploy( &self, sender_idx: u8, bytes_code: Vec<u8>, init_args: Vec<u8>, deploy_nonce: u64, gas: Gas, ) -> Result<Transaction, Error>

Deploys a contract using shielded notes to pay gas.

Source

pub async fn moonlight_deploy( &self, sender_idx: u8, bytes_code: Vec<u8>, init_args: Vec<u8>, deploy_nonce: u64, gas: Gas, ) -> Result<Transaction, Error>

Deploys a contract using a public account to pay gas.

Source

pub async fn find_stake_owner_idx( &self, stake_pk: &BlsPublicKey, ) -> Result<u8, Error>

Finds the index of the stake owner account.

Source

pub async fn find_stake_owner_account( &self, stake_pk: &BlsPublicKey, ) -> Result<Address, Error>

Finds the address of the stake owner account.

Source§

impl<F: SecureWalletFile + Debug> Wallet<F>

Source

pub fn file(&self) -> &Option<F>

Returns the file used for the wallet

Source§

impl<F: SecureWalletFile + Debug> Wallet<F>

Source

pub fn new<P>(phrase: P) -> Result<Self, Error>
where P: Into<String>,

Creates a new wallet instance deriving its seed from a valid BIP39 mnemonic

Source

pub fn from_file(file: F) -> Result<Self, Error>

Loads wallet given a session

Source

pub fn save(&mut self) -> Result<(), Error>

Saves wallet to file from which it was loaded

Source

pub fn save_to(&mut self, file: F) -> Result<(), Error>

Saves wallet to the provided file, changing the previous file path for the wallet if any. Note that any subsequent calls to [save] will use this new file.

Source

pub fn state(&self) -> Result<&State, Error>

Access the inner state of the wallet

Source

pub async fn connect_with_status<S: Into<String>>( &mut self, rusk_addr: S, prov_addr: S, status: fn(&str), ) -> Result<(), Error>

Connect the wallet to the network providing a callback for status updates

Source

pub async fn sync(&self) -> Result<(), Error>

Sync wallet state

Source

pub async fn register_sync(&mut self) -> Result<(), Error>

Helper function to register for async-sync outside of connect

Source

pub async fn is_online(&self) -> bool

Checks if the wallet has an active connection to the network

Source

pub async fn get_all_notes( &self, profile_idx: u8, ) -> Result<Vec<DecodedNote>, Error>

Fetches the notes from the state.

Source

pub async fn get_phoenix_balance( &self, profile_idx: u8, ) -> Result<BalanceInfo, Error>

Get the Phoenix balance

Source

pub async fn get_moonlight_balance( &self, profile_idx: u8, ) -> Result<Dusk, Error>

Get Moonlight account balance

Source

pub fn add_profile(&mut self) -> u8

Pushes a new entry to the internal profiles vector and returns its index.

Source

pub fn default_address(&self) -> Address

Returns the default address for this wallet

Source

pub fn default_shielded_account(&self) -> Address

Returns the default shielded account address for this wallet

Source

pub fn default_public_address(&self) -> Address

Returns the default public account address for this wallet

Source

pub fn profiles(&self) -> &Vec<Profile>

Returns the profiles that have been generated by the user

Source

pub fn shielded_key(&self, index: u8) -> Result<&PhoenixPublicKey, Error>

Returns the shielded key for a given index.

§Errors

This will error if the wallet doesn’t have a profile stored for the given index.

Source

pub fn public_key(&self, index: u8) -> Result<&BlsPublicKey, Error>

Returns the public account key for a given index.

§Errors

This will error if the wallet doesn’t have a profile stored for the given index.

Source

pub fn public_address(&self, index: u8) -> Result<Address, Error>

Returns the public account address for a given index.

Source

pub fn shielded_account(&self, index: u8) -> Result<Address, Error>

Returns the shielded account address for a given index.

Source

pub async fn stake_info( &self, profile_idx: u8, ) -> Result<Option<StakeData>, Error>

Obtains stake information for a given address.

Source

pub fn provisioner_keys( &self, index: u8, ) -> Result<(BlsPublicKey, BlsSecretKey), Error>

Returns BLS key-pair for provisioner nodes

Source

pub fn export_provisioner_keys( &self, profile_idx: u8, dir: &Path, filename: Option<String>, pwd: &[u8], ) -> Result<(PathBuf, PathBuf), Error>

Exports BLS key-pair for provisioners in node-compatible format

Source

pub fn find_index(&self, addr: &Address) -> Result<u8, Error>

Return the index of the address passed, returns an error if the address is not in the wallet profiles.

Source

pub fn claim(&self, addr: Address) -> Result<Address, Error>

Check if the address is stored in our profiles, return the address if found

Source

pub fn get_contract_id( &self, profile_idx: u8, bytes: Vec<u8>, nonce: u64, ) -> Result<[u8; 32], Error>

Generate a contract id given bytes and nonce

Source

pub fn get_file_version(&self) -> Result<DatFileVersion, Error>

Return the dat file version from memory or by reading the file In order to not read the file version more than once per execution

Source

pub async fn is_synced(&self) -> Result<bool, Error>

Check if the wallet is synced

Source

pub fn delete_cache(&mut self) -> Result<(), Error>

Erase the cache directory

Source

pub fn close(&mut self)

Close the wallet and zeroize the seed

Source

pub async fn get_mempool_gas_prices(&self) -> Result<MempoolGasPrices, Error>

Get gas prices from the mempool

Auto Trait Implementations§

§

impl<F> !Freeze for Wallet<F>

§

impl<F> !RefUnwindSafe for Wallet<F>

§

impl<F> Send for Wallet<F>
where F: Send,

§

impl<F> Sync for Wallet<F>
where F: Sync,

§

impl<F> Unpin for Wallet<F>
where F: Unpin,

§

impl<F> !UnwindSafe for Wallet<F>

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> ArchivePointee for T

Source§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
Source§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
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> Conv for T

Source§

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

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

impl<F, W, T, D> Deserialize<With<T, W>, D> for F
where W: DeserializeWith<F, T, D>, D: Fallible + ?Sized, F: ?Sized,

Source§

fn deserialize( &self, deserializer: &mut D, ) -> Result<With<T, W>, <D as Fallible>::Error>

Deserializes using the given deserializer
Source§

impl<T> FmtForward for T

Source§

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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, W> HasTypeWitness<W> for T
where W: MakeTypeWitness<Arg = T>, T: ?Sized,

Source§

const WITNESS: W = W::MAKE

A constant of the type witness
Source§

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

Source§

const TYPE_EQ: TypeEq<T, <T as Identity>::Type> = TypeEq::NEW

Proof that Self is the same type as Self::Type, provides methods for casting between Self and Self::Type.
Source§

type Type = T

The same type as Self, used to emulate type equality bounds (T == U) with associated type equality constraints (T: Identity<Type = U>).
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> LayoutRaw for T

Source§

fn layout_raw(_: *const T) -> Layout

Gets the layout of the type.
Source§

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

Source§

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
Source§

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
Source§

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
Source§

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
Source§

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
Source§

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.
Source§

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.
Source§

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.
Source§

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> Pointee for T

Source§

type Metadata = ()

The type for metadata in pointers and references to Self.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> Tap for T

Source§

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

Immutable access to a value. Read more
Source§

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

Mutable access to a value. Read more
Source§

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
Source§

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
Source§

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
Source§

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
Source§

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
Source§

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
Source§

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

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

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

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

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.
Source§

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.
Source§

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.
Source§

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.
Source§

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.
Source§

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.
Source§

impl<T> TryConv for T

Source§

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.
Source§

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

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more