Struct solana_vote_program::vote_state::VoteState
source · pub struct VoteState {
pub node_pubkey: Pubkey,
pub authorized_withdrawer: Pubkey,
pub commission: u8,
pub votes: VecDeque<Lockout>,
pub root_slot: Option<Slot>,
pub epoch_credits: Vec<(Epoch, u64, u64)>,
pub last_timestamp: BlockTimestamp,
/* private fields */
}
Fields§
§node_pubkey: Pubkey
the node that votes in this account
the signer for withdrawals
commission: u8
percentage (0-100) that represents what part of a rewards payout should be given to this VoteAccount
votes: VecDeque<Lockout>
§root_slot: Option<Slot>
§epoch_credits: Vec<(Epoch, u64, u64)>
history of how many credits earned by the end of each epoch each tuple is (Epoch, credits, prev_credits)
last_timestamp: BlockTimestamp
most recent timestamp submitted with a vote
Implementations§
source§impl VoteState
impl VoteState
pub fn new(vote_init: &VoteInit, clock: &Clock) -> Self
pub fn prior_voters(&mut self) -> &CircBuf<(Pubkey, Epoch, Epoch)>
pub fn get_rent_exempt_reserve(rent: &Rent) -> u64
sourcepub const fn size_of() -> usize
pub const fn size_of() -> usize
Upper limit on the size of the Vote State when votes.len() is MAX_LOCKOUT_HISTORY.
pub fn from<T: ReadableAccount>(account: &T) -> Option<VoteState>
pub fn to<T: WritableAccount>( versioned: &VoteStateVersions, account: &mut T ) -> Option<()>
pub fn deserialize(input: &[u8]) -> Result<Self, InstructionError>
pub fn serialize( versioned: &VoteStateVersions, output: &mut [u8] ) -> Result<(), InstructionError>
pub fn credits_from<T: ReadableAccount>(account: &T) -> Option<u64>
sourcepub fn commission_split(&self, on: u64) -> (u64, u64, bool)
pub fn commission_split(&self, on: u64) -> (u64, u64, bool)
returns commission split as (voter_portion, staker_portion, was_split) tuple
if commission calculation is 100% one way or other, indicate with false for was_split
sourcepub fn contains_slot(&self, candidate_slot: Slot) -> bool
pub fn contains_slot(&self, candidate_slot: Slot) -> bool
Returns if the vote state contains a slot candidate_slot
pub fn process_new_vote_state( &mut self, new_state: VecDeque<Lockout>, new_root: Option<Slot>, timestamp: Option<i64>, epoch: Epoch, feature_set: Option<&FeatureSet> ) -> Result<(), VoteError>
pub fn process_vote( &mut self, vote: &Vote, slot_hashes: &[SlotHash], epoch: Epoch, feature_set: Option<&FeatureSet> ) -> Result<(), VoteError>
pub fn process_next_vote_slot(&mut self, next_vote_slot: Slot, epoch: Epoch)
sourcepub fn increment_credits(&mut self, epoch: Epoch, credits: u64)
pub fn increment_credits(&mut self, epoch: Epoch, credits: u64)
increment credits, record credits for last epoch if new epoch
sourcepub fn process_vote_unchecked(&mut self, vote: Vote)
pub fn process_vote_unchecked(&mut self, vote: Vote)
“unchecked” functions used by tests and Tower
pub fn process_slot_vote_unchecked(&mut self, slot: Slot)
pub fn nth_recent_vote(&self, position: usize) -> Option<&Lockout>
pub fn last_lockout(&self) -> Option<&Lockout>
pub fn last_voted_slot(&self) -> Option<Slot>
pub fn tower(&self) -> Vec<Slot> ⓘ
pub fn current_epoch(&self) -> Epoch
sourcepub fn credits(&self) -> u64
pub fn credits(&self) -> u64
Number of “credits” owed to this account from the mining pool. Submit this VoteState to the Rewards program to trade credits for lamports.
sourcepub fn epoch_credits(&self) -> &Vec<(Epoch, u64, u64)> ⓘ
pub fn epoch_credits(&self) -> &Vec<(Epoch, u64, u64)> ⓘ
Number of “credits” owed to this account from the mining pool on a per-epoch basis, starting from credits observed. Each tuple of (Epoch, u64, u64) is read as (epoch, credits, prev_credits), where credits for each epoch is credits - prev_credits; while redundant this makes calculating rewards over partial epochs nice and simple
pub fn process_timestamp( &mut self, slot: Slot, timestamp: UnixTimestamp ) -> Result<(), VoteError>
pub fn is_correct_size_and_initialized(data: &[u8]) -> bool
Trait Implementations§
source§impl<'de> Deserialize<'de> for VoteState
impl<'de> Deserialize<'de> for VoteState
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 PartialEq<VoteState> for VoteState
impl PartialEq<VoteState> for VoteState
impl Eq for VoteState
impl StructuralEq for VoteState
impl StructuralPartialEq for VoteState
Auto Trait Implementations§
impl RefUnwindSafe for VoteState
impl Send for VoteState
impl Sync for VoteState
impl Unpin for VoteState
impl UnwindSafe for VoteState
Blanket Implementations§
source§impl<T> AbiEnumVisitor for Twhere
T: Serialize + AbiExample + ?Sized,
impl<T> AbiEnumVisitor for Twhere T: Serialize + AbiExample + ?Sized,
default fn visit_for_abi( &self, digester: &mut AbiDigester ) -> Result<AbiDigester, DigestError>
source§impl<T> AbiEnumVisitor for Twhere
T: Serialize + ?Sized,
impl<T> AbiEnumVisitor for Twhere T: Serialize + ?Sized,
default fn visit_for_abi( &self, _digester: &mut AbiDigester ) -> Result<AbiDigester, DigestError>
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.