pub struct AccountStorage { /* private fields */ }Expand description
Account storage is composed of a variable number of name-addressable StorageSlots up to
255 slots in total.
Each slot consists of a StorageSlotName and StorageSlotContent which defines its size
and structure. Currently, the following content types are supported:
StorageSlotContent::Value: contains a singleWordof data (i.e., 32 bytes).StorageSlotContent::Map: contains aStorageMapwhich is a key-value map where both keys and values are Words. The value of a storage slot containing a map is the commitment to the underlying map.
Slots are sorted by StorageSlotName (or StorageSlotId equivalently). This order is
necessary to:
- Simplify lookups of slots in the transaction kernel (using
std::collections::sorted_arrayfrom the miden core library) - Allow the
AccountStorageDeltato work only with slot names instead of slot indices. - Make it simple to check for duplicates by iterating the slots and checking that no two adjacent items have the same slot name.
Implementations§
Source§impl AccountStorage
impl AccountStorage
Sourcepub const MAX_NUM_STORAGE_SLOTS: usize = 255
pub const MAX_NUM_STORAGE_SLOTS: usize = 255
The maximum number of storage slots allowed in an account storage.
Sourcepub fn new(slots: Vec<StorageSlot>) -> Result<AccountStorage, AccountError>
pub fn new(slots: Vec<StorageSlot>) -> Result<AccountStorage, AccountError>
Returns a new instance of account storage initialized with the provided storage slots.
This function sorts the slots by StorageSlotName.
§Errors
Returns an error if:
- The number of
StorageSlots exceeds 255. - There are multiple storage slots with the same
StorageSlotName.
Sourcepub fn faucet_sysdata_slot() -> &'static StorageSlotName
pub fn faucet_sysdata_slot() -> &'static StorageSlotName
Returns the StorageSlotName of the faucet’s protocol system data.
Sourcepub fn to_elements(&self) -> Vec<Felt>
pub fn to_elements(&self) -> Vec<Felt>
Converts storage slots of this account storage into a vector of field elements.
Each storage slot is represented by exactly 8 elements:
[[0, slot_type, slot_id_suffix, slot_id_prefix], SLOT_VALUE]Sourcepub fn to_commitment(&self) -> Word
pub fn to_commitment(&self) -> Word
Returns the commitment to the AccountStorage.
Sourcepub fn slots(&self) -> &[StorageSlot]
pub fn slots(&self) -> &[StorageSlot]
Returns a reference to the storage slots.
Sourcepub fn into_slots(self) -> Vec<StorageSlot>
pub fn into_slots(self) -> Vec<StorageSlot>
Consumes self and returns the storage slots of the account storage.
Sourcepub fn to_header(&self) -> AccountStorageHeader
pub fn to_header(&self) -> AccountStorageHeader
Returns an AccountStorageHeader for this account storage.
Sourcepub fn get(&self, slot_name: &StorageSlotName) -> Option<&StorageSlot>
pub fn get(&self, slot_name: &StorageSlotName) -> Option<&StorageSlot>
Returns a reference to the storage slot with the provided name, if it exists, None
otherwise.
Sourcepub fn get_item(
&self,
slot_name: &StorageSlotName,
) -> Result<Word, AccountError>
pub fn get_item( &self, slot_name: &StorageSlotName, ) -> Result<Word, AccountError>
Returns an item from the storage slot with the given name.
§Errors
Returns an error if:
- A slot with the provided name does not exist.
Sourcepub fn get_map_item(
&self,
slot_name: &StorageSlotName,
key: Word,
) -> Result<Word, AccountError>
pub fn get_map_item( &self, slot_name: &StorageSlotName, key: Word, ) -> Result<Word, AccountError>
Returns a map item from the map in the storage slot with the given name.
§Errors
Returns an error if:
- A slot with the provided name does not exist.
- If the
StorageSlotis notStorageSlotType::Map.
Sourcepub fn set_item(
&mut self,
slot_name: &StorageSlotName,
value: Word,
) -> Result<Word, AccountError>
pub fn set_item( &mut self, slot_name: &StorageSlotName, value: Word, ) -> Result<Word, AccountError>
Updates the value of the storage slot with the given name.
This method should be used only to update value slots. For updating values
in storage maps, please see AccountStorage::set_map_item.
§Errors
Returns an error if:
- A slot with the provided name does not exist.
- The
StorageSlotis notStorageSlotType::Value.
Sourcepub fn set_map_item(
&mut self,
slot_name: &StorageSlotName,
raw_key: Word,
value: Word,
) -> Result<(Word, Word), AccountError>
pub fn set_map_item( &mut self, slot_name: &StorageSlotName, raw_key: Word, value: Word, ) -> Result<(Word, Word), AccountError>
Updates the value of a key-value pair of a storage map with the given name.
This method should be used only to update storage maps. For updating values in storage slots, please see AccountStorage::set_item().
§Errors
Returns an error if:
- A slot with the provided name does not exist.
- If the
StorageSlotis notStorageSlotType::Map.
Trait Implementations§
Source§impl Clone for AccountStorage
impl Clone for AccountStorage
Source§fn clone(&self) -> AccountStorage
fn clone(&self) -> AccountStorage
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for AccountStorage
impl Debug for AccountStorage
Source§impl Default for AccountStorage
impl Default for AccountStorage
Source§fn default() -> AccountStorage
fn default() -> AccountStorage
Source§impl Deserializable for AccountStorage
impl Deserializable for AccountStorage
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<&AccountStorage> for AccountStorageHeader
impl From<&AccountStorage> for AccountStorageHeader
Source§fn from(value: &AccountStorage) -> Self
fn from(value: &AccountStorage) -> Self
Source§impl IntoIterator for AccountStorage
impl IntoIterator for AccountStorage
Source§impl PartialEq for AccountStorage
impl PartialEq for AccountStorage
Source§impl SequentialCommit for AccountStorage
impl SequentialCommit for AccountStorage
Source§type Commitment = Word
type Commitment = Word
Source§fn to_elements(&self) -> Vec<Felt>
fn to_elements(&self) -> Vec<Felt>
Source§fn to_commitment(&self) -> Self::Commitment
fn to_commitment(&self) -> Self::Commitment
Source§impl Serializable for AccountStorage
impl Serializable for AccountStorage
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 AccountStorage
impl StructuralPartialEq for AccountStorage
Auto Trait Implementations§
impl Freeze for AccountStorage
impl RefUnwindSafe for AccountStorage
impl Send for AccountStorage
impl Sync for AccountStorage
impl Unpin for AccountStorage
impl UnwindSafe for AccountStorage
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<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