pub struct TransactionKernel;Implementations§
Source§impl TransactionKernel
impl TransactionKernel
Sourcepub const PROCEDURES: &'static [Word]
pub const PROCEDURES: &'static [Word]
Array of kernel procedures.
Sourcepub fn kernel() -> KernelLibrary
pub fn kernel() -> KernelLibrary
Returns a library with the transaction kernel system procedures.
§Panics
Panics if the transaction kernel source is not well-formed.
Sourcepub fn main() -> Program
pub fn main() -> Program
Returns an AST of the transaction kernel executable program.
§Panics
Panics if the transaction kernel source is not well-formed.
Sourcepub fn tx_script_main() -> Program
pub fn tx_script_main() -> Program
Returns an AST of the transaction script executor program.
§Panics
Panics if the transaction kernel source is not well-formed.
Sourcepub fn program_info() -> ProgramInfo
pub fn program_info() -> ProgramInfo
Returns ProgramInfo for the transaction kernel executable program.
§Panics
Panics if the transaction kernel source is not well-formed.
Sourcepub fn prepare_inputs(
tx_inputs: &TransactionInputs,
) -> Result<(StackInputs, TransactionAdviceInputs), TransactionAdviceMapMismatch>
pub fn prepare_inputs( tx_inputs: &TransactionInputs, ) -> Result<(StackInputs, TransactionAdviceInputs), TransactionAdviceMapMismatch>
Transforms the provided TransactionInputs into stack and advice
inputs needed to execute a transaction kernel for a specific transaction.
Sourcepub fn assembler() -> Assembler
pub fn assembler() -> Assembler
Returns a new Miden assembler instantiated with the transaction kernel and loaded with the Miden stdlib as well as with miden-lib.
Sourcepub fn assembler_with_source_manager(
source_manager: Arc<dyn SourceManagerSync>,
) -> Assembler
pub fn assembler_with_source_manager( source_manager: Arc<dyn SourceManagerSync>, ) -> Assembler
Returns a new assembler instantiated with the transaction kernel and loaded with the Miden stdlib as well as with miden-lib.
Sourcepub fn build_input_stack(
account_id: AccountId,
initial_account_commitment: Word,
input_notes_commitment: Word,
block_commitment: Word,
block_num: BlockNumber,
) -> StackInputs
pub fn build_input_stack( account_id: AccountId, initial_account_commitment: Word, input_notes_commitment: Word, block_commitment: Word, block_num: BlockNumber, ) -> StackInputs
Returns the stack with the public inputs required by the transaction kernel.
The initial stack is defined:
[
BLOCK_COMMITMENT,
INITIAL_ACCOUNT_COMMITMENT,
INPUT_NOTES_COMMITMENT,
account_id_prefix, account_id_suffix, block_num
]Where:
- BLOCK_COMMITMENT is the commitment to the reference block of the transaction.
- block_num is the reference block number.
- account_id_{prefix,suffix} are the prefix and suffix felts of the account that the transaction is being executed against.
- INITIAL_ACCOUNT_COMMITMENT is the account state prior to the transaction, EMPTY_WORD for new accounts.
- INPUT_NOTES_COMMITMENT, see
transaction::api::get_input_notes_commitment.
Sourcepub fn build_output_stack(
final_account_commitment: Word,
account_delta_commitment: Word,
output_notes_commitment: Word,
fee: FungibleAsset,
expiration_block_num: BlockNumber,
) -> StackOutputs
pub fn build_output_stack( final_account_commitment: Word, account_delta_commitment: Word, output_notes_commitment: Word, fee: FungibleAsset, expiration_block_num: BlockNumber, ) -> StackOutputs
Builds the stack for expected transaction execution outputs. The transaction kernel’s output stack is formed like so:
[
OUTPUT_NOTES_COMMITMENT,
ACCOUNT_UPDATE_COMMITMENT,
FEE_ASSET,
expiration_block_num,
]Where:
- OUTPUT_NOTES_COMMITMENT is a commitment to the output notes.
- ACCOUNT_UPDATE_COMMITMENT is the hash of the the final account commitment and account delta commitment.
- FEE_ASSET is the fungible asset used as the transaction fee.
- expiration_block_num is the block number at which the transaction will expire.
Sourcepub fn parse_output_stack(
stack: &StackOutputs,
) -> Result<(Word, Word, FungibleAsset, BlockNumber), TransactionOutputError>
pub fn parse_output_stack( stack: &StackOutputs, ) -> Result<(Word, Word, FungibleAsset, BlockNumber), TransactionOutputError>
Extracts transaction output data from the provided stack outputs.
The data on the stack is expected to be arranged as follows:
[
OUTPUT_NOTES_COMMITMENT,
ACCOUNT_UPDATE_COMMITMENT,
FEE_ASSET,
expiration_block_num,
]Where:
- OUTPUT_NOTES_COMMITMENT is the commitment of the output notes.
- ACCOUNT_UPDATE_COMMITMENT is the hash of the the final account commitment and account delta commitment.
- FEE_ASSET is the fungible asset used as the transaction fee.
- tx_expiration_block_num is the block height at which the transaction will become expired, defined by the sum of the execution block ref and the transaction’s block expiration delta (if set during transaction execution).
§Errors
Returns an error if:
- Indices 13..16 on the stack are not zeroes.
- Overflow addresses are not empty.
Sourcepub fn from_transaction_parts(
stack: &StackOutputs,
advice_inputs: &AdviceInputs,
output_notes: Vec<OutputNote>,
) -> Result<TransactionOutputs, TransactionOutputError>
pub fn from_transaction_parts( stack: &StackOutputs, advice_inputs: &AdviceInputs, output_notes: Vec<OutputNote>, ) -> Result<TransactionOutputs, TransactionOutputError>
Returns TransactionOutputs constructed from the provided output stack and advice map.
The output stack is expected to be arranged as follows:
[
OUTPUT_NOTES_COMMITMENT,
ACCOUNT_UPDATE_COMMITMENT,
FEE_ASSET,
expiration_block_num,
]Where:
- OUTPUT_NOTES_COMMITMENT is the commitment of the output notes.
- ACCOUNT_UPDATE_COMMITMENT is the hash of the final account commitment and the account delta commitment of the account that the transaction is being executed against.
- FEE_ASSET is the fungible asset used as the transaction fee.
- tx_expiration_block_num is the block height at which the transaction will become expired, defined by the sum of the execution block ref and the transaction’s block expiration delta (if set during transaction execution).
The actual data describing the new account state and output notes is expected to be located
in the provided advice map under keys OUTPUT_NOTES_COMMITMENT and
ACCOUNT_UPDATE_COMMITMENT, where the final data for the account state is located under
FINAL_ACCOUNT_COMMITMENT.
Sourcepub fn to_commitment(&self) -> Word
pub fn to_commitment(&self) -> Word
Computes the sequential hash of all kernel procedures.
Trait Implementations§
Source§impl SequentialCommit for TransactionKernel
impl SequentialCommit for TransactionKernel
Source§fn to_elements(&self) -> Vec<Felt>
fn to_elements(&self) -> Vec<Felt>
Returns kernel procedures as vector of Felts.
Source§type Commitment = Word
type Commitment = Word
Source§fn to_commitment(&self) -> Self::Commitment
fn to_commitment(&self) -> Self::Commitment
Auto Trait Implementations§
impl Freeze for TransactionKernel
impl RefUnwindSafe for TransactionKernel
impl Send for TransactionKernel
impl Sync for TransactionKernel
impl Unpin for TransactionKernel
impl UnwindSafe for TransactionKernel
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