deduct fees native fixed

This commit is contained in:
Sewmina Dilshan 2025-06-28 04:32:02 +05:30
parent d3b618fe5a
commit a39517f801

View File

@ -30,6 +30,10 @@ pub fn deduct(ctx: Context<DeductFees>, 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<DeductFees>, 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;