done
This commit is contained in:
parent
92d54fbccd
commit
22f79efbe8
|
|
@ -5,7 +5,7 @@ resolution = true
|
|||
skip-lint = false
|
||||
|
||||
[programs.localnet]
|
||||
ticket_store = "GtT61qMWBYLa7X1WJfEehwB45gzDWwioM2ADAZ1Tcjve"
|
||||
ticket_store = "C47ThCBJcgyx3axKT5J2PCH4nNHtjxiWK1mMxTY7kFrU"
|
||||
|
||||
[registry]
|
||||
url = "https://api.apr.dev"
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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>,
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
@ -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>,
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user