pub struct AccountCode { /* private fields */ }
Expand description
A public interface of an account.
Account’s public interface consists of a set of account procedures, each procedure being a Miden VM program. Thus, MAST root of each procedure commits to the underlying program.
Each exported procedure is associated with a storage offset and a storage size.
We commit to the entire account interface by building a sequential hash of all procedure MAST roots and associated storage_offset’s. Specifically, each procedure contributes exactly 8 field elements to the sequence of elements to be hashed. These elements are defined as follows:
[PROCEDURE_MAST_ROOT, storage_offset, 0, 0, storage_size]
Implementations§
Source§impl AccountCode
impl AccountCode
Sourcepub const MAX_NUM_PROCEDURES: usize = 256usize
pub const MAX_NUM_PROCEDURES: usize = 256usize
The maximum number of account interface procedures.
Sourcepub const MIN_NUM_PROCEDURES: usize = 2usize
pub const MIN_NUM_PROCEDURES: usize = 2usize
The minimum number of account interface procedures (one auth and at least one non-auth).
Sourcepub fn from_bytes(bytes: &[u8]) -> Result<Self, AccountError>
pub fn from_bytes(bytes: &[u8]) -> Result<Self, AccountError>
Returns a new AccountCode deserialized from the provided bytes.
§Errors
Returns an error if account code deserialization fails.
Sourcepub fn from_parts(
mast: Arc<MastForest>,
procedures: Vec<AccountProcedureInfo>,
) -> Self
pub fn from_parts( mast: Arc<MastForest>, procedures: Vec<AccountProcedureInfo>, ) -> Self
Returns a new definition of an account’s interface instantiated from the provided MastForest and a list of AccountProcedureInfos.
§Panics
Panics if:
- The number of procedures is smaller than 1 or greater than 256.
- If some any of the provided procedures does not have a corresponding root in the provided MAST forest.
Sourcepub fn commitment(&self) -> Word
pub fn commitment(&self) -> Word
Returns a commitment to an account’s public interface.
Sourcepub fn mast(&self) -> Arc<MastForest>
pub fn mast(&self) -> Arc<MastForest>
Returns a reference to the MastForest backing this account code.
Sourcepub fn procedures(&self) -> &[AccountProcedureInfo]
pub fn procedures(&self) -> &[AccountProcedureInfo]
Returns a reference to the account procedures.
Sourcepub fn procedure_roots(&self) -> impl Iterator<Item = Word> + '_
pub fn procedure_roots(&self) -> impl Iterator<Item = Word> + '_
Returns an iterator over the procedure MAST roots of this account code.
Sourcepub fn num_procedures(&self) -> usize
pub fn num_procedures(&self) -> usize
Returns the number of public interface procedures defined in this account code.
Sourcepub fn has_procedure(&self, mast_root: Word) -> bool
pub fn has_procedure(&self, mast_root: Word) -> bool
Returns true if a procedure with the specified MAST root is defined in this account code.
Sourcepub fn get_procedure_by_index(&self, index: usize) -> &AccountProcedureInfo
pub fn get_procedure_by_index(&self, index: usize) -> &AccountProcedureInfo
Returns information about the procedure at the specified index.
§Panics
Panics if the provided index is out of bounds.
Sourcepub fn get_procedure_index_by_root(&self, root: Word) -> Option<usize>
pub fn get_procedure_index_by_root(&self, root: Word) -> Option<usize>
Returns the procedure index for the procedure with the specified MAST root or None if such procedure is not defined in this AccountCode.
Sourcepub fn as_elements(&self) -> Vec<Felt>
pub fn as_elements(&self) -> Vec<Felt>
Converts procedure information in this AccountCode into a vector of field elements.
This is done by first converting each procedure into 8 field elements as follows:
[PROCEDURE_MAST_ROOT, storage_offset, storage_size, 0, 0]
And then concatenating the resulting elements into a single vector.
Sourcepub fn printable_procedures(&self) -> impl Iterator<Item = PrintableProcedure>
pub fn printable_procedures(&self) -> impl Iterator<Item = PrintableProcedure>
Returns an iterator of printable representations for all procedures in this account code.
§Returns
An iterator yielding PrintableProcedure
instances for all procedures in this account
code.
Trait Implementations§
Source§impl Clone for AccountCode
impl Clone for AccountCode
Source§fn clone(&self) -> AccountCode
fn clone(&self) -> AccountCode
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for AccountCode
impl Debug for AccountCode
Source§impl Deserializable for AccountCode
impl Deserializable for AccountCode
Source§fn read_from<R: ByteReader>(
source: &mut R,
) -> Result<Self, DeserializationError>
fn read_from<R: ByteReader>( source: &mut R, ) -> Result<Self, DeserializationError>
source
, attempts to deserialize these bytes
into Self
, and returns the result. Read moreSource§fn read_from_bytes(bytes: &[u8]) -> Result<Self, DeserializationError>
fn read_from_bytes(bytes: &[u8]) -> Result<Self, DeserializationError>
Source§impl Ord for AccountCode
impl Ord for AccountCode
Source§impl PartialEq for AccountCode
impl PartialEq for AccountCode
Source§impl PartialOrd for AccountCode
impl PartialOrd for AccountCode
Source§impl PrettyPrint for AccountCode
impl PrettyPrint for AccountCode
Source§fn to_pretty_string(&self) -> String
fn to_pretty_string(&self) -> String
Source§fn pretty_print(&self, f: &mut Formatter<'_>) -> Result<(), Error>
fn pretty_print(&self, f: &mut Formatter<'_>) -> Result<(), Error>
Source§impl Serializable for AccountCode
impl Serializable for AccountCode
Source§fn write_into<W: ByteWriter>(&self, target: &mut W)
fn write_into<W: ByteWriter>(&self, target: &mut W)
self
into bytes and writes these bytes into the target
.Source§fn get_size_hint(&self) -> usize
fn get_size_hint(&self) -> usize
impl Eq for AccountCode
Auto Trait Implementations§
impl Freeze for AccountCode
impl RefUnwindSafe for AccountCode
impl Send for AccountCode
impl Sync for AccountCode
impl Unpin for AccountCode
impl UnwindSafe for AccountCode
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.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