done
This commit is contained in:
parent
92d54fbccd
commit
22f79efbe8
|
|
@ -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"
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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>,
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
@ -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>,
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue
Block a user