Skip to content

Commit fa2a401

Browse files
joncinqueHaoranYi
authored and
HaoranYi
committed
stake-pool: Add lamports check for transient stake account on decrease (solana-labs#3805)
1 parent ebf1bd5 commit fa2a401

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

stake-pool/program/src/processor.rs

+6-4
Original file line numberDiff line numberDiff line change
@@ -1214,11 +1214,14 @@ impl Processor {
12141214
&[transient_stake_bump_seed],
12151215
];
12161216

1217+
let stake_minimum_delegation = stake::tools::get_minimum_delegation()?;
12171218
let stake_rent = rent.minimum_balance(std::mem::size_of::<stake::state::StakeState>());
1218-
if lamports <= stake_rent {
1219+
let current_minimum_lamports =
1220+
stake_rent.saturating_add(minimum_delegation(stake_minimum_delegation));
1221+
if lamports < current_minimum_lamports {
12191222
msg!(
1220-
"Need more than {} lamports for transient stake to be rent-exempt, {} provided",
1221-
stake_rent,
1223+
"Need at least {} lamports for transient stake meet minimum delegation and rent-exempt requirements, {} provided",
1224+
current_minimum_lamports,
12221225
lamports
12231226
);
12241227
return Err(ProgramError::AccountNotRentExempt);
@@ -1228,7 +1231,6 @@ impl Processor {
12281231
.lamports()
12291232
.checked_sub(lamports)
12301233
.ok_or(ProgramError::InsufficientFunds)?;
1231-
let stake_minimum_delegation = stake::tools::get_minimum_delegation()?;
12321234
let required_lamports = minimum_stake_lamports(&meta, stake_minimum_delegation);
12331235
if remaining_lamports < required_lamports {
12341236
msg!("Need at least {} lamports in the stake account after decrease, {} requested, {} is the current possible maximum",

0 commit comments

Comments
 (0)