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.
pub fn mock_genesis(validator_set: Option<ValidatorSet>) -> Self
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 set_consensus_data_hash(&mut self, consensus_data_hash: HashValue)
Trait Implementations§
source§impl Arbitrary for LedgerInfo
impl Arbitrary for LedgerInfo
§type Parameters = (<BlockInfo as Arbitrary>::Parameters, <HashValue as Arbitrary>::Parameters)
type Parameters = (<BlockInfo as Arbitrary>::Parameters, <HashValue as Arbitrary>::Parameters)
arbitrary_with
accepts for configuration
of the generated Strategy
. Parameters must implement Default
.§type Strategy = Map<(<BlockInfo as Arbitrary>::Strategy, <HashValue as Arbitrary>::Strategy), fn(_: (BlockInfo, HashValue)) -> LedgerInfo>
type Strategy = Map<(<BlockInfo as Arbitrary>::Strategy, <HashValue as Arbitrary>::Strategy), fn(_: (BlockInfo, HashValue)) -> LedgerInfo>
Strategy
used to generate values of type Self
.source§fn arbitrary_with(_top: Self::Parameters) -> Self::Strategy
fn arbitrary_with(_top: Self::Parameters) -> Self::Strategy
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<LedgerInfo> for LedgerInfo
impl PartialEq<LedgerInfo> 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
impl Eq for LedgerInfo
impl StructuralEq 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<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.