pub struct TransactionExecutor { /* private fields */ }Expand description
The transaction executor is responsible for executing Miden rollup transactions.
Transaction execution consists of the following steps:
- Fetch the data required to execute a transaction from the DataStore.
- Execute the transaction program and create an ExecutedTransaction.
The transaction executor uses dynamic dispatch with trait objects for the DataStore and TransactionAuthenticator, allowing it to be used with different backend implementations. At the moment of execution, the DataStore is expected to provide all required MAST nodes.
Implementations§
Source§impl TransactionExecutor
impl TransactionExecutor
Sourcepub fn new(
data_store: Arc<dyn DataStore>,
authenticator: Option<Arc<dyn TransactionAuthenticator>>,
) -> Self
pub fn new( data_store: Arc<dyn DataStore>, authenticator: Option<Arc<dyn TransactionAuthenticator>>, ) -> Self
Creates a new TransactionExecutor instance with the specified DataStore and TransactionAuthenticator.
Sourcepub fn with_debug_mode(self) -> Self
pub fn with_debug_mode(self) -> Self
Puts the TransactionExecutor into debug mode.
When transaction executor is in debug mode, all transaction-related code (note scripts, account code) will be compiled and executed in debug mode. This will ensure that all debug instructions present in the original source code are executed.
Sourcepub fn with_tracing(self) -> Self
pub fn with_tracing(self) -> Self
Enables tracing for the created instance of TransactionExecutor.
When tracing is enabled, the executor will receive tracing events as various stages of the transaction kernel complete. This enables collecting basic stats about how long different stages of transaction execution take.
Sourcepub fn execute_transaction(
&self,
account_id: AccountId,
block_ref: BlockNumber,
notes: InputNotes<InputNote>,
tx_args: TransactionArgs,
source_manager: Arc<dyn SourceManager>,
) -> Result<ExecutedTransaction, TransactionExecutorError>
pub fn execute_transaction( &self, account_id: AccountId, block_ref: BlockNumber, notes: InputNotes<InputNote>, tx_args: TransactionArgs, source_manager: Arc<dyn SourceManager>, ) -> Result<ExecutedTransaction, TransactionExecutorError>
Prepares and executes a transaction specified by the provided arguments and returns an
ExecutedTransaction.
The method first fetches the data required to execute the transaction from the DataStore
and compile the transaction into an executable program. In particular, it fetches the
account identified by the account ID from the store as well as block_ref, the header of
the reference block of the transaction and the set of headers from the blocks in which the
provided notes were created. Then, it executes the transaction program and creates an
ExecutedTransaction.
The source_manager is used to map potential errors back to their source code. To get the
most value out of it, use the source manager from the
Assembler that assembled the Miden Assembly code
that should be debugged, e.g. account components, note scripts or transaction scripts. If
no error-to-source mapping is desired, a default source manager can be passed, e.g.
DefaultSourceManager::default.
§Errors:
Returns an error if:
- If required data can not be fetched from the
DataStore. - If the transaction arguments contain foreign account data not anchored in the reference block.
- If any input notes were created in block numbers higher than the reference block.
Sourcepub fn execute_tx_view_script(
&self,
account_id: AccountId,
block_ref: BlockNumber,
tx_script: TransactionScript,
advice_inputs: AdviceInputs,
foreign_account_inputs: Vec<AccountInputs>,
source_manager: Arc<dyn SourceManager>,
) -> Result<[Felt; 16], TransactionExecutorError>
pub fn execute_tx_view_script( &self, account_id: AccountId, block_ref: BlockNumber, tx_script: TransactionScript, advice_inputs: AdviceInputs, foreign_account_inputs: Vec<AccountInputs>, source_manager: Arc<dyn SourceManager>, ) -> Result<[Felt; 16], TransactionExecutorError>
Executes an arbitrary script against the given account and returns the stack state at the end of execution.
The source_manager is used to map potential errors back to their source code. To get the
most value out of it, use the source manager from the
Assembler that assembled the Miden Assembly code
that should be debugged, e.g. account components, note scripts or transaction scripts. If
no error-to-source mapping is desired, a default source manager can be passed, e.g.
DefaultSourceManager::default.
§Errors:
Returns an error if:
- If required data can not be fetched from the DataStore.
- If the transaction host can not be created from the provided values.
- If the execution of the provided program fails.
Auto Trait Implementations§
impl Freeze for TransactionExecutor
impl !RefUnwindSafe for TransactionExecutor
impl !Send for TransactionExecutor
impl !Sync for TransactionExecutor
impl Unpin for TransactionExecutor
impl !UnwindSafe for TransactionExecutor
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<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