Rename to Bank and Group
This commit is contained in:
parent
2d65078c23
commit
f6d2df1ad4
|
@ -6,7 +6,7 @@ use crate::state::*;
|
|||
#[derive(Accounts)]
|
||||
#[instruction(account_num: u8)]
|
||||
pub struct CreateAccount<'info> {
|
||||
pub group: AccountLoader<'info, MangoGroup>,
|
||||
pub group: AccountLoader<'info, Group>,
|
||||
|
||||
#[account(
|
||||
init,
|
||||
|
|
|
@ -10,9 +10,9 @@ pub struct CreateGroup<'info> {
|
|||
seeds = [b"group".as_ref(), admin.key().as_ref()],
|
||||
bump,
|
||||
payer = payer,
|
||||
space = 8 + std::mem::size_of::<MangoGroup>(),
|
||||
space = 8 + std::mem::size_of::<Group>(),
|
||||
)]
|
||||
pub group: AccountLoader<'info, MangoGroup>,
|
||||
pub group: AccountLoader<'info, Group>,
|
||||
|
||||
pub admin: Signer<'info>,
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ use crate::state::*;
|
|||
|
||||
#[derive(Accounts)]
|
||||
pub struct Deposit<'info> {
|
||||
pub group: AccountLoader<'info, MangoGroup>,
|
||||
pub group: AccountLoader<'info, Group>,
|
||||
|
||||
#[account(
|
||||
mut,
|
||||
|
@ -22,7 +22,7 @@ pub struct Deposit<'info> {
|
|||
has_one = vault,
|
||||
constraint = bank.load()?.mint == token_account.mint,
|
||||
)]
|
||||
pub bank: AccountLoader<'info, TokenBank>,
|
||||
pub bank: AccountLoader<'info, Bank>,
|
||||
|
||||
#[account(mut)]
|
||||
pub vault: Account<'info, TokenAccount>,
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
use crate::error::MangoError;
|
||||
use crate::state::{compute_health, MangoAccount, MangoGroup, TokenBank};
|
||||
use crate::state::{compute_health, MangoAccount, Group, Bank};
|
||||
use crate::{group_seeds, util, Mango};
|
||||
use anchor_lang::prelude::*;
|
||||
use anchor_spl::token::TokenAccount;
|
||||
|
@ -8,7 +8,7 @@ use std::cell::{Ref, RefMut};
|
|||
|
||||
#[derive(Accounts)]
|
||||
pub struct MarginTrade<'info> {
|
||||
pub group: AccountLoader<'info, MangoGroup>,
|
||||
pub group: AccountLoader<'info, Group>,
|
||||
|
||||
#[account(
|
||||
mut,
|
||||
|
@ -118,7 +118,7 @@ fn adjust_for_post_cpi_token_amounts(
|
|||
ctx: &Context<MarginTrade>,
|
||||
cpi_ais: &Vec<AccountInfo>,
|
||||
pre_cpi_token_vault_amounts: Vec<u64>,
|
||||
group: Ref<MangoGroup>,
|
||||
group: Ref<Group>,
|
||||
banks: &mut Vec<AccountInfo>,
|
||||
account: &mut RefMut<MangoAccount>,
|
||||
) -> Result<()> {
|
||||
|
@ -142,7 +142,7 @@ fn adjust_for_post_cpi_token_amounts(
|
|||
.tokens
|
||||
.index_for_mint(&maybe_mango_vault_token_account.mint)?;
|
||||
let mut position = *account.indexed_positions.get_mut_or_create(token_index)?.0;
|
||||
let bank_loader = AccountLoader::<'_, TokenBank>::try_from(bank_ai)?;
|
||||
let bank_loader = AccountLoader::<'_, Bank>::try_from(bank_ai)?;
|
||||
let mut bank = bank_loader.load_mut()?;
|
||||
bank.withdraw(&mut position, still_loaned_amount);
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@ pub struct RegisterToken<'info> {
|
|||
mut,
|
||||
has_one = admin,
|
||||
)]
|
||||
pub group: AccountLoader<'info, MangoGroup>,
|
||||
pub group: AccountLoader<'info, Group>,
|
||||
pub admin: Signer<'info>,
|
||||
|
||||
pub mint: Account<'info, Mint>,
|
||||
|
@ -27,9 +27,9 @@ pub struct RegisterToken<'info> {
|
|||
seeds = [group.key().as_ref(), b"tokenbank".as_ref(), mint.key().as_ref()],
|
||||
bump,
|
||||
payer = payer,
|
||||
space = 8 + std::mem::size_of::<TokenBank>(),
|
||||
space = 8 + std::mem::size_of::<Bank>(),
|
||||
)]
|
||||
pub bank: AccountLoader<'info, TokenBank>,
|
||||
pub bank: AccountLoader<'info, Bank>,
|
||||
|
||||
#[account(
|
||||
init,
|
||||
|
@ -99,7 +99,7 @@ pub fn register_token(
|
|||
};
|
||||
|
||||
let mut bank = ctx.accounts.bank.load_init()?;
|
||||
*bank = TokenBank {
|
||||
*bank = Bank {
|
||||
group: ctx.accounts.group.key(),
|
||||
mint: ctx.accounts.mint.key(),
|
||||
vault: ctx.accounts.vault.key(),
|
||||
|
|
|
@ -8,7 +8,7 @@ use crate::state::*;
|
|||
|
||||
#[derive(Accounts)]
|
||||
pub struct Withdraw<'info> {
|
||||
pub group: AccountLoader<'info, MangoGroup>,
|
||||
pub group: AccountLoader<'info, Group>,
|
||||
|
||||
#[account(
|
||||
mut,
|
||||
|
@ -24,7 +24,7 @@ pub struct Withdraw<'info> {
|
|||
has_one = vault,
|
||||
constraint = bank.load()?.mint == token_account.mint,
|
||||
)]
|
||||
pub bank: AccountLoader<'info, TokenBank>,
|
||||
pub bank: AccountLoader<'info, Bank>,
|
||||
|
||||
#[account(mut)]
|
||||
pub vault: Account<'info, TokenAccount>,
|
||||
|
|
|
@ -4,7 +4,7 @@ use fixed::types::I80F48;
|
|||
use super::{IndexedPosition, TokenIndex};
|
||||
|
||||
#[account(zero_copy)]
|
||||
pub struct TokenBank {
|
||||
pub struct Bank {
|
||||
pub group: Pubkey,
|
||||
pub mint: Pubkey,
|
||||
pub vault: Pubkey,
|
||||
|
@ -38,7 +38,7 @@ pub struct TokenBank {
|
|||
pub token_index: TokenIndex,
|
||||
}
|
||||
|
||||
impl TokenBank {
|
||||
impl Bank {
|
||||
pub fn native_total_deposits(&self) -> I80F48 {
|
||||
self.deposit_index * self.indexed_total_deposits
|
||||
}
|
|
@ -45,9 +45,9 @@ impl Tokens {
|
|||
}
|
||||
}
|
||||
|
||||
// TODO: Should we call this `Group` instead of `MangoGroup`? And `Account` instead of `MangoAccount`?
|
||||
// TODO: Should we call this `Group` instead of `Group`? And `Account` instead of `MangoAccount`?
|
||||
#[account(zero_copy)]
|
||||
pub struct MangoGroup {
|
||||
pub struct Group {
|
||||
// Relying on Anchor's discriminator be sufficient for our versioning needs?
|
||||
// pub meta_data: MetaData,
|
||||
pub admin: Pubkey,
|
|
@ -5,7 +5,7 @@ use fixed::types::I80F48;
|
|||
use pyth_client::load_price;
|
||||
|
||||
use crate::error::MangoError;
|
||||
use crate::state::{determine_oracle_type, MangoAccount, OracleType, StubOracle, TokenBank};
|
||||
use crate::state::{determine_oracle_type, MangoAccount, OracleType, StubOracle, Bank};
|
||||
use crate::util;
|
||||
|
||||
pub fn compute_health(
|
||||
|
@ -20,7 +20,7 @@ pub fn compute_health(
|
|||
banks.iter(),
|
||||
oracles.iter()
|
||||
) {
|
||||
let bank_loader = AccountLoader::<'_, TokenBank>::try_from(bank_ai)?;
|
||||
let bank_loader = AccountLoader::<'_, Bank>::try_from(bank_ai)?;
|
||||
let bank = bank_loader.load()?;
|
||||
|
||||
// TODO: This assumes banks are passed in order - is that an ok assumption?
|
||||
|
|
|
@ -16,7 +16,7 @@ pub struct IndexedPosition {
|
|||
/// The deposit_index (if positive) or borrow_index (if negative) scaled position
|
||||
pub indexed_value: I80F48,
|
||||
|
||||
/// index into MangoGroup.tokens
|
||||
/// index into Group.tokens
|
||||
pub token_index: TokenIndex,
|
||||
}
|
||||
// TODO: static assert the size and alignment
|
||||
|
@ -30,7 +30,7 @@ impl IndexedPosition {
|
|||
self.token_index as usize == token_index
|
||||
}
|
||||
|
||||
pub fn native(&self, bank: &TokenBank) -> I80F48 {
|
||||
pub fn native(&self, bank: &Bank) -> I80F48 {
|
||||
if self.indexed_value.is_positive() {
|
||||
self.indexed_value * bank.deposit_index
|
||||
} else {
|
||||
|
@ -107,7 +107,7 @@ pub struct MangoAccount {
|
|||
|
||||
// pub in_margin_basket: [bool; MAX_PAIRS],
|
||||
// pub num_in_margin_basket: u8,
|
||||
// TODO: this should be a separate struct for convenient use, like MangoGroup::tokens
|
||||
// TODO: this should be a separate struct for convenient use, like Group::tokens
|
||||
pub indexed_positions: IndexedPositions,
|
||||
|
||||
// pub spot_open_orders: [Pubkey; MAX_PAIRS],
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
pub use health::*;
|
||||
pub use mango_account::*;
|
||||
pub use mango_group::*;
|
||||
pub use group::*;
|
||||
pub use mint_info::*;
|
||||
pub use oracle::*;
|
||||
pub use token_bank::*;
|
||||
pub use bank::*;
|
||||
|
||||
// mod advanced_orders;
|
||||
// mod cache;
|
||||
mod health;
|
||||
mod mango_account;
|
||||
mod mango_group;
|
||||
mod group;
|
||||
mod mint_info;
|
||||
mod oracle;
|
||||
mod token_bank;
|
||||
mod bank;
|
||||
// mod order_book_state_header;
|
||||
// mod perp_account;
|
||||
// mod perp_market;
|
||||
|
|
|
@ -85,7 +85,7 @@ async fn derive_health_check_remaining_account_metas(
|
|||
affected_bank: Option<Pubkey>,
|
||||
writable_banks: bool,
|
||||
) -> Vec<AccountMeta> {
|
||||
let group: MangoGroup = account_loader.load(&account.group).await.unwrap();
|
||||
let group: Group = account_loader.load(&account.group).await.unwrap();
|
||||
|
||||
// figure out all the banks/oracles that need to be passed for the health check
|
||||
let mut banks = vec![];
|
||||
|
@ -112,7 +112,7 @@ async fn derive_health_check_remaining_account_metas(
|
|||
.position(|p| !p.is_active())
|
||||
.unwrap();
|
||||
banks.insert(new_position, affected_bank);
|
||||
let affected_bank: TokenBank = account_loader.load(&affected_bank).await.unwrap();
|
||||
let affected_bank: Bank = account_loader.load(&affected_bank).await.unwrap();
|
||||
oracles.insert(new_position, affected_bank.oracle);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -129,7 +129,7 @@ async fn test_basic() -> Result<(), TransportError> {
|
|||
start_balance - deposit_amount
|
||||
);
|
||||
let account_data: MangoAccount = solana.get_account(account).await;
|
||||
let bank_data: TokenBank = solana.get_account(bank).await;
|
||||
let bank_data: Bank = solana.get_account(bank).await;
|
||||
assert!(
|
||||
account_data.indexed_positions.values[0].native(&bank_data)
|
||||
- I80F48::from_num(deposit_amount)
|
||||
|
@ -198,7 +198,7 @@ async fn test_basic() -> Result<(), TransportError> {
|
|||
start_balance + withdraw_amount
|
||||
);
|
||||
let account_data: MangoAccount = solana.get_account(account).await;
|
||||
let bank_data: TokenBank = solana.get_account(bank).await;
|
||||
let bank_data: Bank = solana.get_account(bank).await;
|
||||
assert!(
|
||||
account_data.indexed_positions.values[0].native(&bank_data)
|
||||
- I80F48::from_num(withdraw_amount)
|
||||
|
|
Loading…
Reference in New Issue