From a39517f801f27b04cb1003e4b790f2a2c848e15f Mon Sep 17 00:00:00 2001 From: Sewmina Dilshan Date: Sat, 28 Jun 2025 04:32:02 +0530 Subject: [PATCH] deduct fees native fixed --- programs/bets/src/instructions/deduct_fees.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/programs/bets/src/instructions/deduct_fees.rs b/programs/bets/src/instructions/deduct_fees.rs index d6b8a75..1c1ce35 100644 --- a/programs/bets/src/instructions/deduct_fees.rs +++ b/programs/bets/src/instructions/deduct_fees.rs @@ -30,6 +30,10 @@ pub fn deduct(ctx: Context, winner:Pubkey, userid:String)->Result<() msg!("Fee: {}, Referrer fee: {}", fee, referrer_fee); msg!("Total to be sent: {}", fee + referrer_fee + referrer_fee); + // Calculate rent-exempt minimum for referrer accounts + let referrer_rent_exempt = Rent::get()?.minimum_balance(0); // 0 bytes for basic account + msg!("Referrer rent exempt minimum: {}", referrer_rent_exempt); + // Verify we have enough funds for all transfers let total_transfer = fee.checked_add(referrer_fee) .and_then(|sum| sum.checked_add(referrer_fee)) @@ -40,6 +44,20 @@ pub fn deduct(ctx: Context, winner:Pubkey, userid:String)->Result<() BettingError::InsufficientFunds ); + // Check if referrer accounts have enough SOL for rent + let owner_referrer_balance = **ctx.accounts.owner_referrer.lamports.borrow(); + let joiner_referrer_balance = **ctx.accounts.joiner_referrer.lamports.borrow(); + + require!( + owner_referrer_balance + referrer_fee >= referrer_rent_exempt, + BettingError::InsufficientFunds + ); + + require!( + joiner_referrer_balance + referrer_fee >= referrer_rent_exempt, + BettingError::InsufficientFunds + ); + // Transfer referrer fees **bet_vault.to_account_info().try_borrow_mut_lamports()? -= referrer_fee; **ctx.accounts.owner_referrer.try_borrow_mut_lamports()? += referrer_fee;