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>
impl<F: SecureWalletFile + Debug> Wallet<F>
Sourcepub async fn phoenix_transfer(
&self,
sender_idx: u8,
receiver_pk: &PhoenixPublicKey,
memo: Option<String>,
amt: Dusk,
gas: Gas,
) -> Result<Transaction, Error>
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.
Sourcepub async fn moonlight_transfer(
&self,
sender_idx: u8,
rcvr: &BlsPublicKey,
memo: Option<String>,
amt: Dusk,
gas: Gas,
) -> Result<Transaction, Error>
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.
Sourcepub async fn phoenix_execute(
&self,
sender_idx: u8,
deposit: Dusk,
gas: Gas,
data: TransactionData,
) -> Result<Transaction, Error>
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.
Sourcepub async fn moonlight_execute(
&self,
sender_idx: u8,
transfer_value: Dusk,
deposit: Dusk,
gas: Gas,
exec: Option<impl Into<TransactionData>>,
) -> Result<Transaction, Error>
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.
Sourcepub async fn phoenix_stake(
&self,
profile_idx: u8,
owner_idx: Option<u8>,
amt: Dusk,
gas: Gas,
) -> Result<Transaction, Error>
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.
Sourcepub async fn moonlight_stake(
&self,
profile_idx: u8,
owner_idx: Option<u8>,
amt: Dusk,
gas: Gas,
) -> Result<Transaction, Error>
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.
Sourcepub async fn phoenix_unstake(
&self,
profile_idx: u8,
gas: Gas,
) -> Result<Transaction, Error>
pub async fn phoenix_unstake( &self, profile_idx: u8, gas: Gas, ) -> Result<Transaction, Error>
Unstakes Dusk into shielded notes.
Sourcepub async fn moonlight_unstake(
&self,
profile_idx: u8,
gas: Gas,
) -> Result<Transaction, Error>
pub async fn moonlight_unstake( &self, profile_idx: u8, gas: Gas, ) -> Result<Transaction, Error>
Unstakes Dusk onto a public account.
Sourcepub async fn phoenix_stake_withdraw(
&self,
sender_idx: u8,
gas: Gas,
) -> Result<Transaction, Error>
pub async fn phoenix_stake_withdraw( &self, sender_idx: u8, gas: Gas, ) -> Result<Transaction, Error>
Withdraws accumulated staking to a shielded account.
Sourcepub async fn moonlight_stake_withdraw(
&self,
sender_idx: u8,
gas: Gas,
) -> Result<Transaction, Error>
pub async fn moonlight_stake_withdraw( &self, sender_idx: u8, gas: Gas, ) -> Result<Transaction, Error>
Withdraws accumulated staking reward to a public account.
Sourcepub async fn phoenix_to_moonlight(
&self,
profile_idx: u8,
amt: Dusk,
gas: Gas,
) -> Result<Transaction, Error>
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.
Sourcepub async fn moonlight_to_phoenix(
&self,
profile_idx: u8,
amt: Dusk,
gas: Gas,
) -> Result<Transaction, Error>
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.
Sourcepub async fn phoenix_deploy(
&self,
sender_idx: u8,
bytes_code: Vec<u8>,
init_args: Vec<u8>,
deploy_nonce: u64,
gas: Gas,
) -> Result<Transaction, Error>
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.
Sourcepub async fn moonlight_deploy(
&self,
sender_idx: u8,
bytes_code: Vec<u8>,
init_args: Vec<u8>,
deploy_nonce: u64,
gas: Gas,
) -> Result<Transaction, Error>
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.
Sourcepub async fn find_stake_owner_idx(
&self,
stake_pk: &BlsPublicKey,
) -> Result<u8, Error>
pub async fn find_stake_owner_idx( &self, stake_pk: &BlsPublicKey, ) -> Result<u8, Error>
Finds the index of the stake owner account.
Sourcepub async fn find_stake_owner_account(
&self,
stake_pk: &BlsPublicKey,
) -> Result<Address, Error>
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>
impl<F: SecureWalletFile + Debug> Wallet<F>
Source§impl<F: SecureWalletFile + Debug> Wallet<F>
impl<F: SecureWalletFile + Debug> Wallet<F>
Sourcepub fn new<P>(phrase: P) -> Result<Self, Error>
pub fn new<P>(phrase: P) -> Result<Self, Error>
Creates a new wallet instance deriving its seed from a valid BIP39 mnemonic
Sourcepub fn save_to(&mut self, file: F) -> Result<(), Error>
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.
Sourcepub async fn connect_with_status<S: Into<String>>(
&mut self,
rusk_addr: S,
prov_addr: S,
status: fn(&str),
) -> Result<(), Error>
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
Sourcepub async fn register_sync(&mut self) -> Result<(), Error>
pub async fn register_sync(&mut self) -> Result<(), Error>
Helper function to register for async-sync outside of connect
Sourcepub async fn is_online(&self) -> bool
pub async fn is_online(&self) -> bool
Checks if the wallet has an active connection to the network
Sourcepub async fn get_all_notes(
&self,
profile_idx: u8,
) -> Result<Vec<DecodedNote>, Error>
pub async fn get_all_notes( &self, profile_idx: u8, ) -> Result<Vec<DecodedNote>, Error>
Fetches the notes from the state.
Sourcepub async fn get_phoenix_balance(
&self,
profile_idx: u8,
) -> Result<BalanceInfo, Error>
pub async fn get_phoenix_balance( &self, profile_idx: u8, ) -> Result<BalanceInfo, Error>
Get the Phoenix balance
Sourcepub async fn get_moonlight_balance(
&self,
profile_idx: u8,
) -> Result<Dusk, Error>
pub async fn get_moonlight_balance( &self, profile_idx: u8, ) -> Result<Dusk, Error>
Get Moonlight account balance
Sourcepub fn add_profile(&mut self) -> u8
pub fn add_profile(&mut self) -> u8
Pushes a new entry to the internal profiles vector and returns its index.
Sourcepub fn default_address(&self) -> Address
pub fn default_address(&self) -> Address
Returns the default address for this wallet
Sourcepub fn default_shielded_account(&self) -> Address
pub fn default_shielded_account(&self) -> Address
Returns the default shielded account address for this wallet
Sourcepub fn default_public_address(&self) -> Address
pub fn default_public_address(&self) -> Address
Returns the default public account address for this wallet
Sourcepub fn profiles(&self) -> &Vec<Profile>
pub fn profiles(&self) -> &Vec<Profile>
Returns the profiles that have been generated by the user
Sourcepub fn shielded_key(&self, index: u8) -> Result<&PhoenixPublicKey, Error>
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.
Sourcepub fn public_key(&self, index: u8) -> Result<&BlsPublicKey, Error>
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.
Sourcepub fn public_address(&self, index: u8) -> Result<Address, Error>
pub fn public_address(&self, index: u8) -> Result<Address, Error>
Returns the public account address for a given index.
Sourcepub fn shielded_account(&self, index: u8) -> Result<Address, Error>
pub fn shielded_account(&self, index: u8) -> Result<Address, Error>
Returns the shielded account address for a given index.
Sourcepub async fn stake_info(
&self,
profile_idx: u8,
) -> Result<Option<StakeData>, Error>
pub async fn stake_info( &self, profile_idx: u8, ) -> Result<Option<StakeData>, Error>
Obtains stake information for a given address.
Sourcepub fn provisioner_keys(
&self,
index: u8,
) -> Result<(BlsPublicKey, BlsSecretKey), Error>
pub fn provisioner_keys( &self, index: u8, ) -> Result<(BlsPublicKey, BlsSecretKey), Error>
Returns BLS key-pair for provisioner nodes
Sourcepub fn export_provisioner_keys(
&self,
profile_idx: u8,
dir: &Path,
filename: Option<String>,
pwd: &[u8],
) -> Result<(PathBuf, PathBuf), Error>
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
Sourcepub fn find_index(&self, addr: &Address) -> Result<u8, Error>
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.
Sourcepub fn claim(&self, addr: Address) -> Result<Address, Error>
pub fn claim(&self, addr: Address) -> Result<Address, Error>
Check if the address is stored in our profiles, return the address if found
Sourcepub fn get_contract_id(
&self,
profile_idx: u8,
bytes: Vec<u8>,
nonce: u64,
) -> Result<[u8; 32], Error>
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
Sourcepub fn get_file_version(&self) -> Result<DatFileVersion, Error>
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
Sourcepub fn delete_cache(&mut self) -> Result<(), Error>
pub fn delete_cache(&mut self) -> Result<(), Error>
Erase the cache directory
Sourcepub async fn get_mempool_gas_prices(&self) -> Result<MempoolGasPrices, Error>
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> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<F, W, T, D> Deserialize<With<T, W>, D> for F
impl<F, W, T, D> Deserialize<With<T, W>, D> for F
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.Source§impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
Source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: *const T) -> Layout
fn layout_raw(_: *const T) -> Layout
Source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
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
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
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
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.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
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.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
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.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
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.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
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.