pub struct TransactionContextBuilder { /* private fields */ }Expand description
TransactionContextBuilder is a utility to construct TransactionContext for testing purposes. It allows users to build accounts, create notes, provide advice inputs, and execute code. The VM process can be inspected afterward.
§Examples
Create a new account and execute code:
let tx_context = TransactionContextBuilder::with_existing_mock_account().build()?;
let code = "
use $kernel::prologue
use mock::account
begin
exec.prologue::prepare_transaction
push.5
swap drop
end
";
let exec_output = tx_context.execute_code(code).await?;
assert_eq!(exec_output.stack.get(0).unwrap(), &Felt::new(5));Implementations§
Source§impl TransactionContextBuilder
impl TransactionContextBuilder
pub fn new(account: Account) -> Self
Sourcepub fn with_existing_mock_account() -> Self
pub fn with_existing_mock_account() -> Self
Initializes a TransactionContextBuilder with a mock account.
The wallet:
- Includes a series of mocked assets (miden_protocol::asset::AssetVault::mock()).
- Has a nonce of
1(so it does not imply seed validation). - Has an ID of
ACCOUNT_ID_REGULAR_PUBLIC_ACCOUNT_UPDATABLE_CODE. - Has an account code based on an miden_standards::testing::account_component::MockAccountComponent.
Sourcepub fn with_noop_auth_account() -> Self
pub fn with_noop_auth_account() -> Self
Same as Self::with_existing_mock_account but with a NoopAuthComponent.
Sourcepub fn with_fungible_faucet(acct_id: u128, initial_balance: Felt) -> Self
pub fn with_fungible_faucet(acct_id: u128, initial_balance: Felt) -> Self
Initializes a TransactionContextBuilder with a mocked fungible faucet.
Sourcepub fn with_non_fungible_faucet(acct_id: u128) -> Self
pub fn with_non_fungible_faucet(acct_id: u128) -> Self
Initializes a TransactionContextBuilder with a mocked non-fungible faucet.
Sourcepub fn extend_advice_inputs(self, advice_inputs: AdviceInputs) -> Self
pub fn extend_advice_inputs(self, advice_inputs: AdviceInputs) -> Self
Extend the advice inputs with the provided AdviceInputs instance.
Sourcepub fn extend_advice_map(
self,
map_entries: impl IntoIterator<Item = (Word, Vec<Felt>)>,
) -> Self
pub fn extend_advice_map( self, map_entries: impl IntoIterator<Item = (Word, Vec<Felt>)>, ) -> Self
Extend the advice inputs map with the provided iterator.
Sourcepub fn authenticator(self, authenticator: Option<BasicAuthenticator>) -> Self
pub fn authenticator(self, authenticator: Option<BasicAuthenticator>) -> Self
Set the authenticator for the transaction (if needed)
Sourcepub fn foreign_accounts(
self,
inputs: impl IntoIterator<Item = (Account, AccountWitness)>,
) -> Self
pub fn foreign_accounts( self, inputs: impl IntoIterator<Item = (Account, AccountWitness)>, ) -> Self
Set foreign account codes that are used by the transaction
Sourcepub fn extend_input_notes(self, input_notes: Vec<Note>) -> Self
pub fn extend_input_notes(self, input_notes: Vec<Note>) -> Self
Extend the set of used input notes
Sourcepub fn tx_script(self, tx_script: TransactionScript) -> Self
pub fn tx_script(self, tx_script: TransactionScript) -> Self
Set the desired transaction script
Sourcepub fn tx_script_args(self, tx_script_args: Word) -> Self
pub fn tx_script_args(self, tx_script_args: Word) -> Self
Set the transaction script arguments
Sourcepub fn tx_inputs(self, tx_inputs: TransactionInputs) -> Self
pub fn tx_inputs(self, tx_inputs: TransactionInputs) -> Self
Set the desired transaction inputs
Sourcepub fn disable_lazy_loading(self) -> Self
pub fn disable_lazy_loading(self) -> Self
Disables lazy loading.
Only affects TransactionContext::execute_code and causes the host to not handle lazy
loading events.
Sourcepub fn disable_debug_mode(self) -> Self
pub fn disable_debug_mode(self) -> Self
Disables debug mode.
For performance-sensitive applications, debug mode should be disabled because executing in debug mode may be up to 100x slower.
Sourcepub fn extend_note_args(self, note_args: BTreeMap<NoteId, Word>) -> Self
pub fn extend_note_args(self, note_args: BTreeMap<NoteId, Word>) -> Self
Extend the note arguments map with the provided one.
Sourcepub fn extend_expected_output_notes(self, output_notes: Vec<OutputNote>) -> Self
pub fn extend_expected_output_notes(self, output_notes: Vec<OutputNote>) -> Self
Extend the expected output notes.
Sourcepub fn with_source_manager(
self,
source_manager: Arc<dyn SourceManagerSync>,
) -> Self
pub fn with_source_manager( self, source_manager: Arc<dyn SourceManagerSync>, ) -> Self
Sets the SourceManagerSync on the TransactionContext that will be built.
This source manager should contain the sources of all involved scripts and account code in order to provide better error messages if an error occurs.
Sourcepub fn add_signature(
self,
pub_key: PublicKeyCommitment,
message: Word,
signature: Signature,
) -> Self
pub fn add_signature( self, pub_key: PublicKeyCommitment, message: Word, signature: Signature, ) -> Self
Add a new signature for the message and the public key.
Sourcepub fn add_note_script(self, script: NoteScript) -> Self
pub fn add_note_script(self, script: NoteScript) -> Self
Add a note script to the context for testing.
Sourcepub fn build(self) -> Result<TransactionContext>
pub fn build(self) -> Result<TransactionContext>
Builds the TransactionContext.
If no transaction inputs were provided manually, an ad-hoc MockChain is created in order to generate valid block data for the required notes.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for TransactionContextBuilder
impl !RefUnwindSafe for TransactionContextBuilder
impl Send for TransactionContextBuilder
impl Sync for TransactionContextBuilder
impl Unpin for TransactionContextBuilder
impl !UnwindSafe for TransactionContextBuilder
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<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