TransactionKernel

Struct TransactionKernel 

Source
pub struct TransactionKernel;

Implementations§

Source§

impl TransactionKernel

Source

pub const NUM_VERSIONS: usize = 1usize

Number of currently used kernel versions.

Source

pub const PROCEDURES: [&'static [Word]; 1]

Array of all available kernels.

Source

pub fn procedures_as_elements(kernel_version: u8) -> Vec<Felt>

Returns procedures of the kernel specified by the kernel_version as vector of Felts.

Source

pub fn commitment(kernel_version: u8) -> Word

Computes the accumulative hash of all procedures of the kernel specified by the kernel_version.

Source

pub fn kernel_commitment() -> Word

Computes a hash from all kernel commitments.

Source§

impl TransactionKernel

Source

pub fn kernel() -> KernelLibrary

Returns a library with the transaction kernel system procedures.

§Panics

Panics if the transaction kernel source is not well-formed.

Source

pub fn main() -> Program

Returns an AST of the transaction kernel executable program.

§Panics

Panics if the transaction kernel source is not well-formed.

Source

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.

Source

pub fn program_info() -> ProgramInfo

Returns ProgramInfo for the transaction kernel executable program.

§Panics

Panics if the transaction kernel source is not well-formed.

Source

pub fn prepare_inputs( tx_inputs: &TransactionInputs, tx_args: &TransactionArgs, init_advice_inputs: Option<AdviceInputs>, ) -> Result<(StackInputs, TransactionAdviceInputs), TransactionAdviceMapMismatch>

Transforms the provided TransactionInputs and TransactionArgs into stack and advice inputs needed to execute a transaction kernel for a specific transaction.

If init_advice_inputs is provided, they will be included in the returned advice inputs.

Source

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.

Source

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.

Source

pub fn build_input_stack( account_id: AccountId, init_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.
Source

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

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

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.

Auto Trait Implementations§

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