deduct fees native fixed
This commit is contained in:
parent
d3b618fe5a
commit
a39517f801
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user