pub struct McHashInherentDataProvider { /* private fields */ }
Expand description
Inherent data provider that provides the hash of the latest stable Cardano block (main chain reference block) observed by the block producer to be included in the header of the currently produced PC block.
This IDP also exposes further information about the currently referenced Cardano block and the block referenced by the parent block of the current one, for use by other inherent data providers.
§Creation
This inherent data provider has two different constructors that should be used depending on whether it is being used for proposing or verifying a block:
- new_proposal which selects the main chain reference block
- new_verification which verifies the main chain reference in the block header
Implementations§
Source§impl McHashInherentDataProvider
impl McHashInherentDataProvider
Sourcepub async fn new_proposal<Header>(
parent_header: Header,
data_source: &(dyn McHashDataSource + Send + Sync),
slot: Slot,
slot_duration: SlotDuration,
) -> Result<Self, McHashInherentError>where
Header: HeaderT,
pub async fn new_proposal<Header>(
parent_header: Header,
data_source: &(dyn McHashDataSource + Send + Sync),
slot: Slot,
slot_duration: SlotDuration,
) -> Result<Self, McHashInherentError>where
Header: HeaderT,
Creates a new McHashInherentDataProvider for proposing a new Partner Chain block by querying the current state of Cardano and returning an instance referencing the latest stable block there.
§Arguments
parent_header
: header of the parent of the block being produceddata_source
: data source implementing McHashDataSourceslot
: current Partner Chain slotslot_duration
: duration of the Partner Chain slot
The referenced Cardano block is guaranteed to be later or equal to the one referenced by the parent block
and within a bounded time distance from slot
.
Sourcepub async fn new_verification<Header>(
parent_header: Header,
parent_slot: Option<Slot>,
verified_block_slot: Slot,
mc_state_reference_hash: McBlockHash,
slot_duration: SlotDuration,
block_source: &(dyn McHashDataSource + Send + Sync),
) -> Result<Self, McHashInherentError>where
Header: HeaderT,
pub async fn new_verification<Header>(
parent_header: Header,
parent_slot: Option<Slot>,
verified_block_slot: Slot,
mc_state_reference_hash: McBlockHash,
slot_duration: SlotDuration,
block_source: &(dyn McHashDataSource + Send + Sync),
) -> Result<Self, McHashInherentError>where
Header: HeaderT,
Verifies a Cardano reference hash and creates a new McHashInherentDataProvider for an imported Partner Chain block.
§Arguments
parent_header
: header of the parent of the block being produced or validatedparent_slot
: slot of the parent block. None for genesisverified_block_slot
: Partner Chain slot of the block being verifiedmc_state_reference_hash
: Cardano block hash referenced by the block being verifiedslot_duration
: duration of the Partner Chain slotblock_source
: data source implementing McHashDataSource
§Returns
This function will return an error if mc_state_reference_hash
is not found or is before the block referenced by
the parent of the block being verified.
Otherwise, the returned McHashInherentDataProvider instance will contain block data for mc_state_reference_hash
.
Sourcepub fn mc_epoch(&self) -> McEpochNumber
pub fn mc_epoch(&self) -> McEpochNumber
Returns the Cardano epoch containing the reference block
Sourcepub fn mc_block(&self) -> McBlockNumber
pub fn mc_block(&self) -> McBlockNumber
Returns the reference block’s number
Sourcepub fn mc_hash(&self) -> McBlockHash
pub fn mc_hash(&self) -> McBlockHash
Returns the reference block’s hash
Sourcepub fn previous_mc_hash(&self) -> Option<McBlockHash>
pub fn previous_mc_hash(&self) -> Option<McBlockHash>
Returns the previous reference block’s hash
Trait Implementations§
Source§impl Debug for McHashInherentDataProvider
impl Debug for McHashInherentDataProvider
Source§impl Deref for McHashInherentDataProvider
impl Deref for McHashInherentDataProvider
Source§impl From<MainchainBlock> for McHashInherentDataProvider
impl From<MainchainBlock> for McHashInherentDataProvider
Source§fn from(mc_block: MainchainBlock) -> Self
fn from(mc_block: MainchainBlock) -> Self
Source§impl InherentDataProvider for McHashInherentDataProvider
impl InherentDataProvider for McHashInherentDataProvider
Source§fn provide_inherent_data<'life0, 'life1, 'async_trait>(
&'life0 self,
inherent_data: &'life1 mut InherentData,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn provide_inherent_data<'life0, 'life1, 'async_trait>(
&'life0 self,
inherent_data: &'life1 mut InherentData,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn try_handle_error<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
identifier: &'life1 InherentIdentifier,
_error: &'life2 [u8],
) -> Pin<Box<dyn Future<Output = Option<Result<(), Error>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn try_handle_error<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
identifier: &'life1 InherentIdentifier,
_error: &'life2 [u8],
) -> Pin<Box<dyn Future<Output = Option<Result<(), Error>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Auto Trait Implementations§
impl Freeze for McHashInherentDataProvider
impl RefUnwindSafe for McHashInherentDataProvider
impl Send for McHashInherentDataProvider
impl Sync for McHashInherentDataProvider
impl Unpin for McHashInherentDataProvider
impl UnwindSafe for McHashInherentDataProvider
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
§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
§fn checked_from<T>(t: T) -> Option<Self>where
Self: TryFrom<T>,
fn checked_from<T>(t: T) -> Option<Self>where
Self: TryFrom<T>,
§fn checked_into<T>(self) -> Option<T>where
Self: TryInto<T>,
fn checked_into<T>(self) -> Option<T>where
Self: TryInto<T>,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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 more§impl<Src, Dest> IntoTuple<Dest> for Srcwhere
Dest: FromTuple<Src>,
impl<Src, Dest> IntoTuple<Dest> for Srcwhere
Dest: FromTuple<Src>,
fn into_tuple(self) -> Dest
§impl<T, Outer> IsWrappedBy<Outer> for T
impl<T, Outer> IsWrappedBy<Outer> for T
§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self
with the foreground set to
value
.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red()
and
green()
, which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg()
:
use yansi::{Paint, Color};
painted.fg(Color::White);
Set foreground color to white using white()
.
use yansi::Paint;
painted.white();
§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self
with the background set to
value
.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red()
and
on_green()
, which have the same functionality but
are pithier.
§Example
Set background color to red using fg()
:
use yansi::{Paint, Color};
painted.bg(Color::Red);
Set background color to red using on_red()
.
use yansi::Paint;
painted.on_red();
§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling [Attribute
] value
.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold()
and
underline()
, which have the same functionality
but are pithier.
§Example
Make text bold using attr()
:
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);
Make text bold using using bold()
.
use yansi::Paint;
painted.bold();
§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi
[Quirk
] value
.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask()
and
wrap()
, which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk()
:
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);
Enable wrapping using wrap()
.
use yansi::Paint;
painted.wrap();
§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting()
due to conflicts with Vec::clear()
.
The clear()
method will be removed in a future release.
fn clear(&self) -> Painted<&T>
resetting()
due to conflicts with Vec::clear()
.
The clear()
method will be removed in a future release.§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the [Condition
] value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted
only when both stdout
and stderr
are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);
§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
§fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
§fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
T
. Read more§impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
§fn unchecked_into(self) -> T
fn unchecked_into(self) -> T
unchecked_from
.§impl<T, S> UniqueSaturatedInto<T> for S
impl<T, S> UniqueSaturatedInto<T> for S
§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
T
.