From db24f57690009eea8122d45394dbfaf575c81158 Mon Sep 17 00:00:00 2001 From: Sewmina Dilshan Date: Mon, 28 Jul 2025 11:15:18 +0530 Subject: [PATCH] ticket leaderboard --- programs/bets/src/constants.rs | 4 ++++ programs/bets/src/error.rs | 2 ++ programs/bets/src/instructions/buy_tickets.rs | 12 +++++++++--- programs/bets/src/state/ticket_leaderboard.rs | 2 ++ 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/programs/bets/src/constants.rs b/programs/bets/src/constants.rs index 70b7e0e..c211841 100644 --- a/programs/bets/src/constants.rs +++ b/programs/bets/src/constants.rs @@ -5,3 +5,7 @@ pub const SEED: &str = "anchor"; #[constant] pub const FEE_COLLECTOR: &str= "9esrj2X33pr5og6fdkDMjaW6fdnnb9hT1cWshamxTdL4"; + +#[constant] +pub const TICKET_SALE_VAULT_ADDRESS: &str= "9esrj2X33pr5og6fdkDMjaW6fdnnb9hT1cWshamxTdL4"; + diff --git a/programs/bets/src/error.rs b/programs/bets/src/error.rs index bb5a0d4..0f01f47 100644 --- a/programs/bets/src/error.rs +++ b/programs/bets/src/error.rs @@ -23,4 +23,6 @@ pub enum BettingError { InsufficientFunds, #[msg("Fee calculation error")] FeeCalculationError, + #[msg("Invalid ticket sale vault address")] + InvalidTicketSaleVault, } \ No newline at end of file diff --git a/programs/bets/src/instructions/buy_tickets.rs b/programs/bets/src/instructions/buy_tickets.rs index d4c717d..7da682b 100644 --- a/programs/bets/src/instructions/buy_tickets.rs +++ b/programs/bets/src/instructions/buy_tickets.rs @@ -1,6 +1,8 @@ use anchor_lang::prelude::*; use anchor_spl::{associated_token::AssociatedToken, token::{transfer_checked, TransferChecked}, token_interface::{TokenAccount, TokenInterface}}; -use crate::*; +use crate::{error::BettingError, *}; +use crate::constants::TICKET_SALE_VAULT_ADDRESS; +use std::str::FromStr; pub fn buy_tickets(ctx: Context, _id:u64, amount: u64) -> Result<()> { @@ -39,8 +41,12 @@ pub struct BuyTickets<'info>{ #[account(mut)] pub payer: Signer<'info>, - - #[account(mut)] + + /// CHECK: The vault that receives SOL payments for tickets + #[account( + mut, + address = Pubkey::from_str(TICKET_SALE_VAULT_ADDRESS).unwrap() @ BettingError::InvalidTicketSaleVault + )] pub ticket_sale_vault: AccountInfo<'info>, #[account( diff --git a/programs/bets/src/state/ticket_leaderboard.rs b/programs/bets/src/state/ticket_leaderboard.rs index 5865d16..091bbd5 100644 --- a/programs/bets/src/state/ticket_leaderboard.rs +++ b/programs/bets/src/state/ticket_leaderboard.rs @@ -6,4 +6,6 @@ use crate::*; pub struct TicketLeaderboard{ #[max_len(500)] pub players: Vec + + } \ No newline at end of file