Struct miden_client::Client
source · pub struct Client<N: NodeRpcClient, R: FeltRng, S: Store, A: TransactionAuthenticator> { /* private fields */ }Expand description
A light client for connecting to the Miden rollup network.
Miden client is responsible for managing a set of accounts. Specifically, the client:
- Keeps track of the current and historical states of a set of accounts and related objects such as notes and transactions.
- Connects to one or more Miden nodes to periodically sync with the current state of the network.
- Executes, proves, and submits transactions to the network as directed by the user.
Implementations§
source§impl<N: NodeRpcClient, R: FeltRng, S: Store, A: TransactionAuthenticator> Client<N, R, S, A>
impl<N: NodeRpcClient, R: FeltRng, S: Store, A: TransactionAuthenticator> Client<N, R, S, A>
sourcepub fn new_account(
&mut self,
template: AccountTemplate,
) -> Result<(Account, Word), ClientError>
pub fn new_account( &mut self, template: AccountTemplate, ) -> Result<(Account, Word), ClientError>
Creates a new Account based on an AccountTemplate and saves it in the store
sourcepub fn import_account(
&mut self,
account_data: AccountData,
) -> Result<(), ClientError>
pub fn import_account( &mut self, account_data: AccountData, ) -> Result<(), ClientError>
sourcepub fn insert_account(
&mut self,
account: &Account,
account_seed: Option<Word>,
auth_info: &AuthSecretKey,
) -> Result<(), ClientError>
pub fn insert_account( &mut self, account: &Account, account_seed: Option<Word>, auth_info: &AuthSecretKey, ) -> Result<(), ClientError>
Inserts a new account into the client’s store.
§Errors
If an account is new and no seed is provided, the function errors out because the client cannot execute transactions against new accounts for which it does not know the seed.
sourcepub fn get_account_stubs(
&self,
) -> Result<Vec<(AccountStub, Option<Word>)>, ClientError>
pub fn get_account_stubs( &self, ) -> Result<Vec<(AccountStub, Option<Word>)>, ClientError>
Returns summary info about the accounts managed by this client.
sourcepub fn get_account(
&self,
account_id: AccountId,
) -> Result<(Account, Option<Word>), ClientError>
pub fn get_account( &self, account_id: AccountId, ) -> Result<(Account, Option<Word>), ClientError>
Returns summary info about the specified account.
sourcepub fn get_account_stub_by_id(
&self,
account_id: AccountId,
) -> Result<(AccountStub, Option<Word>), ClientError>
pub fn get_account_stub_by_id( &self, account_id: AccountId, ) -> Result<(AccountStub, Option<Word>), ClientError>
Returns summary info about the specified account.
sourcepub fn get_account_auth(
&self,
account_id: AccountId,
) -> Result<AuthSecretKey, ClientError>
pub fn get_account_auth( &self, account_id: AccountId, ) -> Result<AuthSecretKey, ClientError>
Returns an AuthSecretKey object utilized to authenticate an account.
§Errors
Returns a ClientError::StoreError with a StoreError::AccountDataNotFound if the provided ID does not correspond to an existing account.
source§impl<N: NodeRpcClient, R: FeltRng, S: Store, A: TransactionAuthenticator> Client<N, R, S, A>
impl<N: NodeRpcClient, R: FeltRng, S: Store, A: TransactionAuthenticator> Client<N, R, S, A>
sourcepub async fn import_note(
&mut self,
note_file: NoteFile,
) -> Result<NoteId, ClientError>
pub async fn import_note( &mut self, note_file: NoteFile, ) -> Result<NoteId, ClientError>
Imports a new input note into the client’s store. The information stored depends on the type of note file provided.
- If the note file is a NoteFile::NoteId, the note is fetched from the node and stored in the client’s store. If the note is private or does not exist, an error is returned. If the ID was already stored, the inclusion proof and metadata are updated.
- If the note file is a NoteFile::NoteDetails, a new note is created with the provided details. The note is marked as ignored if it contains no tag or if the tag is not relevant.
- If the note file is a NoteFile::NoteWithProof, the note is stored with the provided inclusion proof and metadata. The MMR data is only fetched from the node if the note is committed in the past relative to the client.
source§impl<N: NodeRpcClient, R: FeltRng, S: Store, A: TransactionAuthenticator> Client<N, R, S, A>
impl<N: NodeRpcClient, R: FeltRng, S: Store, A: TransactionAuthenticator> Client<N, R, S, A>
sourcepub fn get_input_notes(
&self,
filter: NoteFilter<'_>,
) -> Result<Vec<InputNoteRecord>, ClientError>
pub fn get_input_notes( &self, filter: NoteFilter<'_>, ) -> Result<Vec<InputNoteRecord>, ClientError>
Returns input notes managed by this client.
sourcepub fn get_consumable_notes(
&self,
account_id: Option<AccountId>,
) -> Result<Vec<(InputNoteRecord, Vec<NoteConsumability>)>, ClientError>
pub fn get_consumable_notes( &self, account_id: Option<AccountId>, ) -> Result<Vec<(InputNoteRecord, Vec<NoteConsumability>)>, ClientError>
Returns the input notes and their consumability.
If account_id is None then all consumable input notes are returned.
sourcepub fn get_note_consumability(
&self,
note: InputNoteRecord,
) -> Result<Vec<NoteConsumability>, ClientError>
pub fn get_note_consumability( &self, note: InputNoteRecord, ) -> Result<Vec<NoteConsumability>, ClientError>
Returns the consumability of the provided note.
sourcepub fn get_input_note(
&self,
note_id: NoteId,
) -> Result<InputNoteRecord, ClientError>
pub fn get_input_note( &self, note_id: NoteId, ) -> Result<InputNoteRecord, ClientError>
Returns the input note with the specified hash.
sourcepub fn get_output_notes(
&self,
filter: NoteFilter<'_>,
) -> Result<Vec<OutputNoteRecord>, ClientError>
pub fn get_output_notes( &self, filter: NoteFilter<'_>, ) -> Result<Vec<OutputNoteRecord>, ClientError>
Returns output notes managed by this client.
sourcepub fn get_output_note(
&self,
note_id: NoteId,
) -> Result<OutputNoteRecord, ClientError>
pub fn get_output_note( &self, note_id: NoteId, ) -> Result<OutputNoteRecord, ClientError>
Returns the output note with the specified hash.
sourcepub fn compile_note_script(
&self,
note_script_ast: &str,
) -> Result<NoteScript, ClientError>
pub fn compile_note_script( &self, note_script_ast: &str, ) -> Result<NoteScript, ClientError>
Compiles the provided program into a NoteScript
source§impl<N: NodeRpcClient, R: FeltRng, S: Store, A: TransactionAuthenticator> Client<N, R, S, A>
impl<N: NodeRpcClient, R: FeltRng, S: Store, A: TransactionAuthenticator> Client<N, R, S, A>
Returns the list of note tags tracked by the client.
When syncing the state with the node, these tags will be added to the sync request and note-related information will be retrieved for notes that have matching tags.
Note: Tags for accounts that are being tracked by the client are managed automatically by the client and do not need to be added here. That is, notes for managed accounts will be retrieved automatically by the client when syncing.
sourcepub fn add_note_tag(&mut self, tag: NoteTag) -> Result<(), ClientError>
pub fn add_note_tag(&mut self, tag: NoteTag) -> Result<(), ClientError>
Adds a note tag for the client to track.
sourcepub fn remove_note_tag(&mut self, tag: NoteTag) -> Result<(), ClientError>
pub fn remove_note_tag(&mut self, tag: NoteTag) -> Result<(), ClientError>
Removes a note tag for the client to track.
source§impl<N: NodeRpcClient, R: FeltRng, S: Store, A: TransactionAuthenticator> Client<N, R, S, A>
impl<N: NodeRpcClient, R: FeltRng, S: Store, A: TransactionAuthenticator> Client<N, R, S, A>
sourcepub fn get_sync_height(&self) -> Result<u32, ClientError>
pub fn get_sync_height(&self) -> Result<u32, ClientError>
Returns the block number of the last state sync block.
sourcepub async fn sync_state(&mut self) -> Result<SyncSummary, ClientError>
pub async fn sync_state(&mut self) -> Result<SyncSummary, ClientError>
Syncs the client’s state with the current state of the Miden network. Before doing so, it ensures the genesis block exists in the local store.
Returns the block number the client has been synced to.
sourcepub async fn update_ignored_notes(&mut self) -> Result<SyncSummary, ClientError>
pub async fn update_ignored_notes(&mut self) -> Result<SyncSummary, ClientError>
Updates the inclusion proof and metadata for notes that are being ignored by the client. This will not change their ignored status.
This function will not update the current block number as the notes will not be updated via a sync request. Because of this, the returned SyncSummary will not have the corresponding block number.
source§impl<N: NodeRpcClient, R: FeltRng, S: Store, A: TransactionAuthenticator> Client<N, R, S, A>
impl<N: NodeRpcClient, R: FeltRng, S: Store, A: TransactionAuthenticator> Client<N, R, S, A>
sourcepub fn get_transactions(
&self,
filter: TransactionFilter,
) -> Result<Vec<TransactionRecord>, ClientError>
pub fn get_transactions( &self, filter: TransactionFilter, ) -> Result<Vec<TransactionRecord>, ClientError>
Retrieves tracked transactions, filtered by TransactionFilter.
sourcepub fn new_transaction(
&mut self,
account_id: AccountId,
transaction_request: TransactionRequest,
) -> Result<TransactionResult, ClientError>
pub fn new_transaction( &mut self, account_id: AccountId, transaction_request: TransactionRequest, ) -> Result<TransactionResult, ClientError>
Creates and executes a transaction specified by the request against the specified account, but does not change the local database.
§Errors
- Returns ClientError::MissingOutputNotes if the TransactionRequest ouput notes are not a subset of executor’s output notes
- Returns a ClientError::TransactionExecutorError if the execution fails
- Returns a ClientError::TransactionRequestError if the request is invalid
sourcepub async fn submit_transaction(
&mut self,
tx_result: TransactionResult,
) -> Result<(), ClientError>
pub async fn submit_transaction( &mut self, tx_result: TransactionResult, ) -> Result<(), ClientError>
Proves the specified transaction, submits it to the network, and saves the transaction into the local database for tracking.
sourcepub fn compile_tx_script<T>(
&self,
inputs: T,
program: &str,
) -> Result<TransactionScript, ClientError>
pub fn compile_tx_script<T>( &self, inputs: T, program: &str, ) -> Result<TransactionScript, ClientError>
Compiles the provided transaction script source and inputs into a TransactionScript
sourcepub fn validate_request(
&self,
account_id: AccountId,
transaction_request: &TransactionRequest,
) -> Result<(), ClientError>
pub fn validate_request( &self, account_id: AccountId, transaction_request: &TransactionRequest, ) -> Result<(), ClientError>
Validates that the specified transaction request can be executed by the specified account.
This function checks that the account has enough balance to cover the outgoing assets. This does’t guarantee that the transaction will succeed, but it’s useful to avoid submitting transactions that are guaranteed to fail.
source§impl<N: NodeRpcClient, R: FeltRng, S: Store, A: TransactionAuthenticator> Client<N, R, S, A>
impl<N: NodeRpcClient, R: FeltRng, S: Store, A: TransactionAuthenticator> Client<N, R, S, A>
sourcepub fn new(
api: N,
rng: R,
store: Rc<S>,
authenticator: A,
in_debug_mode: bool,
) -> Self
pub fn new( api: N, rng: R, store: Rc<S>, authenticator: A, in_debug_mode: bool, ) -> Self
Returns a new instance of Client.
§Arguments
api: An instance of NodeRpcClient which provides a way for the client to connect to the Miden node.store: An instance of Store, which provides a way to write and read entities to provide persistence.executor_store: An instance of Store that provides a way for TransactionExecutor to retrieve relevant inputs at the moment of transaction execution. It should be the same store as the one forstore, but it doesn’t have to be the same instance.authenticator: Defines the transaction authenticator that will be used by the transaction executor whenever a signature is requested from within the VM.in_debug_mode: Instantiates the transaction executor (and in turn, its compiler) in debug mode, which will enable debug logs for scripts compiled with this mode for easier MASM debugging.
§Errors
Returns an error if the client could not be instantiated.
Auto Trait Implementations§
impl<N, R, S, A> Freeze for Client<N, R, S, A>
impl<N, R, S, A> !RefUnwindSafe for Client<N, R, S, A>
impl<N, R, S, A> !Send for Client<N, R, S, A>
impl<N, R, S, A> !Sync for Client<N, R, S, A>
impl<N, R, S, A> Unpin for Client<N, R, S, A>
impl<N, R, S, A> !UnwindSafe for Client<N, R, S, A>
Blanket Implementations§
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<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<D> OwoColorize for D
impl<D> OwoColorize for D
source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moresource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more