Skip to content

Commit

Permalink
replace check spl-token-account-mints
Browse files Browse the repository at this point in the history
  • Loading branch information
luciotato committed May 5, 2023
1 parent e69ed89 commit d77b5a5
Show file tree
Hide file tree
Showing 8 changed files with 17 additions and 53 deletions.
21 changes: 11 additions & 10 deletions programs/marinade-finance/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -317,6 +317,7 @@ pub struct Initialize<'info> {

pub liq_pool: LiqPoolInitialize<'info>,

#[account(constraint = treasury_msol_account.mint == msol_mint.key())]
pub treasury_msol_account: Box<Account<'info, TokenAccount>>,

pub clock: Sysvar<'info, Clock>,
Expand Down Expand Up @@ -380,9 +381,6 @@ pub struct AddLiquidity<'info> {
/// CHECK: PDA
pub lp_mint_authority: UncheckedAccount<'info>,

// msol_mint to be able to compute current msol value in liq_pool
// not needed because we use memorized value
// pub msol_mint: Account<'info, Mint>,
// liq_pool_msol_leg to be able to compute current msol value in liq_pool
pub liq_pool_msol_leg: Box<Account<'info, TokenAccount>>,

Expand All @@ -395,7 +393,8 @@ pub struct AddLiquidity<'info> {
#[account(owner = system_program::ID)]
pub transfer_from: Signer<'info>,

#[account(mut)]
// user SPL-Token account to send the newly minted LP tokens
#[account(mut, constraint = mint_to.mint == state.liq_pool.lp_mint)]
pub mint_to: Box<Account<'info, TokenAccount>>,

pub system_program: Program<'info, System>,
Expand All @@ -410,14 +409,14 @@ pub struct RemoveLiquidity<'info> {
#[account(mut)]
pub lp_mint: Box<Account<'info, Mint>>,

#[account(mut)]
#[account(mut, constraint = burn_from.mint == state.liq_pool.lp_mint)]
pub burn_from: Box<Account<'info, TokenAccount>>,
pub burn_from_authority: Signer<'info>,

#[account(mut)]
pub transfer_sol_to: SystemAccount<'info>,

#[account(mut)]
#[account(mut, constraint = transfer_msol_to.mint == state.msol_mint)]
pub transfer_msol_to: Box<Account<'info, TokenAccount>>,

// legs
Expand Down Expand Up @@ -455,7 +454,8 @@ pub struct Deposit<'info> {
#[account(owner = system_program::ID)]
pub transfer_from: Signer<'info>,

#[account(mut)]
/// user mSOL Token account to send the mSOL
#[account(mut, constraint = mint_to.mint == state.msol_mint)]
pub mint_to: Box<Account<'info, TokenAccount>>,

/// CHECK: PDA
Expand Down Expand Up @@ -490,7 +490,8 @@ pub struct DepositStakeAccount<'info> {

#[account(mut)]
pub msol_mint: Account<'info, Mint>,
#[account(mut)]
/// user mSOL Token account to send the mSOL
#[account(mut, constraint = mint_to.mint == state.msol_mint)]
pub mint_to: Box<Account<'info, TokenAccount>>,

/// CHECK: PDA
Expand Down Expand Up @@ -522,7 +523,7 @@ pub struct LiquidUnstake<'info> {
#[account(mut)]
pub treasury_msol_account: UncheckedAccount<'info>,

#[account(mut)]
#[account(mut, constraint = get_msol_from.mint == state.msol_mint)]
pub get_msol_from: Box<Account<'info, TokenAccount>>,
pub get_msol_from_authority: Signer<'info>, //burn_msol_from owner or delegate_authority

Expand Down Expand Up @@ -599,7 +600,7 @@ pub struct OrderUnstake<'info> {
pub msol_mint: Box<Account<'info, Mint>>,

// Note: Ticket beneficiary is burn_msol_from.owner
#[account(mut)]
#[account(mut, constraint = burn_msol_from.mint == state.msol_mint)]
pub burn_msol_from: Box<Account<'info, TokenAccount>>,

pub burn_msol_authority: Signer<'info>, // burn_msol_from acc must be pre-delegated with enough amount to this key or input owner signature here
Expand Down
6 changes: 0 additions & 6 deletions programs/marinade-finance/src/liq_pool/add_liquidity.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,6 @@ impl<'info> AddLiquidity<'info> {
Ok(())
}

fn check_mint_to(&self) -> Result<()> {
check_token_mint(&self.mint_to, self.state.liq_pool.lp_mint, "mint_to")?;
Ok(())
}

// fn add_liquidity()
pub fn process(&mut self, lamports: u64) -> Result<()> {
msg!("add-liq pre check");
Expand All @@ -41,7 +36,6 @@ impl<'info> AddLiquidity<'info> {
self.state
.liq_pool
.check_liquidity_cap(lamports, self.liq_pool_sol_leg_pda.lamports())?;
self.check_mint_to()?;
check_address(
self.system_program.key,
&system_program::ID,
Expand Down
13 changes: 1 addition & 12 deletions programs/marinade-finance/src/liq_pool/remove_liquidity.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use crate::{
calc::proportional,
checks::{check_address, check_min_amount, check_token_mint},
checks::{check_address, check_min_amount},
liq_pool::LiqPoolHelpers,
RemoveLiquidity,
};
Expand All @@ -10,7 +10,6 @@ use anchor_spl::token::{burn, transfer, Burn, Transfer, spl_token};

impl<'info> RemoveLiquidity<'info> {
fn check_burn_from(&self, tokens: u64) -> Result<()> {
check_token_mint(&self.burn_from, self.state.liq_pool.lp_mint, "burn_from")?;
// if delegated, check delegated amount
if *self.burn_from_authority.key == self.burn_from.owner {
if self.burn_from.amount < tokens {
Expand Down Expand Up @@ -46,22 +45,12 @@ impl<'info> RemoveLiquidity<'info> {
Ok(())
}

fn check_transfer_msol_to(&self) -> Result<()> {
check_token_mint(
&self.transfer_msol_to,
self.state.msol_mint,
"transfer_msol_to",
)?;
Ok(())
}

pub fn process(&mut self, tokens: u64) -> Result<()> {
msg!("rem-liq pre check");
self.state
.liq_pool
.check_lp_mint(self.lp_mint.to_account_info().key)?;
self.check_burn_from(tokens)?;
self.check_transfer_msol_to()?;
self.state
.liq_pool
.check_liq_pool_msol_leg(self.liq_pool_msol_leg.to_account_info().key)?;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ use anchor_spl::token::{mint_to, MintTo, spl_token};
use crate::checks::check_owner_program;
use crate::error::CommonError;
use crate::{
checks::{check_address, check_token_mint},
checks::{check_address},
stake_system::StakeSystemHelpers,
state::StateHelpers,
DepositStakeAccount, ID,
Expand All @@ -27,7 +27,6 @@ impl<'info> DepositStakeAccount<'info> {
self.state.stake_system.check_stake_list(&self.stake_list)?;
self.state
.check_msol_mint_authority(self.msol_mint_authority.key)?;
check_token_mint(&self.mint_to, self.state.msol_mint, "mint_to")?;

check_address(
self.system_program.key,
Expand Down
8 changes: 1 addition & 7 deletions programs/marinade-finance/src/state/deposit.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use anchor_lang::solana_program::{program::invoke, system_instruction, system_pr
use anchor_spl::token::{mint_to, transfer, MintTo, Transfer, spl_token};

use crate::{
checks::{check_address, check_min_amount, check_token_mint},
checks::{check_address, check_min_amount},
liq_pool::LiqPoolHelpers,
state::StateHelpers,
Deposit,
Expand All @@ -17,19 +17,13 @@ impl<'info> Deposit<'info> {
Ok(())
}

fn check_mint_to(&self) -> Result<()> {
check_token_mint(&self.mint_to, self.state.msol_mint, "mint_to")?;
Ok(())
}

// fn deposit_sol()
pub fn process(&mut self, lamports: u64) -> Result<()> {
check_min_amount(lamports, self.state.min_deposit, "deposit SOL")?;
self.state
.liq_pool
.check_liq_pool_msol_leg(self.liq_pool_msol_leg.to_account_info().key)?;
self.check_transfer_from(lamports)?;
self.check_mint_to()?;
self.state
.check_msol_mint_authority(self.msol_mint_authority.key)?;
check_address(
Expand Down
13 changes: 1 addition & 12 deletions programs/marinade-finance/src/state/initialize.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
use crate::{
checks::{
check_address, check_freeze_authority, check_mint_authority, check_mint_empty,
check_token_mint,
check_address, check_freeze_authority, check_mint_authority, check_mint_empty
},
stake_system::StakeSystem,
validator_system::ValidatorSystem,
Expand Down Expand Up @@ -61,15 +60,6 @@ impl<'info> Initialize<'info> {
Ok(())
}

fn check_treasury_accounts(&self) -> Result<()> {
check_token_mint(
&self.treasury_msol_account,
*self.msol_mint.to_account_info().key,
"treasury_msol_account",
)?;
Ok(())
}

pub fn process(&mut self, data: InitializeData) -> Result<()> {
check_address(
self.creator_authority.key,
Expand All @@ -84,7 +74,6 @@ impl<'info> Initialize<'info> {
self.check_state()?;
self.check_reserve_pda()?;
self.check_msol_mint()?;
self.check_treasury_accounts()?;

self.state.msol_mint = *self.msol_mint.to_account_info().key;
self.state.admin_authority = data.admin_authority;
Expand Down
3 changes: 1 addition & 2 deletions programs/marinade-finance/src/state/liquid_unstake.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,13 @@ use anchor_spl::token::{transfer, Transfer, spl_token};

use crate::checks::check_min_amount;
use crate::{
checks::{check_address, check_token_mint},
checks::{check_address},
liq_pool::LiqPoolHelpers,
CommonError, LiquidUnstake,
};

impl<'info> LiquidUnstake<'info> {
fn check_get_msol_from(&self, msol_amount: u64) -> Result<()> {
check_token_mint(&self.get_msol_from, self.state.msol_mint, "get_msol_from")?;
// if delegated, check delegated amount
if *self.get_msol_from_authority.key == self.get_msol_from.owner {
if self.get_msol_from.amount < msol_amount {
Expand Down
3 changes: 1 addition & 2 deletions programs/marinade-finance/src/state/order_unstake.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,12 @@ use anchor_lang::prelude::*;
use anchor_spl::token::{burn, Burn, spl_token};

use crate::{
checks::{check_address, check_min_amount, check_token_mint},
checks::{check_address, check_min_amount},
OrderUnstake,
};

impl<'info> OrderUnstake<'info> {
fn check_burn_msol_from(&self, msol_amount: u64) -> Result<()> {
check_token_mint(&self.burn_msol_from, self.state.msol_mint, "burn_msol_from")?;

if msol_amount == 0 {
return Err(Error::from(ProgramError::InvalidAccountData).with_source(source!()));
Expand Down

0 comments on commit d77b5a5

Please sign in to comment.