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 skip-lint = false
[programs.localnet] [programs.localnet]
ticket_store = "GtT61qMWBYLa7X1WJfEehwB45gzDWwioM2ADAZ1Tcjve" ticket_store = "C47ThCBJcgyx3axKT5J2PCH4nNHtjxiWK1mMxTY7kFrU"
[registry] [registry]
url = "https://api.apr.dev" url = "https://api.apr.dev"

View File

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

View File

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

View File

@ -9,7 +9,7 @@ pub use constants::*;
pub use instructions::*; pub use instructions::*;
pub use state::*; pub use state::*;
declare_id!("GtT61qMWBYLa7X1WJfEehwB45gzDWwioM2ADAZ1Tcjve"); declare_id!("C47ThCBJcgyx3axKT5J2PCH4nNHtjxiWK1mMxTY7kFrU");
#[program] #[program]
pub mod ticket_store { pub mod ticket_store {
use super::*; use super::*;
@ -19,13 +19,15 @@ pub mod ticket_store {
} }
pub fn add_seller(ctx: Context<AddSeller>, tickets_count:u64) -> Result<()> { 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) add_seller::save_sales_account(ctx)
} }
pub fn purchase_tickets(ctx:Context<PurchaseTickets>, amount:u64)->Result<()>{ 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) purchase::handover_tickets(ctx, amount)
} }
} }

View File

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

View File

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