Skip to main content

MockTransactionBuilder

Struct MockTransactionBuilder 

Source
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>

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

pub fn authenticator(self, authenticator: Option<BasicAuthenticator>) -> Self

Set the authenticator for the transaction (if needed).

Source

pub fn extend_advice_inputs(self, advice_inputs: AdviceInputs) -> Self

Extends the advice inputs with the provided AdviceInputs instance.

Source

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.

Source

pub fn foreign_accounts( self, inputs: impl IntoIterator<Item = (Account, AccountWitness)>, ) -> Self

Sets foreign account inputs that are used by the transaction.

Source

pub fn tx_script(self, tx_script: TransactionScript) -> Self

Sets the desired transaction script.

Source

pub fn tx_script_args(self, tx_script_args: Word) -> Self

Sets the transaction script arguments.

Source

pub fn auth_args(self, auth_args: Word) -> Self

Sets the desired auth arguments.

Source

pub fn extend_note_args(self, note_args: BTreeMap<NoteId, Word>) -> Self

Extends the note arguments map with the provided one.

Source

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.

Source

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.

Source

pub fn add_signature( self, pub_key: PublicKeyCommitment, message: Word, signature: Signature, ) -> Self

Adds a new signature for the message and the public key.

Source

pub fn add_note_script(self, script: NoteScript) -> Self

Adds a note script to the context for testing.

Source

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.

Source

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.

Source

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> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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 more
Source§

impl<D> OwoColorize for D

Source§

fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>
where C: Color,

Set the foreground color generically Read more
Source§

fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>
where C: Color,

Set the background color generically. Read more
Source§

fn black(&self) -> FgColorDisplay<'_, Black, Self>

Change the foreground color to black
Source§

fn on_black(&self) -> BgColorDisplay<'_, Black, Self>

Change the background color to black
Source§

fn red(&self) -> FgColorDisplay<'_, Red, Self>

Change the foreground color to red
Source§

fn on_red(&self) -> BgColorDisplay<'_, Red, Self>

Change the background color to red
Source§

fn green(&self) -> FgColorDisplay<'_, Green, Self>

Change the foreground color to green
Source§

fn on_green(&self) -> BgColorDisplay<'_, Green, Self>

Change the background color to green
Source§

fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>

Change the foreground color to yellow
Source§

fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>

Change the background color to yellow
Source§

fn blue(&self) -> FgColorDisplay<'_, Blue, Self>

Change the foreground color to blue
Source§

fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>

Change the background color to blue
Source§

fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to magenta
Source§

fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to magenta
Source§

fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to purple
Source§

fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to purple
Source§

fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>

Change the foreground color to cyan
Source§

fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>

Change the background color to cyan
Source§

fn white(&self) -> FgColorDisplay<'_, White, Self>

Change the foreground color to white
Source§

fn on_white(&self) -> BgColorDisplay<'_, White, Self>

Change the background color to white
Source§

fn default_color(&self) -> FgColorDisplay<'_, Default, Self>

Change the foreground color to the terminal default
Source§

fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>

Change the background color to the terminal default
Source§

fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>

Change the foreground color to bright black
Source§

fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>

Change the background color to bright black
Source§

fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>

Change the foreground color to bright red
Source§

fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>

Change the background color to bright red
Source§

fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>

Change the foreground color to bright green
Source§

fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>

Change the background color to bright green
Source§

fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>

Change the foreground color to bright yellow
Source§

fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>

Change the background color to bright yellow
Source§

fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>

Change the foreground color to bright blue
Source§

fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>

Change the background color to bright blue
Source§

fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright magenta
Source§

fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright magenta
Source§

fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright purple
Source§

fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright purple
Source§

fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>

Change the foreground color to bright cyan
Source§

fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>

Change the background color to bright cyan
Source§

fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>

Change the foreground color to bright white
Source§

fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>

Change the background color to bright white
Source§

fn bold(&self) -> BoldDisplay<'_, Self>

Make the text bold
Source§

fn dimmed(&self) -> DimDisplay<'_, Self>

Make the text dim
Source§

fn italic(&self) -> ItalicDisplay<'_, Self>

Make the text italicized
Source§

fn underline(&self) -> UnderlineDisplay<'_, Self>

Make the text underlined
Make the text blink
Make the text blink (but fast!)
Source§

fn reversed(&self) -> ReversedDisplay<'_, Self>

Swap the foreground and background colors
Source§

fn hidden(&self) -> HiddenDisplay<'_, Self>

Hide the text
Source§

fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>

Cross out the text
Source§

fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the foreground color at runtime. Only use if you do not know which color will be used at compile-time. If the color is constant, use either OwoColorize::fg or a color-specific method, such as OwoColorize::green, Read more
Source§

fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the background color at runtime. Only use if you do not know what color to use at compile-time. If the color is constant, use either OwoColorize::bg or a color-specific method, such as OwoColorize::on_yellow, Read more
Source§

fn fg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the foreground color to a specific RGB value.
Source§

fn bg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the background color to a specific RGB value.
Source§

fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>

Sets the foreground color to an RGB value.
Source§

fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>

Sets the background color to an RGB value.
Source§

fn style(&self, style: Style) -> Styled<&Self>

Apply a runtime-determined style
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more