diff --git a/programs/bets/src/instructions/close_bet.rs b/programs/bets/src/instructions/close_bet.rs index 4d5d466..ecce791 100644 --- a/programs/bets/src/instructions/close_bet.rs +++ b/programs/bets/src/instructions/close_bet.rs @@ -22,6 +22,10 @@ pub fn close(ctx: Context, winner:Pubkey, userid:String)->Result<()>{ msg!("Total lamports: {}", total_lamports); let fee = total_lamports / 40; // 2.5% + // Calculate rent-exempt minimum balance + let rent_exempt_minimum = Rent::get()?.minimum_balance(bet_vault.to_account_info().data_len()); + msg!("Rent exempt minimum: {}", rent_exempt_minimum); + let referrer_fee = total_lamports / 80; //1.25% for each referrer msg!("Fee: {}, Referrer fee: {}", fee, referrer_fee); msg!("Total to be sent: {}", fee + referrer_fee + referrer_fee); @@ -59,6 +63,12 @@ pub fn close(ctx: Context, winner:Pubkey, userid:String)->Result<()>{ // Remove the bet_vault public key from the list bets_list.bets.retain(|&bet| bet != bet_vault.key()); + // Close the bet vault account + let bet_vault_account = bet_vault.to_account_info(); + let rent_lamports = bet_vault_account.lamports(); + **bet_vault_account.try_borrow_mut_lamports()? = 0; + **ctx.accounts.payer.try_borrow_mut_lamports()? += rent_lamports; + msg!("Bet {} closed by {}", bet_vault.key(), winner); Ok(()) diff --git a/programs/bets/src/instructions/deduct_fees.rs b/programs/bets/src/instructions/deduct_fees.rs new file mode 100644 index 0000000..77cbf19 --- /dev/null +++ b/programs/bets/src/instructions/deduct_fees.rs @@ -0,0 +1,4 @@ +use std::str::FromStr; + +use anchor_lang::prelude::*; +use crate::{error::BettingError, *}; \ No newline at end of file diff --git a/programs/bets/src/instructions/mod.rs b/programs/bets/src/instructions/mod.rs index cb19ba4..40f4def 100644 --- a/programs/bets/src/instructions/mod.rs +++ b/programs/bets/src/instructions/mod.rs @@ -11,4 +11,7 @@ pub mod close_bet; pub use close_bet::*; pub mod refund_bet; -pub use refund_bet::*; \ No newline at end of file +pub use refund_bet::*; + +pub mod deduct_fees; +pub use deduct_fees::*; \ No newline at end of file