Struct diem_types::ledger_info::LedgerInfo
source · pub struct LedgerInfo { /* private fields */ }
Expand description
This structure serves a dual purpose.
First, if this structure is signed by 2f+1 validators it signifies the state
of the ledger at version version
– it contains the transaction
accumulator at that version which commits to all historical transactions.
This structure may be expanded to include other information that is derived
from that accumulator (e.g. the current time according to the time contract)
to reduce the number of proofs a client must get.
Second, the structure contains a consensus_data_hash
value. This is the
hash of an internal data structure that represents a block that is voted on
in HotStuff. If 2f+1 signatures are gathered on the same ledger info that
represents a Quorum Certificate (QC) on the consensus data.
Combining these two concepts, when a validator votes on a block, B it votes
for a LedgerInfo with the version
being the latest version that will be
committed if B gets 2f+1 votes. It sets consensus_data_hash
to represent B
so that if those 2f+1 votes are gathered a QC is formed on B.
Implementations§
source§impl LedgerInfo
impl LedgerInfo
sourcepub fn new(commit_info: BlockInfo, consensus_data_hash: HashValue) -> Self
pub fn new(commit_info: BlockInfo, consensus_data_hash: HashValue) -> Self
Constructs a LedgerInfo
object based on the given commit info and vote
data hash.
sourcepub fn genesis(
genesis_state_root_hash: HashValue,
validator_set: ValidatorSet
) -> Self
pub fn genesis( genesis_state_root_hash: HashValue, validator_set: ValidatorSet ) -> Self
Create a new LedgerInfo at genesis with the given genesis state and initial validator set.
sourcepub fn commit_info(&self) -> &BlockInfo
pub fn commit_info(&self) -> &BlockInfo
The BlockInfo
of a committed block.
sourcepub fn epoch(&self) -> u64
pub fn epoch(&self) -> u64
A series of wrapper functions for the data stored in the commit info.
For the detailed information, please refer to BlockInfo
pub fn next_block_epoch(&self) -> u64
pub fn round(&self) -> Round
pub fn consensus_block_id(&self) -> HashValue
pub fn transaction_accumulator_hash(&self) -> HashValue
pub fn version(&self) -> Version
pub fn timestamp_usecs(&self) -> u64
pub fn next_epoch_state(&self) -> Option<&EpochState>
pub fn ends_epoch(&self) -> bool
sourcepub fn consensus_data_hash(&self) -> HashValue
pub fn consensus_data_hash(&self) -> HashValue
Returns hash of consensus voting data in this LedgerInfo
.
pub fn pivot_decision(&self) -> Option<&PivotBlockDecision>
pub fn set_consensus_data_hash(&mut self, consensus_data_hash: HashValue)
Trait Implementations§
source§impl Clone for LedgerInfo
impl Clone for LedgerInfo
source§fn clone(&self) -> LedgerInfo
fn clone(&self) -> LedgerInfo
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl CryptoHash for LedgerInfo
impl CryptoHash for LedgerInfo
source§impl Debug for LedgerInfo
impl Debug for LedgerInfo
source§impl<'de> Deserialize<'de> for LedgerInfo
impl<'de> Deserialize<'de> for LedgerInfo
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
source§impl Display for LedgerInfo
impl Display for LedgerInfo
source§impl PartialEq for LedgerInfo
impl PartialEq for LedgerInfo
source§fn eq(&self, other: &LedgerInfo) -> bool
fn eq(&self, other: &LedgerInfo) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl Serialize for LedgerInfo
impl Serialize for LedgerInfo
source§impl TryFrom<&LedgerInfo> for TrustedState
impl TryFrom<&LedgerInfo> for TrustedState
impl Eq for LedgerInfo
impl StructuralPartialEq for LedgerInfo
Auto Trait Implementations§
impl RefUnwindSafe for LedgerInfo
impl Send for LedgerInfo
impl Sync for LedgerInfo
impl Unpin for LedgerInfo
impl UnwindSafe for LedgerInfo
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> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<T> Serialize for T
impl<T> Serialize for T
fn erased_serialize(&self, serializer: &mut dyn Serializer) -> Result<Ok, Error>
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.