StakeStateV2::Stake::voter_pubkey
.
votes
- The submitted votes data structure.credits
- The total number of rewards this Vote program has generated over
its lifetime.root_slot
- The last slot to reach the full lockout commitment necessary for
rewards.commission
- The commission taken by this VoteState for any rewards claimed
by staker’s Stake accounts. This is the percentage ceiling of the reward.authorized_voter
- Only this identity is authorized to submit votes. This
field can only modified by this identity.node_pubkey
- The Orbition Network node that votes in this account.authorized_withdrawer
- the identity of the entity in charge of the lamports
of this account, separate from the account’s address and the authorized vote
signer.account[0]
- RW - The VoteState.
VoteInit
carries the new vote account’s node_pubkey
, authorized_voter
,
authorized_withdrawer
, and commission
.
other VoteState members defaulted.
Voter
or Withdrawer
). The transaction must be
signed by the Vote account’s current authorized_voter
or
authorized_withdrawer
.
account[0]
- RW - The VoteState. VoteState::authorized_voter
or
authorized_withdrawer
is set to Pubkey
.Voter
or Withdrawer
). Unlike
VoteInstruction::Authorize
this instruction is for use when the Vote account’s
current authorized_voter
or authorized_withdrawer
is a derived key. The
transaction must be signed by someone who can sign for the base key of that
derived key.
account[0]
- RW - The VoteState. VoteState::authorized_voter
or
authorized_withdrawer
is set to Pubkey
.account[0]
- RW - The VoteState. VoteState::lockouts
and
VoteState::credits
are updated according to voting lockout rules see Tower BFT.account[1]
- RO - sysvar::slot_hashes
A list of some N most recent slots
and their hashes for the vote to be verified against.account[2]
- RO - sysvar::clock
The current network time, expressed in
slots, epochs.stake
- the staked amount (subject to warmup and cooldown) for generating
rewards, always less than or equal to Account::lamports.voter_pubkey
- The pubkey of the VoteState instance the lamports are
delegated to.credits_observed
- The total credits claimed over the lifetime of the
program.activated
- the epoch at which this stake was activated/delegated. The full
stake will be counted after warmup.deactivated
- the epoch at which this stake was de-activated, some cooldown
epochs are required before the account is fully deactivated, and the stake
available for withdrawal.authorized_staker
- the pubkey of the entity that must sign delegation,
activation, and deactivation transactions.authorized_withdrawer
- the identity of the entity in charge of the lamports
of this account, separate from the account’s address, and the authorized
staker.Stake
program.
authorized_staker
.
account[0]
- RW - The StakeStateV2::Stake instance.
StakeStateV2::Stake::credits_observed
is initialized to
VoteState::credits
, StakeStateV2::Stake::voter_pubkey
is initialized to
account[1]
. If this is the initial delegation of stake,
StakeStateV2::Stake::stake
is initialized to the account’s balance in
lamports, StakeStateV2::Stake::activated
is initialized to the current Bank
epoch, and StakeStateV2::Stake::deactivated
is initialized to std::u64::MAXaccount[1]
- R - The VoteState instance.account[2]
- R - sysvar::clock account, carries information about current
Bank epoch.account[3]
- R - sysvar::stakehistory account, carries information about
stake history.account[4]
- R - stake::Config account, carries warmup, cooldown, and
slashing configuration.Staker
or Withdrawer
). The transaction must be
by signed by the Stakee account’s current authorized_staker
or
authorized_withdrawer
. Any stake lock-up must have expired, or the lock-up
custodian must also sign the transaction.
account[0]
- RW - The StakeStateV2.
StakeStateV2::authorized_staker
or authorized_withdrawer
is set to to
Pubkey
.
authorized_staker
.
account[0]
- RW - The StakeStateV2::Stake instance that is deactivating.account[1]
- R - sysvar::clock account from the Bank that carries current
epoch.authorized_withdrawer
.
account[0]
- RW - The StakeStateV2::Stake from which to withdraw.account[1]
- RW - Account that should be credited with the withdrawn
lamports.account[2]
- R - sysvar::clock account from the Bank that carries current
epoch, to calculate stake.account[3]
- R - sysvar::stake_history account from the Bank that carries
stake warmup/cooldown history.config::warmup_rate
(set to 25% per epoch in the current
implementation).
The amount of stake that can be warmed up each epoch is a function of the
previous epoch’s total effective stake, total activating stake, and the stake
program’s configured warmup rate.
Cooldown works the same way. Once a stake is deactivated, some part of it is
considered “effective”, and also “deactivating”. As the stake cools down, it
continues to earn rewards and be exposed to slashing, but it also becomes
available for withdrawal.
Bootstrap stakes are not subject to warmup.
Rewards are paid against the “effective” portion of the stake for that epoch.
epoch | effective | activating | total effective | total activating |
---|---|---|---|---|
N-1 | 2,000 | 0 | ||
N | 0 | 1,000 | 2,000 | 1,000 |
N+1 | 400 | 600 | 2,400 | 600 |
N+2 | 880 | 120 | 2,880 | 120 |
N+3 | 1000 | 0 | 3,000 | 0 |
epoch | X eff | X act | Y eff | Y act | total effective | total activating |
---|---|---|---|---|---|---|
N-1 | 2,000 | 0 | ||||
N | 0 | 1,000 | 0 | 200 | 2,000 | 1,200 |
N+1 | 333 | 667 | 67 | 133 | 2,400 | 800 |
N+2 | 733 | 267 | 146 | 54 | 2,880 | 321 |
N+3 | 1000 | 0 | 200 | 0 | 3,200 | 0 |