pub struct VoteState {
pub node_pubkey: Pubkey,
pub authorized_withdrawer: Pubkey,
pub commission: u8,
pub votes: VecDeque<LandedVote>,
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<LandedVote>
§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 new_rand_for_tests(node_pubkey: Pubkey, root_slot: Slot) -> 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 deserialize(_input: &[u8]) -> Result<Self, InstructionError>
pub fn serialize( versioned: &VoteStateVersions, output: &mut [u8], ) -> Result<(), InstructionError>
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_next_vote_slot( &mut self, next_vote_slot: Slot, epoch: Epoch, current_slot: Slot, timely_vote_credits: bool, deprecate_unused_legacy_vote_plumbing: bool, )
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
pub fn compute_vote_latency(voted_for_slot: Slot, current_slot: Slot) -> u8
sourcepub fn credits_for_vote_at_index(
&self,
index: usize,
timely_vote_credits: bool,
deprecate_unused_legacy_vote_plumbing: bool,
) -> u64
pub fn credits_for_vote_at_index( &self, index: usize, timely_vote_credits: bool, deprecate_unused_legacy_vote_plumbing: bool, ) -> u64
Returns the credits to award for a vote at the given lockout slot index
pub fn nth_recent_lockout(&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 pop_expired_votes(&mut self, next_vote_slot: Slot)
pub fn double_lockouts(&mut self)
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 From<VoteState> for VoteState1_14_11
impl From<VoteState> for VoteState1_14_11
impl Eq for VoteState
impl StructuralPartialEq for VoteState
Auto Trait Implementations§
impl Freeze for VoteState
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 T
impl<T> AbiEnumVisitor for T
default fn visit_for_abi( &self, _digester: &mut AbiDigester, ) -> Result<AbiDigester, DigestError>
source§impl<T> AbiEnumVisitor for T
impl<T> AbiEnumVisitor for T
default fn visit_for_abi( &self, digester: &mut AbiDigester, ) -> Result<AbiDigester, DigestError>
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
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more