diff --git a/Anchor.toml b/Anchor.toml index 0af1325..236cdf6 100644 --- a/Anchor.toml +++ b/Anchor.toml @@ -5,7 +5,7 @@ resolution = true skip-lint = false [programs.localnet] -ticket_store = "GtT61qMWBYLa7X1WJfEehwB45gzDWwioM2ADAZ1Tcjve" +ticket_store = "C47ThCBJcgyx3axKT5J2PCH4nNHtjxiWK1mMxTY7kFrU" [registry] url = "https://api.apr.dev" diff --git a/programs/ticket_store/src/instructions/add_seller.rs b/programs/ticket_store/src/instructions/add_seller.rs index 060940d..cd831e4 100644 --- a/programs/ticket_store/src/instructions/add_seller.rs +++ b/programs/ticket_store/src/instructions/add_seller.rs @@ -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, 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, 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) -> 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 } diff --git a/programs/ticket_store/src/instructions/purchase.rs b/programs/ticket_store/src/instructions/purchase.rs index acb3b8e..15064a5 100644 --- a/programs/ticket_store/src/instructions/purchase.rs +++ b/programs/ticket_store/src/instructions/purchase.rs @@ -52,7 +52,7 @@ pub fn handover_tickets(ctx:Context, 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>, - - #[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>, diff --git a/programs/ticket_store/src/lib.rs b/programs/ticket_store/src/lib.rs index 3b20108..dabfc2e 100644 --- a/programs/ticket_store/src/lib.rs +++ b/programs/ticket_store/src/lib.rs @@ -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, 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, 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) } } diff --git a/programs/ticket_store/src/state/sales.rs b/programs/ticket_store/src/state/sales.rs index 44ac2cf..7762b45 100644 --- a/programs/ticket_store/src/state/sales.rs +++ b/programs/ticket_store/src/state/sales.rs @@ -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 } \ No newline at end of file diff --git a/programs/ticket_store/src/state/sellers_registry.rs b/programs/ticket_store/src/state/sellers_registry.rs index 0d9d59f..c742f6d 100644 --- a/programs/ticket_store/src/state/sellers_registry.rs +++ b/programs/ticket_store/src/state/sellers_registry.rs @@ -4,5 +4,5 @@ use anchor_lang::prelude::*; #[derive(InitSpace)] pub struct SellersRegistry{ #[max_len(100)] - pub sales_pdas: Vec + pub sales_pdas: Vec, } \ No newline at end of file