From 8d21ab1725330f6fa8b18c502801efd5182963b2 Mon Sep 17 00:00:00 2001 From: husreo Date: Wed, 11 Dec 2024 19:40:01 +0700 Subject: [PATCH] add checks for creating and locking pool --- programs/pump-science/src/errors.rs | 3 +++ .../src/instructions/migration/create_pool.rs | 3 +-- .../src/instructions/migration/lock_pool.rs | 15 +++++++++++---- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/programs/pump-science/src/errors.rs b/programs/pump-science/src/errors.rs index 19f768d..a1f5d69 100644 --- a/programs/pump-science/src/errors.rs +++ b/programs/pump-science/src/errors.rs @@ -83,4 +83,7 @@ pub enum ContractError { #[msg("Invalid Fee Receiver")] InvalidFeeReceiver, + + #[msg("Invalid Migration Authority")] + InvalidMigrationAuthority, } diff --git a/programs/pump-science/src/instructions/migration/create_pool.rs b/programs/pump-science/src/instructions/migration/create_pool.rs index b82d386..6e96d1e 100644 --- a/programs/pump-science/src/instructions/migration/create_pool.rs +++ b/programs/pump-science/src/instructions/migration/create_pool.rs @@ -105,8 +105,7 @@ pub struct InitializePoolWithConfig<'info> { /// CHECK: Protocol fee token b accounts pub protocol_token_b_fee: UncheckedAccount<'info>, - #[account(mut)] - /// CHECK: Admin account + #[account(mut, constraint = payer.key() == global.migration_authority @ ContractError::InvalidMigrationAuthority)] pub payer: Signer<'info>, #[account(mut)] diff --git a/programs/pump-science/src/instructions/migration/lock_pool.rs b/programs/pump-science/src/instructions/migration/lock_pool.rs index f978f56..0abb822 100644 --- a/programs/pump-science/src/instructions/migration/lock_pool.rs +++ b/programs/pump-science/src/instructions/migration/lock_pool.rs @@ -2,13 +2,21 @@ use anchor_lang::prelude::*; use anchor_lang::solana_program::{instruction::Instruction, program::invoke_signed}; use anchor_spl::associated_token; use crate::constants::{VAULT_SEED, METEORA_PROGRAM_KEY}; +use crate::errors::ContractError; +use crate::Global; use std::str::FromStr; use crate::state::meteora::{get_function_hash, get_lock_lp_ix_data}; - #[derive(Accounts)] pub struct LockPool<'info> { - + #[account( + mut, + seeds = [Global::SEED_PREFIX.as_bytes()], + constraint = global.initialized == true @ ContractError::NotInitialized, + bump, + )] + global: Box>, + #[account( seeds = [VAULT_SEED], bump @@ -55,8 +63,7 @@ pub struct LockPool<'info> { /// CHECK: Accounts to bootstrap the pool with initial liquidity pub payer_pool_lp: UncheckedAccount<'info>, - #[account(mut)] - /// CHECK: Admin account + #[account(mut, constraint = payer.key() == global.migration_authority @ ContractError::InvalidMigrationAuthority)] pub payer: Signer<'info>, /// CHECK: Token program account