Rename to Bank and Group

This commit is contained in:
Christian Kamm 2022-03-07 16:16:34 +01:00
parent 2d65078c23
commit f6d2df1ad4
13 changed files with 32 additions and 32 deletions

View File

@ -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,

View File

@ -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>,

View File

@ -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>,

View File

@ -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);
}

View File

@ -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(),

View File

@ -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>,

View File

@ -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
}

View File

@ -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,

View File

@ -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?

View File

@ -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],

View File

@ -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;

View File

@ -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);
}
}

View File

@ -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)