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>
Sourcepub fn deserialize_into(
input: &[u8],
vote_state: &mut VoteState,
) -> Result<(), InstructionError>
pub fn deserialize_into( input: &[u8], vote_state: &mut VoteState, ) -> Result<(), InstructionError>
Deserializes the input VoteStateVersions
buffer directly into the provided VoteState
.
In a SBPF context, V0_23_5 is not supported, but in non-SBPF, all versions are supported for
compatibility with bincode::deserialize
.
On success, vote_state
reflects the state of the input data. On failure, vote_state
is
reset to VoteState::default()
.
Sourcepub fn deserialize_into_uninit(
input: &[u8],
vote_state: &mut MaybeUninit<VoteState>,
) -> Result<(), InstructionError>
pub fn deserialize_into_uninit( input: &[u8], vote_state: &mut MaybeUninit<VoteState>, ) -> Result<(), InstructionError>
Deserializes the input VoteStateVersions
buffer directly into the provided
MaybeUninit<VoteState>
.
In a SBPF context, V0_23_5 is not supported, but in non-SBPF, all versions are supported for
compatibility with bincode::deserialize
.
On success, vote_state
is fully initialized and can be converted to VoteState
using
MaybeUninit::assume_init. On failure, vote_state
may still be uninitialized and must not
be converted to VoteState
.
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, )
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,
) -> u64
pub fn credits_for_vote_at_index( &self, index: usize, timely_vote_credits: 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