stake-pool: Cleanup documentation in code (#2525)
This commit is contained in:
parent
4658815e9f
commit
3b48fa09d3
|
@ -80,7 +80,8 @@ pub enum StakePoolInstruction {
|
||||||
/// (Staker only) Adds stake account delegated to validator to the pool's
|
/// (Staker only) Adds stake account delegated to validator to the pool's
|
||||||
/// list of managed validators.
|
/// list of managed validators.
|
||||||
///
|
///
|
||||||
/// The stake account will have the rent-exempt amount plus 1 SOL.
|
/// The stake account will have the rent-exempt amount plus
|
||||||
|
/// `crate::MINIMUM_ACTIVE_STAKE` (currently 0.001 SOL).
|
||||||
///
|
///
|
||||||
/// 0. `[w]` Stake pool
|
/// 0. `[w]` Stake pool
|
||||||
/// 1. `[s]` Staker
|
/// 1. `[s]` Staker
|
||||||
|
@ -99,8 +100,9 @@ pub enum StakePoolInstruction {
|
||||||
|
|
||||||
/// (Staker only) Removes validator from the pool
|
/// (Staker only) Removes validator from the pool
|
||||||
///
|
///
|
||||||
/// Only succeeds if the validator stake account has the minimum of 1 SOL
|
/// Only succeeds if the validator stake account has the minimum of
|
||||||
/// plus the rent-exempt amount.
|
/// `crate::MINIMUM_ACTIVE_STAKE` (currently 0.001 SOL) plus the rent-exempt
|
||||||
|
/// amount.
|
||||||
///
|
///
|
||||||
/// 0. `[w]` Stake pool
|
/// 0. `[w]` Stake pool
|
||||||
/// 1. `[s]` Staker
|
/// 1. `[s]` Staker
|
||||||
|
@ -109,7 +111,7 @@ pub enum StakePoolInstruction {
|
||||||
/// 4. `[w]` Validator stake list storage account
|
/// 4. `[w]` Validator stake list storage account
|
||||||
/// 5. `[w]` Stake account to remove from the pool
|
/// 5. `[w]` Stake account to remove from the pool
|
||||||
/// 6. `[]` Transient stake account, to check that that we're not trying to activate
|
/// 6. `[]` Transient stake account, to check that that we're not trying to activate
|
||||||
/// 7. `[w]` Destination stake account, to receive the minimum SOL from the validator stake account. Must be
|
/// 7. `[w]` Destination stake account, to receive the minimum SOL from the validator stake account
|
||||||
/// 8. `[]` Sysvar clock
|
/// 8. `[]` Sysvar clock
|
||||||
/// 9. `[]` Stake program id,
|
/// 9. `[]` Stake program id,
|
||||||
RemoveValidatorFromPool,
|
RemoveValidatorFromPool,
|
||||||
|
@ -154,8 +156,9 @@ pub enum StakePoolInstruction {
|
||||||
/// will do the work of merging once it's ready.
|
/// will do the work of merging once it's ready.
|
||||||
///
|
///
|
||||||
/// This instruction only succeeds if the transient stake account does not exist.
|
/// This instruction only succeeds if the transient stake account does not exist.
|
||||||
/// The minimum amount to move is rent-exemption plus 1 SOL in order to avoid
|
/// The minimum amount to move is rent-exemption plus `crate::MINIMUM_ACTIVE_STAKE`
|
||||||
/// issues on credits observed when merging active stakes later.
|
/// (currently 0.001 SOL) in order to avoid issues on credits observed when
|
||||||
|
/// merging active stakes later.
|
||||||
///
|
///
|
||||||
/// 0. `[]` Stake pool
|
/// 0. `[]` Stake pool
|
||||||
/// 1. `[s]` Stake pool staker
|
/// 1. `[s]` Stake pool staker
|
||||||
|
@ -275,11 +278,19 @@ pub enum StakePoolInstruction {
|
||||||
///
|
///
|
||||||
/// Succeeds if the stake account has enough SOL to cover the desired amount
|
/// Succeeds if the stake account has enough SOL to cover the desired amount
|
||||||
/// of pool tokens, and if the withdrawal keeps the total staked amount
|
/// of pool tokens, and if the withdrawal keeps the total staked amount
|
||||||
/// above the minimum of rent-exempt amount + 1 SOL.
|
/// above the minimum of rent-exempt amount + 0.001 SOL.
|
||||||
///
|
///
|
||||||
/// A validator stake account can be withdrawn from freely, and the reserve
|
/// When allowing withdrawals, the order of priority goes:
|
||||||
/// can only be drawn from if there is no active stake left, where all
|
///
|
||||||
/// validator accounts are left with 1 lamport.
|
/// * preferred withdraw validator stake account (if set)
|
||||||
|
/// * validator stake accounts
|
||||||
|
/// * transient stake accounts
|
||||||
|
/// * reserve stake account
|
||||||
|
///
|
||||||
|
/// A user can freely withdraw from a validator stake account, and if they
|
||||||
|
/// are all at the minimum, then they can withdraw from transient stake
|
||||||
|
/// accounts, and if they are all at minimum, then they can withdraw from
|
||||||
|
/// the reserve.
|
||||||
///
|
///
|
||||||
/// 0. `[w]` Stake pool
|
/// 0. `[w]` Stake pool
|
||||||
/// 1. `[w]` Validator stake list storage account
|
/// 1. `[w]` Validator stake list storage account
|
||||||
|
@ -301,8 +312,8 @@ pub enum StakePoolInstruction {
|
||||||
///
|
///
|
||||||
/// 0. `[w]` StakePool
|
/// 0. `[w]` StakePool
|
||||||
/// 1. `[s]` Manager
|
/// 1. `[s]` Manager
|
||||||
/// 2. '[]` New manager pubkey
|
/// 2. `[s]` New manager
|
||||||
/// 3. '[]` New manager fee account
|
/// 3. `[]` New manager fee account
|
||||||
SetManager,
|
SetManager,
|
||||||
|
|
||||||
/// (Manager only) Update fee
|
/// (Manager only) Update fee
|
||||||
|
|
|
@ -163,7 +163,7 @@ fn create_transient_stake_account<'a>(
|
||||||
/// Program state handler.
|
/// Program state handler.
|
||||||
pub struct Processor {}
|
pub struct Processor {}
|
||||||
impl Processor {
|
impl Processor {
|
||||||
/// Issue a stake_deactivate instruction.
|
/// Issue a delegate_stake instruction.
|
||||||
#[allow(clippy::too_many_arguments)]
|
#[allow(clippy::too_many_arguments)]
|
||||||
fn stake_delegate<'a>(
|
fn stake_delegate<'a>(
|
||||||
stake_info: AccountInfo<'a>,
|
stake_info: AccountInfo<'a>,
|
||||||
|
@ -1389,6 +1389,16 @@ impl Processor {
|
||||||
stake_pool.check_reserve_stake(reserve_stake_info)?;
|
stake_pool.check_reserve_stake(reserve_stake_info)?;
|
||||||
check_stake_program(stake_program_info.key)?;
|
check_stake_program(stake_program_info.key)?;
|
||||||
|
|
||||||
|
if validator_stake_accounts
|
||||||
|
.len()
|
||||||
|
.checked_rem(2)
|
||||||
|
.ok_or(StakePoolError::CalculationFailure)?
|
||||||
|
!= 0
|
||||||
|
{
|
||||||
|
msg!("Odd number of validator stake accounts passed in, should be pairs of validator stake and transient stake accounts");
|
||||||
|
return Err(StakePoolError::UnexpectedValidatorListAccountSize.into());
|
||||||
|
}
|
||||||
|
|
||||||
check_account_owner(validator_list_info, program_id)?;
|
check_account_owner(validator_list_info, program_id)?;
|
||||||
let mut validator_list_data = validator_list_info.data.borrow_mut();
|
let mut validator_list_data = validator_list_info.data.borrow_mut();
|
||||||
let (validator_list_header, mut validator_slice) =
|
let (validator_list_header, mut validator_slice) =
|
||||||
|
@ -1766,9 +1776,7 @@ impl Processor {
|
||||||
let token_program_info = next_account_info(account_info_iter)?;
|
let token_program_info = next_account_info(account_info_iter)?;
|
||||||
let stake_program_info = next_account_info(account_info_iter)?;
|
let stake_program_info = next_account_info(account_info_iter)?;
|
||||||
|
|
||||||
if *stake_program_info.key != stake_program::id() {
|
check_stake_program(stake_program_info.key)?;
|
||||||
return Err(ProgramError::IncorrectProgramId);
|
|
||||||
}
|
|
||||||
|
|
||||||
check_account_owner(stake_pool_info, program_id)?;
|
check_account_owner(stake_pool_info, program_id)?;
|
||||||
let mut stake_pool = try_from_slice_unchecked::<StakePool>(&stake_pool_info.data.borrow())?;
|
let mut stake_pool = try_from_slice_unchecked::<StakePool>(&stake_pool_info.data.borrow())?;
|
||||||
|
@ -2102,18 +2110,16 @@ impl Processor {
|
||||||
deposit_lamports,
|
deposit_lamports,
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
if pool_tokens_user > 0 {
|
Self::token_mint_to(
|
||||||
Self::token_mint_to(
|
stake_pool_info.key,
|
||||||
stake_pool_info.key,
|
token_program_info.clone(),
|
||||||
token_program_info.clone(),
|
pool_mint_info.clone(),
|
||||||
pool_mint_info.clone(),
|
dest_user_pool_info.clone(),
|
||||||
dest_user_pool_info.clone(),
|
withdraw_authority_info.clone(),
|
||||||
withdraw_authority_info.clone(),
|
AUTHORITY_WITHDRAW,
|
||||||
AUTHORITY_WITHDRAW,
|
stake_pool.stake_withdraw_bump_seed,
|
||||||
stake_pool.stake_withdraw_bump_seed,
|
pool_tokens_user,
|
||||||
pool_tokens_user,
|
)?;
|
||||||
)?;
|
|
||||||
}
|
|
||||||
|
|
||||||
if pool_tokens_manager_deposit_fee > 0 {
|
if pool_tokens_manager_deposit_fee > 0 {
|
||||||
Self::token_mint_to(
|
Self::token_mint_to(
|
||||||
|
|
Loading…
Reference in New Issue