Skip to content

Commit b54e8c5

Browse files
authored
Program: Removes an unnecessary Option<u64> wrapper (#62)
* fix: remove option * test: testing
1 parent c120888 commit b54e8c5

2 files changed

Lines changed: 41 additions & 44 deletions

File tree

stake_deposit_interceptor/src/processor.rs

Lines changed: 41 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -772,20 +772,19 @@ impl Processor {
772772
// To prevent a faulty manager fee account from preventing withdrawals
773773
// if the token program does not own the account, or if the account is not
774774
// initialized
775-
let fee_lamports_opt = if stake_pool.manager_fee_account
776-
== *user_pool_token_account_info.key
775+
let fee_lamports = if stake_pool.manager_fee_account == *user_pool_token_account_info.key
777776
|| check_manager_fee_info(manager_fee_account_info, &stake_pool).is_err()
778777
{
779-
Some(0)
778+
0
780779
} else {
781780
let pool_tokens_fee = stake_pool
782781
.calc_pool_tokens_stake_withdrawal_fee(pool_tokens_in)
783782
.ok_or(StakeDepositInterceptorError::CalculationFailure)?;
784783
match stake_pool.calc_lamports_withdraw_amount(pool_tokens_fee) {
785-
Some(lamports) => Some(lamports),
784+
Some(lamports) => lamports,
786785
None => {
787786
msg!("Failed to calculate lamports withdraw amount from pool tokens fee; treating manager fee as 0");
788-
Some(0)
787+
0
789788
}
790789
}
791790
};
@@ -824,49 +823,47 @@ impl Processor {
824823
],
825824
)?;
826825

827-
if let Some(fee_lamports) = fee_lamports_opt {
828-
if fee_lamports > 0 {
829-
Hopper::load(
826+
if fee_lamports > 0 {
827+
Hopper::load(
828+
program_id,
829+
fee_rebate_hopper_info,
830+
whitelist_info.key,
831+
stake_deposit_authority_info.key,
832+
true,
833+
)?;
834+
835+
let hopper_balance = fee_rebate_hopper_info.lamports();
836+
let rent = Rent::get()?;
837+
let min_balance = rent.minimum_balance(fee_rebate_hopper_info.data_len());
838+
let available = hopper_balance.saturating_sub(min_balance);
839+
let rebate_lamports = fee_lamports.min(available);
840+
841+
// If there are no funds in the Hopper, the TX should still succeed and no 0.1% rebate will be sent ( This is an extreme edge case )
842+
if rebate_lamports > 0 {
843+
let (_, hopper_bump, mut hopper_seeds) = Hopper::find_program_address(
830844
program_id,
831-
fee_rebate_hopper_info,
832845
whitelist_info.key,
833846
stake_deposit_authority_info.key,
834-
true,
847+
);
848+
hopper_seeds.push(vec![hopper_bump]);
849+
850+
invoke_signed(
851+
&transfer(
852+
fee_rebate_hopper_info.key,
853+
fee_rebate_recipient_info.key,
854+
rebate_lamports,
855+
),
856+
&[
857+
fee_rebate_hopper_info.clone(),
858+
fee_rebate_recipient_info.clone(),
859+
system_program_info.clone(),
860+
],
861+
&[hopper_seeds
862+
.iter()
863+
.map(|seed| seed.as_slice())
864+
.collect::<Vec<&[u8]>>()
865+
.as_slice()],
835866
)?;
836-
837-
let hopper_balance = fee_rebate_hopper_info.lamports();
838-
let rent = Rent::get()?;
839-
let min_balance = rent.minimum_balance(fee_rebate_hopper_info.data_len());
840-
let available = hopper_balance.saturating_sub(min_balance);
841-
let rebate_lamports = fee_lamports.min(available);
842-
843-
// If there are no funds in the Hopper, the TX should still succeed and no 0.1% rebate will be sent ( This is an extreme edge case )
844-
if rebate_lamports > 0 {
845-
let (_, hopper_bump, mut hopper_seeds) = Hopper::find_program_address(
846-
program_id,
847-
whitelist_info.key,
848-
stake_deposit_authority_info.key,
849-
);
850-
hopper_seeds.push(vec![hopper_bump]);
851-
852-
invoke_signed(
853-
&transfer(
854-
fee_rebate_hopper_info.key,
855-
fee_rebate_recipient_info.key,
856-
rebate_lamports,
857-
),
858-
&[
859-
fee_rebate_hopper_info.clone(),
860-
fee_rebate_recipient_info.clone(),
861-
system_program_info.clone(),
862-
],
863-
&[hopper_seeds
864-
.iter()
865-
.map(|seed| seed.as_slice())
866-
.collect::<Vec<&[u8]>>()
867-
.as_slice()],
868-
)?;
869-
}
870867
}
871868
}
872869

Binary file not shown.

0 commit comments

Comments
 (0)