pub struct ClientBuilder<AUTH> {
pub store: Option<StoreBuilder>,
/* private fields */
}Expand description
A builder for constructing a Miden client.
This builder allows you to configure the various components required by the client, such as the RPC endpoint, store, RNG, and authenticator. It is generic over the authenticator type.
§Network-Aware Constructors
Use one of the network-specific constructors to get sensible defaults for a specific network:
for_testnet()- Pre-configured for Miden testnetfor_devnet()- Pre-configured for Miden devnetfor_localhost()- Pre-configured for local development
The builder provides defaults for:
- RPC endpoint: Automatically configured based on the network
- Transaction prover: Remote for testnet/devnet, local for localhost
- RNG: Random seed-based prover randomness
§Components
The client requires several components to function:
-
RPC client (
NodeRpcClient): Provides connectivity to the Miden node for submitting transactions, syncing state, and fetching account/note data. Configure viarpc()orgrpc_client(). -
Store (
Store): Provides persistence for accounts, notes, and transaction history. Configure viastore(). -
RNG (
FeltRng): Provides randomness for generating keys, serial numbers, and other cryptographic operations. If not provided, a random seed-based RNG is created automatically. Configure viarng(). -
Authenticator (
TransactionAuthenticator): Handles transaction signing when signatures are requested from within the VM. Configure viaauthenticator(). -
Transaction prover (
TransactionProver): Generates proofs for transactions. Defaults to a local prover if not specified. Configure viaprover(). -
Note transport (
NoteTransportClient): Optional component for exchanging private notes through the Miden note transport network. Configure vianote_transport(). -
Debug mode: Enables debug mode for transaction execution. Configure via
in_debug_mode(). -
Transaction discard delta: Number of blocks after which pending transactions are considered stale and discarded. Configure via
tx_discard_delta(). -
Max block number delta: Maximum number of blocks the client can be behind the network for transactions and account proofs to be considered valid. Configure via
max_block_number_delta().
Fields§
§store: Option<StoreBuilder>An optional store provided by the user.
Implementations§
Source§impl<AUTH> ClientBuilder<AUTH>where
AUTH: BuilderAuthenticator,
Network-specific constructors for ClientBuilder.
impl<AUTH> ClientBuilder<AUTH>where
AUTH: BuilderAuthenticator,
Network-specific constructors for ClientBuilder.
These constructors automatically configure the builder for a specific network, including RPC endpoint, transaction prover, and note transport (where applicable).
Sourcepub fn for_testnet() -> Self
Available on crate feature tonic only.
pub fn for_testnet() -> Self
tonic only.Creates a ClientBuilder pre-configured for Miden testnet.
This automatically configures:
- RPC:
Endpoint::testnet() - Prover: Remote prover at
TESTNET_PROVER_ENDPOINT - Note transport:
NOTE_TRANSPORT_TESTNET_ENDPOINT
You still need to provide:
- A store (via
.store()) - An authenticator (via
.authenticator())
All defaults can be overridden by calling the corresponding builder methods
after for_testnet().
§Example
let client = ClientBuilder::for_testnet()
.store(store)
.authenticator(Arc::new(keystore))
.build()
.await?;Sourcepub fn for_devnet() -> Self
Available on crate feature tonic only.
pub fn for_devnet() -> Self
tonic only.Creates a ClientBuilder pre-configured for Miden devnet.
This automatically configures:
- RPC:
Endpoint::devnet() - Prover: Remote prover at
DEVNET_PROVER_ENDPOINT - Note transport:
NOTE_TRANSPORT_DEVNET_ENDPOINT
You still need to provide:
- A store (via
.store()) - An authenticator (via
.authenticator())
All defaults can be overridden by calling the corresponding builder methods
after for_devnet().
§Example
let client = ClientBuilder::for_devnet()
.store(store)
.authenticator(Arc::new(keystore))
.build()
.await?;Sourcepub fn for_localhost() -> Self
Available on crate feature tonic only.
pub fn for_localhost() -> Self
tonic only.Creates a ClientBuilder pre-configured for localhost.
This automatically configures:
- RPC:
http://localhost:57291 - Prover: Local (default)
Note transport is not configured by default for localhost.
You still need to provide:
- A store (via
.store()) - An authenticator (via
.authenticator())
All defaults can be overridden by calling the corresponding builder methods
after for_localhost().
§Example
let client = ClientBuilder::for_localhost()
.store(store)
.authenticator(Arc::new(keystore))
.build()
.await?;Source§impl<AUTH> ClientBuilder<AUTH>where
AUTH: BuilderAuthenticator,
impl<AUTH> ClientBuilder<AUTH>where
AUTH: BuilderAuthenticator,
Sourcepub fn in_debug_mode(self, debug: DebugMode) -> Self
pub fn in_debug_mode(self, debug: DebugMode) -> Self
Enable or disable debug mode.
Sourcepub fn rpc(self, client: Arc<dyn NodeRpcClient>) -> Self
pub fn rpc(self, client: Arc<dyn NodeRpcClient>) -> Self
Sets a custom RPC client directly.
Sourcepub fn grpc_client(self, endpoint: &Endpoint, timeout_ms: Option<u64>) -> Self
Available on crate feature tonic only.
pub fn grpc_client(self, endpoint: &Endpoint, timeout_ms: Option<u64>) -> Self
tonic only.Sets a gRPC client from the endpoint and optional timeout.
Sourcepub fn rng(self, rng: ClientRngBox) -> Self
pub fn rng(self, rng: ClientRngBox) -> Self
Optionally provide a custom RNG.
Sourcepub fn authenticator(self, authenticator: Arc<AUTH>) -> Self
pub fn authenticator(self, authenticator: Arc<AUTH>) -> Self
Optionally provide a custom authenticator instance.
Sourcepub fn max_block_number_delta(self, delta: u32) -> Self
pub fn max_block_number_delta(self, delta: u32) -> Self
Optionally set a maximum number of blocks that the client can be behind the network. By default, there’s no maximum.
Sourcepub fn tx_discard_delta(self, delta: Option<u32>) -> Self
pub fn tx_discard_delta(self, delta: Option<u32>) -> Self
Sets the number of blocks after which pending transactions are considered stale and discarded.
If a transaction has not been included in a block within this many blocks after submission,
it will be discarded. If None, transactions will be kept indefinitely.
By default, the delta is set to TX_DISCARD_DELTA (20 blocks).
Sourcepub fn tx_graceful_blocks(self, delta: Option<u32>) -> Self
👎Deprecated since 0.10.0: Use tx_discard_delta instead
pub fn tx_graceful_blocks(self, delta: Option<u32>) -> Self
Use tx_discard_delta instead
Sets the number of blocks after which pending transactions are considered stale and discarded.
This is an alias for tx_discard_delta.
Sourcepub fn note_transport(self, client: Arc<dyn NoteTransportClient>) -> Self
pub fn note_transport(self, client: Arc<dyn NoteTransportClient>) -> Self
Sets a custom note transport client directly.
Sourcepub fn prover(self, prover: Arc<dyn TransactionProver + Send + Sync>) -> Self
pub fn prover(self, prover: Arc<dyn TransactionProver + Send + Sync>) -> Self
Sets a custom transaction prover.
Sourcepub fn endpoint(&self) -> Option<&Endpoint>
pub fn endpoint(&self) -> Option<&Endpoint>
Returns the endpoint configured for this builder, if any.
This is set automatically when using network-specific constructors like
for_testnet(), for_devnet(),
or for_localhost().
Source§impl ClientBuilder<FilesystemKeyStore>
Convenience method for ClientBuilder when using FilesystemKeyStore as the authenticator.
impl ClientBuilder<FilesystemKeyStore>
Convenience method for ClientBuilder when using FilesystemKeyStore as the authenticator.
Sourcepub fn filesystem_keystore(
self,
keystore_path: impl Into<PathBuf>,
) -> Result<Self, ClientError>
Available on crate feature std only.
pub fn filesystem_keystore( self, keystore_path: impl Into<PathBuf>, ) -> Result<Self, ClientError>
std only.Creates a FilesystemKeyStore from the given path and sets it as the authenticator.
This is a convenience method that creates the keystore and configures it as the authenticator in a single call. The keystore provides transaction signing capabilities using keys stored on the filesystem.
§Errors
Returns an error if the keystore cannot be created from the given path.
§Example
let client = ClientBuilder::new()
.rpc(rpc_client)
.store(store)
.filesystem_keystore("path/to/keys")?
.build()
.await?;Trait Implementations§
Auto Trait Implementations§
impl<AUTH> Freeze for ClientBuilder<AUTH>
impl<AUTH> !RefUnwindSafe for ClientBuilder<AUTH>
impl<AUTH> !Send for ClientBuilder<AUTH>
impl<AUTH> !Sync for ClientBuilder<AUTH>
impl<AUTH> Unpin for ClientBuilder<AUTH>
impl<AUTH> UnsafeUnpin for ClientBuilder<AUTH>
impl<AUTH> !UnwindSafe for ClientBuilder<AUTH>
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<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::RequestSource§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