This commit is contained in:
Sewmina 2025-06-15 08:02:47 +00:00
parent cc73ac1feb
commit e169619589
2 changed files with 19 additions and 3 deletions

View File

@ -11,9 +11,7 @@ pub fn clear(ctx: Context<ClearBetsList>) -> Result<()> {
#[derive(Accounts)]
pub struct ClearBetsList<'info> {
#[account(
mut,
seeds = [b"bets_list"],
bump
mut
)]
pub bets_list: Account<'info, BetsList>,

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;