account resolution error fix#1

This commit is contained in:
Sewmina Dilshan 2025-06-20 17:29:52 +05:30
parent 23a98aea9c
commit 682a927049
3 changed files with 10 additions and 8 deletions

View File

@ -5,7 +5,7 @@ use anchor_spl::{
}; };
use crate::{error::BettingError, shared::transfer_tokens_pda, state::{BetVault, BetsList}}; use crate::{error::BettingError, shared::transfer_tokens_pda, state::{BetVault, BetsList}};
pub fn close_token_bet(ctx: Context<CloseBetToken>, winner: Pubkey, userid: String) -> Result<()> { pub fn close_token_bet(ctx: Context<CloseBetToken>, winner: Pubkey, userid: String, owner:Pubkey, game_id:String, nonce:u64) -> Result<()> {
let bet_vault = &mut ctx.accounts.bet_vault; let bet_vault = &mut ctx.accounts.bet_vault;
require!( require!(
bet_vault.owner == winner || bet_vault.joiner == winner || bet_vault.owner_id == userid || bet_vault.joiner_id == userid, bet_vault.owner == winner || bet_vault.joiner == winner || bet_vault.owner_id == userid || bet_vault.joiner_id == userid,
@ -40,13 +40,14 @@ pub fn close_token_bet(ctx: Context<CloseBetToken>, winner: Pubkey, userid: Stri
} }
#[derive(Accounts)] #[derive(Accounts)]
#[instruction( winner: Pubkey, userid: String,owner:Pubkey, game_id:String, nonce:u64)]
pub struct CloseBetToken<'info> { pub struct CloseBetToken<'info> {
#[account(mut)] #[account(mut)]
pub bets_list: Account<'info, BetsList>, pub bets_list: Account<'info, BetsList>,
#[account( #[account(
mut, mut,
seeds = [b"bet_vault", bet_vault.owner.as_ref(), bet_vault.game_id.as_bytes(), &bet_vault.nonce.to_le_bytes()], seeds = [b"bet_vault", owner.as_ref(), game_id.as_bytes(), &nonce.to_le_bytes()],
bump bump
)] )]
pub bet_vault: Account<'info, BetVault>, pub bet_vault: Account<'info, BetVault>,

View File

@ -7,7 +7,7 @@ use anchor_spl::{
}; };
use crate::{error::BettingError, shared::transfer_tokens_pda, *}; use crate::{error::BettingError, shared::transfer_tokens_pda, *};
pub fn handle_deduct_fees_token(ctx: Context<DeductFeesToken>, winner: Pubkey, userid: String) -> Result<()> { pub fn handle_deduct_fees_token(ctx: Context<DeductFeesToken>, winner: Pubkey, userid: String, owner:Pubkey, game_id:String, nonce:u64) -> Result<()> {
let bet_vault = &mut ctx.accounts.bet_vault; let bet_vault = &mut ctx.accounts.bet_vault;
require!( require!(
bet_vault.owner == winner || bet_vault.joiner == winner || bet_vault.owner_id == userid || bet_vault.joiner_id == userid, bet_vault.owner == winner || bet_vault.joiner == winner || bet_vault.owner_id == userid || bet_vault.joiner_id == userid,
@ -90,13 +90,14 @@ pub fn handle_deduct_fees_token(ctx: Context<DeductFeesToken>, winner: Pubkey, u
} }
#[derive(Accounts)] #[derive(Accounts)]
#[instruction(winner: Pubkey, userid: String,owner:Pubkey, game_id:String, nonce:u64)]
pub struct DeductFeesToken<'info> { pub struct DeductFeesToken<'info> {
#[account(mut)] #[account(mut)]
pub bets_list: Account<'info, BetsList>, pub bets_list: Account<'info, BetsList>,
#[account( #[account(
mut, mut,
seeds = [b"bet_vault", bet_vault.owner.as_ref(), bet_vault.game_id.as_bytes(), &bet_vault.nonce.to_le_bytes()], seeds = [b"bet_vault", owner.as_ref(), game_id.as_bytes(), &nonce.to_le_bytes()],
bump bump
)] )]
pub bet_vault: Account<'info, BetVault>, pub bet_vault: Account<'info, BetVault>,

View File

@ -48,12 +48,12 @@ pub mod bets {
join_bet_token::join_token_bet(ctx, user_id, game_id) join_bet_token::join_token_bet(ctx, user_id, game_id)
} }
pub fn deduct_fees_token(ctx:Context<DeductFeesToken>, winner:Pubkey, userid:String)->Result<()>{ pub fn deduct_fees_token(ctx:Context<DeductFeesToken>, winner:Pubkey, userid:String, owner:Pubkey, game_id:String, nonce:u64)->Result<()>{
deduct_fees_token::handle_deduct_fees_token(ctx, winner, userid) deduct_fees_token::handle_deduct_fees_token(ctx, winner, userid, owner, game_id, nonce)
} }
pub fn close_bet_token(ctx:Context<CloseBetToken>, winner:Pubkey, userid:String)->Result<()>{ pub fn close_bet_token(ctx:Context<CloseBetToken>, winner:Pubkey, userid:String, owner:Pubkey, game_id:String, nonce:u64)->Result<()>{
close_bet_token::close_token_bet(ctx, winner, userid) close_bet_token::close_token_bet(ctx, winner, userid, owner, game_id, nonce)
} }
pub fn clear_bets_list(ctx: Context<ClearBetsList>) -> Result<()> { pub fn clear_bets_list(ctx: Context<ClearBetsList>) -> Result<()> {
clear_bets_list::clear(ctx) clear_bets_list::clear(ctx)