pub struct VoteState {
pub node_pubkey: Pubkey,
pub authorized_withdrawer: Pubkey,
pub commission: u8,
pub votes: VecDeque<LandedVote>,
pub root_slot: Option<u64>,
pub epoch_credits: Vec<(u64, 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<u64>
§epoch_credits: Vec<(u64, 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) -> VoteState
pub fn new_rand_for_tests(node_pubkey: Pubkey, root_slot: u64) -> VoteState
pub fn prior_voters(&mut self) -> &CircBuf<(Pubkey, u64, u64)>
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<VoteState, 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: u64) -> bool
pub fn contains_slot(&self, candidate_slot: u64) -> bool
Returns if the vote state contains a slot candidate_slot
pub fn process_next_vote_slot( &mut self, next_vote_slot: u64, epoch: u64, current_slot: u64, timely_vote_credits: bool, )
Sourcepub fn increment_credits(&mut self, epoch: u64, credits: u64)
pub fn increment_credits(&mut self, epoch: u64, credits: u64)
increment credits, record credits for last epoch if new epoch
pub fn compute_vote_latency(voted_for_slot: u64, current_slot: u64) -> 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<u64>
pub fn tower(&self) -> Vec<u64>
pub fn current_epoch(&self) -> u64
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<(u64, u64, u64)>
pub fn epoch_credits(&self) -> &Vec<(u64, 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: u64)
pub fn double_lockouts(&mut self)
pub fn process_timestamp( &mut self, slot: u64, timestamp: i64, ) -> 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<VoteState, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<VoteState, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl From<VoteState> for VoteState1_14_11
impl From<VoteState> for VoteState1_14_11
Source§fn from(vote_state: VoteState) -> VoteState1_14_11
fn from(vote_state: VoteState) -> VoteState1_14_11
Source§impl Serialize for VoteState
impl Serialize for VoteState
Source§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 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> 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§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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