Struct diem_types::ledger_info::LedgerInfo[][src]

pub struct LedgerInfo { /* fields omitted */ }
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

impl LedgerInfo[src]

pub fn new(commit_info: BlockInfo, consensus_data_hash: HashValue) -> Self[src]

Constructs a LedgerInfo object based on the given commit info and vote data hash.

pub fn genesis(
    genesis_state_root_hash: HashValue,
    validator_set: ValidatorSet
) -> Self
[src]

Create a new LedgerInfo at genesis with the given genesis state and initial validator set.

pub fn commit_info(&self) -> &BlockInfo[src]

The BlockInfo of a committed block.

pub fn epoch(&self) -> u64[src]

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[src]

pub fn round(&self) -> Round[src]

pub fn consensus_block_id(&self) -> HashValue[src]

pub fn transaction_accumulator_hash(&self) -> HashValue[src]

pub fn version(&self) -> Version[src]

pub fn timestamp_usecs(&self) -> u64[src]

pub fn next_epoch_state(&self) -> Option<&EpochState>[src]

pub fn ends_epoch(&self) -> bool[src]

pub fn consensus_data_hash(&self) -> HashValue[src]

Returns hash of consensus voting data in this LedgerInfo.

pub fn set_consensus_data_hash(&mut self, consensus_data_hash: HashValue)[src]

Trait Implementations

impl Clone for LedgerInfo[src]

fn clone(&self) -> LedgerInfo[src]

Returns a copy of the value. Read more

fn clone_from(&mut self, source: &Self)1.0.0[src]

Performs copy-assignment from source. Read more

impl CryptoHash for LedgerInfo[src]

type Hasher = LedgerInfoHasher

The associated Hasher type which comes with a unique salt for this type.

fn hash(&self) -> HashValue[src]

Hashes the object and produces a HashValue.

impl Debug for LedgerInfo[src]

fn fmt(&self, f: &mut Formatter<'_>) -> Result[src]

Formats the value using the given formatter. Read more

impl<'de> Deserialize<'de> for LedgerInfo[src]

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
    __D: Deserializer<'de>, 
[src]

Deserialize this value from the given Serde deserializer. Read more

impl Display for LedgerInfo[src]

fn fmt(&self, f: &mut Formatter<'_>) -> Result[src]

Formats the value using the given formatter. Read more

impl PartialEq<LedgerInfo> for LedgerInfo[src]

fn eq(&self, other: &LedgerInfo) -> bool[src]

This method tests for self and other values to be equal, and is used by ==. Read more

fn ne(&self, other: &LedgerInfo) -> bool[src]

This method tests for !=.

impl Serialize for LedgerInfo[src]

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error> where
    __S: Serializer
[src]

Serialize this value into the given Serde serializer. Read more

impl TryFrom<&'_ LedgerInfo> for TrustedState[src]

type Error = Error

The type returned in the event of a conversion error.

fn try_from(ledger_info: &LedgerInfo) -> Result<Self>[src]

Performs the conversion.

impl Eq for LedgerInfo[src]

impl StructuralEq for LedgerInfo[src]

impl StructuralPartialEq for LedgerInfo[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<T> From<T> for T[src]

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

pub fn into(self) -> U[src]

Performs the conversion.

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T> TestOnlyHash for T where
    T: Serialize + ?Sized
[src]

pub fn test_only_hash(&self) -> HashValue[src]

Generates a hash used only for tests.

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

pub fn to_owned(&self) -> T[src]

Creates owned data from borrowed data, usually by cloning. Read more

pub fn clone_into(&self, target: &mut T)[src]

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

impl<T> ToString for T where
    T: Display + ?Sized
[src]

pub default fn to_string(&self) -> String[src]

Converts the given value to a String. Read more

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]

Performs the conversion.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>, 

pub fn vzip(self) -> V

impl<T> DeserializeOwned for T where
    T: for<'de> Deserialize<'de>, 
[src]