pub enum NoteExecutionHint {
None,
Always,
AfterBlock {
block_num: AfterBlockNumber,
},
OnBlockSlot {
round_len: u8,
slot_len: u8,
slot_offset: u8,
},
}
Expand description
Specifies the conditions under which a note is ready to be consumed. These conditions are meant to be encoded in the note script as well.
This struct can be represented as the combination of a tag, and a payload. The tag specifies the variant of the hint, and the payload encodes the hint data.
§Felt layout
NoteExecutionHint
can be encoded into a Felt
with the following layout:
[26 zero bits | payload (32 bits) | tag (6 bits)]
This way, hints such as NoteExecutionHint::Always, are represented by Felt::new(1)
.
Variants§
None
Unspecified note execution hint. Implies it is not known under which conditions the note is consumable.
Always
The note’s script can be executed at any time.
AfterBlock
The note’s script can be executed after the specified block number.
The block number cannot be u32::MAX
which is enforced through the AfterBlockNumber
type.
Fields
block_num: AfterBlockNumber
OnBlockSlot
The note’s script can be executed in the specified slot within the specified round.
The slot is defined as follows:
- First we define the length of the round in powers of 2. For example, round_len = 10 is a round of 1024 blocks.
- Then we define the length of a slot within the round also using powers of 2. For example, slot_len = 7 is a slot of 128 blocks.
- Lastly, the offset specifies the index of the slot within the round - i.e., 0 is the first slot, 1 is the second slot etc.
For example: { round_len: 10, slot_len: 7, slot_offset: 1 } means that the note can be executed in any second 128 block slot of a 1024 block round. These would be blocks 128..255, 1152..1279, 2176..2303 etc.
Implementations§
Source§impl NoteExecutionHint
impl NoteExecutionHint
Sourcepub fn none() -> Self
pub fn none() -> Self
Creates a NoteExecutionHint::None variant
Sourcepub fn always() -> Self
pub fn always() -> Self
Creates a NoteExecutionHint::Always variant
Sourcepub fn after_block(block_num: BlockNumber) -> Result<Self, NoteError>
pub fn after_block(block_num: BlockNumber) -> Result<Self, NoteError>
Creates a NoteExecutionHint::AfterBlock variant based on the given block_num
§Errors
Returns an error if block_num
is equal to u32::MAX
.
Sourcepub fn on_block_slot(round_len: u8, slot_len: u8, slot_offset: u8) -> Self
pub fn on_block_slot(round_len: u8, slot_len: u8, slot_offset: u8) -> Self
Creates a NoteExecutionHint::OnBlockSlot for the given parameters. See the variants documentation for details on the parameters.
pub fn from_parts(tag: u8, payload: u32) -> Result<NoteExecutionHint, NoteError>
Sourcepub fn can_be_consumed(&self, block_num: BlockNumber) -> Option<bool>
pub fn can_be_consumed(&self, block_num: BlockNumber) -> Option<bool>
Returns whether the note execution conditions validate for the given block_num
§Returns
None
if we don’t know whether the note can be consumed.Some(true)
if the note is consumable for the givenblock_num
Some(false)
if the note is not consumable for the givenblock_num
Sourcepub fn into_parts(&self) -> (u8, u32)
pub fn into_parts(&self) -> (u8, u32)
Encodes the NoteExecutionHint
into a 6-bit tag and a 32-bit payload.
§Guarantees
Since the tag has at most 6 bits, the returned byte is guaranteed to have its two most
significant bits set to 0
.
The payload is guaranteed to contain at least one 0
bit to make encoding it into
NoteMetadata
safely possible.
Trait Implementations§
Source§impl Clone for NoteExecutionHint
impl Clone for NoteExecutionHint
Source§fn clone(&self) -> NoteExecutionHint
fn clone(&self) -> NoteExecutionHint
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for NoteExecutionHint
impl Debug for NoteExecutionHint
Source§impl From<NoteExecutionHint> for Felt
Converts a NoteExecutionHint
into a Felt
with the layout documented on the type.
impl From<NoteExecutionHint> for Felt
Converts a NoteExecutionHint
into a Felt
with the layout documented on the type.
Source§fn from(value: NoteExecutionHint) -> Self
fn from(value: NoteExecutionHint) -> Self
Source§impl From<NoteExecutionHint> for u64
Converts a NoteExecutionHint
into a u64
with the layout documented on the type.
impl From<NoteExecutionHint> for u64
Converts a NoteExecutionHint
into a u64
with the layout documented on the type.
Source§fn from(value: NoteExecutionHint) -> Self
fn from(value: NoteExecutionHint) -> Self
Source§impl PartialEq for NoteExecutionHint
impl PartialEq for NoteExecutionHint
Source§impl TryFrom<u64> for NoteExecutionHint
Tries to convert a u64
into a NoteExecutionHint
with the expected layout documented on the
type.
impl TryFrom<u64> for NoteExecutionHint
Tries to convert a u64
into a NoteExecutionHint
with the expected layout documented on the
type.
Note: The upper 26 bits are not enforced to be zero.
impl Copy for NoteExecutionHint
impl Eq for NoteExecutionHint
impl StructuralPartialEq for NoteExecutionHint
Auto Trait Implementations§
impl Freeze for NoteExecutionHint
impl RefUnwindSafe for NoteExecutionHint
impl Send for NoteExecutionHint
impl Sync for NoteExecutionHint
impl Unpin for NoteExecutionHint
impl UnwindSafe for NoteExecutionHint
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