pub struct TransactionContextBuilder { /* private fields */ }testing only.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) -> TransactionContextBuilder
Sourcepub fn with_existing_mock_account() -> TransactionContextBuilder
pub fn with_existing_mock_account() -> TransactionContextBuilder
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() -> TransactionContextBuilder
pub fn with_noop_auth_account() -> TransactionContextBuilder
Same as Self::with_existing_mock_account but with a NoopAuthComponent.
Sourcepub fn with_fungible_faucet(
acct_id: u128,
initial_balance: BaseElement,
) -> TransactionContextBuilder
pub fn with_fungible_faucet( acct_id: u128, initial_balance: BaseElement, ) -> TransactionContextBuilder
Initializes a TransactionContextBuilder with a mocked fungible faucet.
Sourcepub fn with_non_fungible_faucet(acct_id: u128) -> TransactionContextBuilder
pub fn with_non_fungible_faucet(acct_id: u128) -> TransactionContextBuilder
Initializes a TransactionContextBuilder with a mocked non-fungible faucet.
Sourcepub fn extend_advice_inputs(
self,
advice_inputs: AdviceInputs,
) -> TransactionContextBuilder
pub fn extend_advice_inputs( self, advice_inputs: AdviceInputs, ) -> TransactionContextBuilder
Extend the advice inputs with the provided AdviceInputs instance.
Sourcepub fn extend_advice_map(
self,
map_entries: impl IntoIterator<Item = (Word, Vec<BaseElement>)>,
) -> TransactionContextBuilder
pub fn extend_advice_map( self, map_entries: impl IntoIterator<Item = (Word, Vec<BaseElement>)>, ) -> TransactionContextBuilder
Extend the advice inputs map with the provided iterator.
Sourcepub fn authenticator(
self,
authenticator: Option<BasicAuthenticator>,
) -> TransactionContextBuilder
pub fn authenticator( self, authenticator: Option<BasicAuthenticator>, ) -> TransactionContextBuilder
Set the authenticator for the transaction (if needed)
Sourcepub fn foreign_accounts(
self,
inputs: impl IntoIterator<Item = (Account, AccountWitness)>,
) -> TransactionContextBuilder
pub fn foreign_accounts( self, inputs: impl IntoIterator<Item = (Account, AccountWitness)>, ) -> TransactionContextBuilder
Set foreign account codes that are used by the transaction
Sourcepub fn extend_input_notes(
self,
input_notes: Vec<Note>,
) -> TransactionContextBuilder
pub fn extend_input_notes( self, input_notes: Vec<Note>, ) -> TransactionContextBuilder
Extend the set of used input notes
Sourcepub fn tx_script(
self,
tx_script: TransactionScript,
) -> TransactionContextBuilder
pub fn tx_script( self, tx_script: TransactionScript, ) -> TransactionContextBuilder
Set the desired transaction script
Sourcepub fn tx_script_args(self, tx_script_args: Word) -> TransactionContextBuilder
pub fn tx_script_args(self, tx_script_args: Word) -> TransactionContextBuilder
Set the transaction script arguments
Sourcepub fn auth_args(self, auth_args: Word) -> TransactionContextBuilder
pub fn auth_args(self, auth_args: Word) -> TransactionContextBuilder
Set the desired auth arguments
Sourcepub fn tx_inputs(
self,
tx_inputs: TransactionInputs,
) -> TransactionContextBuilder
pub fn tx_inputs( self, tx_inputs: TransactionInputs, ) -> TransactionContextBuilder
Set the desired transaction inputs
Sourcepub fn disable_lazy_loading(self) -> TransactionContextBuilder
pub fn disable_lazy_loading(self) -> TransactionContextBuilder
Disables lazy loading.
Only affects TransactionContext::execute_code and causes the host to not handle lazy
loading events.
Sourcepub fn disable_debug_mode(self) -> TransactionContextBuilder
pub fn disable_debug_mode(self) -> TransactionContextBuilder
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>,
) -> TransactionContextBuilder
pub fn extend_note_args( self, note_args: BTreeMap<NoteId, Word>, ) -> TransactionContextBuilder
Extend the note arguments map with the provided one.
Sourcepub fn extend_expected_output_notes(
self,
output_notes: Vec<OutputNote>,
) -> TransactionContextBuilder
pub fn extend_expected_output_notes( self, output_notes: Vec<OutputNote>, ) -> TransactionContextBuilder
Extend the expected output notes.
Sourcepub fn with_source_manager(
self,
source_manager: Arc<dyn SourceManagerSync>,
) -> TransactionContextBuilder
pub fn with_source_manager( self, source_manager: Arc<dyn SourceManagerSync>, ) -> TransactionContextBuilder
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,
) -> TransactionContextBuilder
pub fn add_signature( self, pub_key: PublicKeyCommitment, message: Word, signature: Signature, ) -> TransactionContextBuilder
Add a new signature for the message and the public key.
Sourcepub fn add_note_script(self, script: NoteScript) -> TransactionContextBuilder
pub fn add_note_script(self, script: NoteScript) -> TransactionContextBuilder
Add a note script to the context for testing.
Sourcepub fn build(self) -> Result<TransactionContext, Error>
pub fn build(self) -> Result<TransactionContext, Error>
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§
Source§impl Default for TransactionContextBuilder
impl Default for TransactionContextBuilder
Source§fn default() -> TransactionContextBuilder
fn default() -> TransactionContextBuilder
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<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