pub struct Account { /* private fields */ }Expand description
An account which can store assets and define rules for manipulating them.
An account consists of the following components:
- Account ID, which uniquely identifies the account and also defines basic properties of the account.
- Account vault, which stores assets owned by the account.
- Account storage, which is a key-value map (both keys and values are words) used to store arbitrary user-defined data.
- Account code, which is a set of Miden VM programs defining the public interface of the account.
- Account nonce, a value which is incremented whenever account state is updated.
Out of the above components account ID is always immutable (once defined it can never be changed). Other components may be mutated throughout the lifetime of the account. However, account state can be changed only by invoking one of account interface methods.
The recommended way to build an account is through an AccountBuilder, which can be
instantiated through Account::builder. See the type’s documentation for details.
Implementations§
Source§impl Account
impl Account
Sourcepub fn from_parts(
id: AccountId,
vault: AssetVault,
storage: AccountStorage,
code: AccountCode,
nonce: Felt,
) -> Self
pub fn from_parts( id: AccountId, vault: AssetVault, storage: AccountStorage, code: AccountCode, nonce: Felt, ) -> Self
Returns an Account instantiated with the provided components.
Sourcepub fn builder(init_seed: [u8; 32]) -> AccountBuilder
pub fn builder(init_seed: [u8; 32]) -> AccountBuilder
Creates a new AccountBuilder for an account and sets the initial seed from which the
grinding process for that account’s AccountId will start.
This initial seed should come from a cryptographic random number generator.
Sourcepub fn commitment(&self) -> Digest
pub fn commitment(&self) -> Digest
Returns the commitment of this account.
The commitment of an account is computed as hash(id, nonce, vault_root, storage_commitment, code_commitment). Computing the account commitment requires 2 permutations of the hash function.
Sourcepub fn init_commitment(&self) -> Digest
pub fn init_commitment(&self) -> Digest
Returns the commitment of this account as used for the initial account state commitment in transaction proofs.
For existing accounts, this is exactly the same as Account::commitment(), however, for new accounts this value is set to crate::EMPTY_WORD. This is because when a transaction is executed against a new account, public input for the initial account state is set to crate::EMPTY_WORD to distinguish new accounts from existing accounts. The actual commitment of the initial account state (and the initial state itself), are provided to the VM via the advice provider.
Sourcepub fn account_type(&self) -> AccountType
pub fn account_type(&self) -> AccountType
Returns the account type
Sourcepub fn vault(&self) -> &AssetVault
pub fn vault(&self) -> &AssetVault
Returns a reference to the vault of this account.
Sourcepub fn storage(&self) -> &AccountStorage
pub fn storage(&self) -> &AccountStorage
Returns a reference to the storage of this account.
Sourcepub fn code(&self) -> &AccountCode
pub fn code(&self) -> &AccountCode
Returns a reference to the code of this account.
Sourcepub fn is_regular_account(&self) -> bool
pub fn is_regular_account(&self) -> bool
Returns true if this is a regular account.
Sourcepub fn is_onchain(&self) -> bool
pub fn is_onchain(&self) -> bool
Returns true if the full state of the account is on chain, i.e. if the storage modes are
AccountStorageMode::Public or AccountStorageMode::Network, false otherwise.
Sourcepub fn is_public(&self) -> bool
pub fn is_public(&self) -> bool
Returns true if the storage mode is AccountStorageMode::Public, false otherwise.
Sourcepub fn is_private(&self) -> bool
pub fn is_private(&self) -> bool
Returns true if the storage mode is AccountStorageMode::Private, false otherwise.
Sourcepub fn is_network(&self) -> bool
pub fn is_network(&self) -> bool
Returns true if the storage mode is AccountStorageMode::Network, false otherwise.
Sourcepub fn is_new(&self) -> bool
pub fn is_new(&self) -> bool
Returns true if the account is new (i.e. it has not been initialized yet).
Sourcepub fn into_parts(
self,
) -> (AccountId, AssetVault, AccountStorage, AccountCode, Felt)
pub fn into_parts( self, ) -> (AccountId, AssetVault, AccountStorage, AccountCode, Felt)
Decomposes the account into the underlying account components.
Sourcepub fn apply_delta(&mut self, delta: &AccountDelta) -> Result<(), AccountError>
pub fn apply_delta(&mut self, delta: &AccountDelta) -> Result<(), AccountError>
Applies the provided delta to this account. This updates account vault, storage, and nonce to the values specified by the delta.
§Errors
Returns an error if:
- Applying vault sub-delta to the vault of this account fails.
- Applying storage sub-delta to the storage of this account fails.
- The nonce specified in the provided delta smaller than or equal to the current account nonce.
Trait Implementations§
Source§impl Deserializable for Account
impl Deserializable for Account
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 From<&Account> for AccountHeader
impl From<&Account> for AccountHeader
Source§impl From<&Account> for PartialAccount
impl From<&Account> for PartialAccount
Source§impl From<Account> for AccountDelta
Converts an Account into an AccountDelta for initial delta construction.
impl From<Account> for AccountDelta
Converts an Account into an AccountDelta for initial delta construction.
Source§impl From<Account> for AccountHeader
impl From<Account> for AccountHeader
Source§impl From<Account> for PartialAccount
impl From<Account> for PartialAccount
Source§impl Serializable for Account
impl Serializable for Account
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 Account
impl StructuralPartialEq for Account
Auto Trait Implementations§
impl Freeze for Account
impl RefUnwindSafe for Account
impl Send for Account
impl Sync for Account
impl Unpin for Account
impl UnwindSafe for Account
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> 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