Struct diem_sdk::types::ledger_info::LedgerInfo
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§
§impl LedgerInfo
impl LedgerInfo
pub fn new(commit_info: BlockInfo, consensus_data_hash: HashValue) -> LedgerInfo
pub fn new(commit_info: BlockInfo, consensus_data_hash: HashValue) -> LedgerInfo
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
) -> LedgerInfo
pub fn genesis( genesis_state_root_hash: HashValue, validator_set: ValidatorSet ) -> LedgerInfo
Create a new LedgerInfo at genesis with the given genesis state and initial validator set.
pub fn mock_genesis(validator_set: Option<ValidatorSet>) -> LedgerInfo
pub fn commit_info(&self) -> &BlockInfo
pub fn commit_info(&self) -> &BlockInfo
The BlockInfo
of a committed block.
pub 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) -> u64
pub fn consensus_block_id(&self) -> HashValue
pub fn transaction_accumulator_hash(&self) -> HashValue
pub fn version(&self) -> u64
pub fn timestamp_usecs(&self) -> u64
pub fn next_epoch_state(&self) -> Option<&EpochState>
pub fn ends_epoch(&self) -> bool
pub 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§
§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
.§fn arbitrary_with(
_top: <LedgerInfo as Arbitrary>::Parameters
) -> <LedgerInfo as Arbitrary>::Strategy
fn arbitrary_with( _top: <LedgerInfo as Arbitrary>::Parameters ) -> <LedgerInfo as Arbitrary>::Strategy
§impl Clone for LedgerInfo
impl Clone for LedgerInfo
§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 more§impl CryptoHash for LedgerInfo
impl CryptoHash for LedgerInfo
§impl Debug for LedgerInfo
impl Debug for LedgerInfo
§impl<'de> Deserialize<'de> for LedgerInfo
impl<'de> Deserialize<'de> for LedgerInfo
§fn deserialize<__D>(
__deserializer: __D
) -> Result<LedgerInfo, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>( __deserializer: __D ) -> Result<LedgerInfo, <__D as Deserializer<'de>>::Error>where __D: Deserializer<'de>,
§impl Display for LedgerInfo
impl Display for LedgerInfo
§impl PartialEq<LedgerInfo> for LedgerInfo
impl PartialEq<LedgerInfo> for LedgerInfo
§fn eq(&self, other: &LedgerInfo) -> bool
fn eq(&self, other: &LedgerInfo) -> bool
self
and other
values to be equal, and is used
by ==
.§impl Serialize for LedgerInfo
impl Serialize for LedgerInfo
§fn serialize<__S>(
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>( &self, __serializer: __S ) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where __S: Serializer,
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.