This commit is contained in:
Sewmina 2024-10-27 23:36:13 +05:30
parent 92d54fbccd
commit 22f79efbe8
6 changed files with 31 additions and 34 deletions

View File

@ -5,7 +5,7 @@ resolution = true
skip-lint = false
[programs.localnet]
ticket_store = "GtT61qMWBYLa7X1WJfEehwB45gzDWwioM2ADAZ1Tcjve"
ticket_store = "C47ThCBJcgyx3axKT5J2PCH4nNHtjxiWK1mMxTY7kFrU"
[registry]
url = "https://api.apr.dev"

View File

@ -12,6 +12,14 @@ pub struct AddSeller <'info>{
#[account(mut)]
pub seller: Signer<'info>,
// #[account(
// mut,
// associated_token::mint=mint,
// associated_token::authority = seller,
// associated_token::token_program= token_program,
// )]
// pub seller_token_account: InterfaceAccount<'info, TokenAccount>,
#[account(
init,
payer = seller,
@ -24,20 +32,12 @@ pub struct AddSeller <'info>{
#[account(mint::token_program = token_program)]
pub mint: InterfaceAccount<'info, Mint>,
#[account(
mut,
associated_token::mint=mint,
associated_token::authority=seller,
associated_token::token_program = token_program
)]
pub seller_token_account: InterfaceAccount<'info, TokenAccount>,
#[account(
init,
payer =seller,
associated_token::mint=mint,
associated_token::authority = sales,
associated_token::token_program= token_program
associated_token::token_program= token_program,
)]
pub vault: InterfaceAccount<'info, TokenAccount>,
@ -54,21 +54,22 @@ pub struct AddSeller <'info>{
}
pub fn send_tickets_to_vault(ctx: &Context<AddSeller>, tickets_count: u64) -> Result<()>{
transfer_tokens(
&ctx.accounts.seller_token_account,
&ctx.accounts.vault,
&tickets_count,
&ctx.accounts.mint,
&ctx.accounts.seller,
&ctx.accounts.token_program
)
}
// pub fn send_tickets_to_vault(ctx: &Context<AddSeller>, tickets_count: u64) -> Result<()>{
// transfer_tokens(
// &ctx.accounts.seller_token_account,
// &ctx.accounts.vault,
// &tickets_count,
// &ctx.accounts.mint,
// &ctx.accounts.seller,
// &ctx.accounts.token_program
// )
// }
pub fn save_sales_account(ctx: Context<AddSeller>) -> Result<()> {
ctx.accounts.sales.set_inner(
Sales{
seller: ctx.accounts.seller.key(),
vault: ctx.accounts.vault.key(),
mint: ctx.accounts.mint.key(),
bump: ctx.bumps.sales
}

View File

@ -52,7 +52,7 @@ pub fn handover_tickets(ctx:Context<PurchaseTickets>, amount:u64)->Result<()>{
&signer_seeds
);
transfer_checked(cpi_context, amount, ctx.accounts.mint.decimals)
transfer_checked(cpi_context, amount*LAMPORTS_PER_SOL, ctx.accounts.mint.decimals)
}
@ -65,6 +65,7 @@ pub struct PurchaseTickets<'info>{
#[account(mut)]
pub seller:SystemAccount<'info>,
#[account(mint::token_program = token_program)]
pub mint: InterfaceAccount<'info, Mint>,
#[account(
@ -75,14 +76,8 @@ pub struct PurchaseTickets<'info>{
associated_token::token_program = token_program
)]
pub buyer_token_account: Box<InterfaceAccount<'info, TokenAccount>>,
#[account(mut)]
pub seller_account:SystemAccount<'info>,
#[account(
mut,
has_one=seller,
has_one = mint,
mut,
seeds= [b"sales", seller.key().as_ref()],
bump = sales.bump
)]
@ -94,8 +89,6 @@ pub struct PurchaseTickets<'info>{
associated_token::token_program = token_program
)]
vault: InterfaceAccount<'info, TokenAccount>,
// /// CHECK:
// pub owner: AccountInfo<'info>,
pub system_program: Program<'info, System>,
pub token_program: Interface<'info, TokenInterface>,

View File

@ -9,7 +9,7 @@ pub use constants::*;
pub use instructions::*;
pub use state::*;
declare_id!("GtT61qMWBYLa7X1WJfEehwB45gzDWwioM2ADAZ1Tcjve");
declare_id!("C47ThCBJcgyx3axKT5J2PCH4nNHtjxiWK1mMxTY7kFrU");
#[program]
pub mod ticket_store {
use super::*;
@ -19,13 +19,15 @@ pub mod ticket_store {
}
pub fn add_seller(ctx: Context<AddSeller>, tickets_count:u64) -> Result<()> {
add_seller::send_tickets_to_vault(&ctx, tickets_count)?;
// msg!("seller ata: {}", ctx.accounts.seller_token_account.key());
// add_seller::send_tickets_to_vault(&ctx, tickets_count)?;
add_seller::save_sales_account(ctx)
}
pub fn purchase_tickets(ctx:Context<PurchaseTickets>, amount:u64)->Result<()>{
purchase::pay_seller(&ctx, amount)?;
let ticket_price: u64 = LAMPORTS_PER_SOL * 1;
purchase::pay_seller(&ctx, ticket_price)?;
purchase::handover_tickets(ctx, amount)
}
}

View File

@ -4,6 +4,7 @@ use anchor_lang::prelude::*;
#[derive(InitSpace)]
pub struct Sales{
pub seller: Pubkey,
pub vault: Pubkey,
pub mint : Pubkey,
pub bump:u8
}

View File

@ -4,5 +4,5 @@ use anchor_lang::prelude::*;
#[derive(InitSpace)]
pub struct SellersRegistry{
#[max_len(100)]
pub sales_pdas: Vec<Pubkey>
pub sales_pdas: Vec<Pubkey>,
}