pub struct MockTransactionBuilder<'chain> { /* private fields */ }Expand description
A builder for a TransactionContext that is coupled to a concrete MockChain.
It is the public entry point for executing a transaction against a chain and is created through
MockChain::build_transaction. Contrary to MockChain::build_tx_context, input notes are
not passed up front but added explicitly through Self::authenticated_input_note and
Self::unauthenticated_input_note. The transaction inputs are only resolved against the chain
in Self::build, once all input notes are known, by calling
MockChain::get_transaction_inputs.
§Examples
let mut builder = MockChain::builder();
let sender = builder.add_existing_mock_account(Auth::IncrNonce)?;
let account = builder.add_existing_mock_account(Auth::IncrNonce)?;
let note = builder.add_p2id_note(
sender.id(),
account.id(),
&[FungibleAsset::mock(100)],
NoteType::Public,
)?;
let chain = builder.build()?;
let executed = chain
.build_transaction(account.id())
.authenticated_input_note(note.id())
.build()?
.execute()
.await?;
assert_eq!(executed.input_notes().num_notes(), 1);Implementations§
Source§impl<'chain> MockTransactionBuilder<'chain>
impl<'chain> MockTransactionBuilder<'chain>
Sourcepub fn authenticated_input_note(self, note_id: NoteId) -> Self
pub fn authenticated_input_note(self, note_id: NoteId) -> Self
Adds an authenticated input note that the transaction consumes.
The note must already be committed to the chain so that its inclusion proof can be resolved
in Self::build.
Sourcepub fn authenticated_input_notes(
self,
note_ids: impl IntoIterator<Item = NoteId>,
) -> Self
pub fn authenticated_input_notes( self, note_ids: impl IntoIterator<Item = NoteId>, ) -> Self
Adds multiple authenticated input notes that the transaction consumes.
This is the iterator equivalent of Self::authenticated_input_note.
Sourcepub fn unauthenticated_input_note(self, note: Note) -> Self
pub fn unauthenticated_input_note(self, note: Note) -> Self
Adds an unauthenticated input note that the transaction consumes.
Contrary to Self::authenticated_input_note, the note does not need to be committed to
the chain.
Sourcepub fn unauthenticated_input_notes(
self,
notes: impl IntoIterator<Item = Note>,
) -> Self
pub fn unauthenticated_input_notes( self, notes: impl IntoIterator<Item = Note>, ) -> Self
Adds multiple unauthenticated input notes that the transaction consumes.
This is the iterator equivalent of Self::unauthenticated_input_note.
Sourcepub fn reference_block(self, reference_block: impl Into<BlockNumber>) -> Self
pub fn reference_block(self, reference_block: impl Into<BlockNumber>) -> Self
Sets the block the transaction executes against.
By default the transaction is built against the chain’s latest block. Use this to execute against an earlier block instead, e.g. to test block-height-dependent script logic such as timelocks or note expiration. All input notes must have been created at or before this block.
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 extend_advice_inputs(self, advice_inputs: AdviceInputs) -> Self
pub fn extend_advice_inputs(self, advice_inputs: AdviceInputs) -> Self
Extends the advice inputs with the provided AdviceInputs instance.
Sourcepub fn extend_advice_map(self, key: Word, value: Vec<Felt>) -> Self
pub fn extend_advice_map(self, key: Word, value: Vec<Felt>) -> Self
Inserts a single key-value pair into the advice inputs map.
To add multiple entries, call this repeatedly or use Self::extend_advice_inputs.
Sourcepub fn foreign_accounts(
self,
inputs: impl IntoIterator<Item = (Account, AccountWitness)>,
) -> Self
pub fn foreign_accounts( self, inputs: impl IntoIterator<Item = (Account, AccountWitness)>, ) -> Self
Sets foreign account inputs that are used by the transaction.
Sourcepub fn tx_script(self, tx_script: TransactionScript) -> Self
pub fn tx_script(self, tx_script: TransactionScript) -> Self
Sets 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
Sets the transaction script arguments.
Sourcepub fn extend_note_args(self, note_args: BTreeMap<NoteId, Word>) -> Self
pub fn extend_note_args(self, note_args: BTreeMap<NoteId, Word>) -> Self
Extends the note arguments map with the provided one.
Sourcepub fn expected_output_note(self, output_note: RawOutputNote) -> Self
pub fn expected_output_note(self, output_note: RawOutputNote) -> Self
Adds a single expected output note.
A RawOutputNote::Partial note is ignored, since it does not carry the recipient details
required to reconstruct the note.
Sourcepub fn expected_output_notes(self, output_notes: Vec<RawOutputNote>) -> Self
pub fn expected_output_notes(self, output_notes: Vec<RawOutputNote>) -> Self
Extends the expected output notes.
This is the iterator equivalent of Self::expected_output_note.
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
Adds 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
Adds a note script to the context for testing.
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 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 build(self) -> Result<TransactionContext>
pub fn build(self) -> Result<TransactionContext>
Builds the TransactionContext.
The configured account and input notes are resolved into TransactionInputs against the
Self::reference_block (defaulting to the chain’s latest block) through
MockChain::get_transaction_inputs, and the remaining configuration is assembled into the
TransactionContext.
Auto Trait Implementations§
impl<'chain> !RefUnwindSafe for MockTransactionBuilder<'chain>
impl<'chain> !UnwindSafe for MockTransactionBuilder<'chain>
impl<'chain> Freeze for MockTransactionBuilder<'chain>
impl<'chain> Send for MockTransactionBuilder<'chain>
impl<'chain> Sync for MockTransactionBuilder<'chain>
impl<'chain> Unpin for MockTransactionBuilder<'chain>
impl<'chain> UnsafeUnpin for MockTransactionBuilder<'chain>
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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