From 364b01c2d366c7afa3648350d8673611407de8f9 Mon Sep 17 00:00:00 2001 From: Sewmina Dilshan Date: Wed, 30 Jul 2025 12:52:14 +0530 Subject: [PATCH] ticket count and attempts --- programs/bets/src/instructions/create_leaderboard.rs | 4 +++- programs/bets/src/instructions/enter_leaderboard.rs | 3 ++- programs/bets/src/lib.rs | 4 ++-- programs/bets/src/state/ticket_leaderboard.rs | 2 ++ 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/programs/bets/src/instructions/create_leaderboard.rs b/programs/bets/src/instructions/create_leaderboard.rs index 590ee77..651e90e 100644 --- a/programs/bets/src/instructions/create_leaderboard.rs +++ b/programs/bets/src/instructions/create_leaderboard.rs @@ -2,7 +2,7 @@ use anchor_lang::prelude::*; use anchor_spl::{associated_token::AssociatedToken, token_interface::{TokenAccount, TokenInterface}}; use crate::*; -pub fn create(ctx: Context, id:u64, game_id:String) -> Result<()> { +pub fn create(ctx: Context, id:u64, game_id:String, entry_ticket_count:u64, max_attempt_count:u64) -> Result<()> { let ticket_leaderboard_list = &mut ctx.accounts.ticket_leaderboard_list; let ticket_leaderboard = &mut ctx.accounts.ticket_leaderboard; @@ -10,6 +10,8 @@ pub fn create(ctx: Context, id:u64, game_id:String) -> Result ticket_leaderboard.players = vec![]; ticket_leaderboard.game_id = game_id; ticket_leaderboard.is_over = false; + ticket_leaderboard.entry_ticket_count = entry_ticket_count; + ticket_leaderboard.max_attempts = max_attempt_count; ticket_leaderboard_list.leaderboards.push(ticket_leaderboard.key()); msg!("Leaderboard created!"); diff --git a/programs/bets/src/instructions/enter_leaderboard.rs b/programs/bets/src/instructions/enter_leaderboard.rs index b7de90a..d62bfaf 100644 --- a/programs/bets/src/instructions/enter_leaderboard.rs +++ b/programs/bets/src/instructions/enter_leaderboard.rs @@ -5,9 +5,10 @@ use crate::*; pub fn enter(ctx: Context, id:u64, uid:String) -> Result<()> { let payer = &ctx.accounts.payer; let receipt = &mut ctx.accounts.receipt_account; + let leaderboard = &ctx.accounts.ticket_leaderboard; // Transfer 1 token from user's vault to leaderboard vault - let transfer_amount = 1u64; + let transfer_amount = 1u64 * leaderboard.entry_ticket_count; let cpi_program = ctx.accounts.token_program.to_account_info(); let cpi_accounts = anchor_spl::token_interface::TransferChecked { diff --git a/programs/bets/src/lib.rs b/programs/bets/src/lib.rs index af37438..f444bdf 100644 --- a/programs/bets/src/lib.rs +++ b/programs/bets/src/lib.rs @@ -63,8 +63,8 @@ pub mod bets { init_leaderboard_list::init(ctx) } - pub fn create_leaderboard(ctx:Context, id:u64, game_id:String)->Result<()>{ - create_leaderboard::create(ctx, id, game_id) + pub fn create_leaderboard(ctx:Context, id:u64, game_id:String, entry_ticket_count:u64, max_attempt_count:u64)->Result<()>{ + create_leaderboard::create(ctx, id, game_id, entry_ticket_count, max_attempt_count) } pub fn update_leaderboard(ctx:Context, id:u64, player:Pubkey, new_score:u64)->Result<()>{ diff --git a/programs/bets/src/state/ticket_leaderboard.rs b/programs/bets/src/state/ticket_leaderboard.rs index 7b5555a..17d8fe3 100644 --- a/programs/bets/src/state/ticket_leaderboard.rs +++ b/programs/bets/src/state/ticket_leaderboard.rs @@ -9,5 +9,7 @@ pub struct TicketLeaderboard{ pub game_id: String, #[max_len(150)] pub players: Vec, + pub entry_ticket_count: u64, + pub max_attempts: u64, pub is_over: bool, } \ No newline at end of file