diff --git a/programs/mango-v4/src/instructions/flash_loan.rs b/programs/mango-v4/src/instructions/flash_loan.rs index b32bfc7d6..70ba19599 100644 --- a/programs/mango-v4/src/instructions/flash_loan.rs +++ b/programs/mango-v4/src/instructions/flash_loan.rs @@ -77,19 +77,20 @@ pub fn flash_loan_begin<'key, 'accounts, 'remaining, 'info>( require_keys_eq!(bank.group, ctx.accounts.group.key()); require_keys_eq!(bank.vault, *vault_ai.key); + let vault = Account::::try_from(vault_ai)?; let token_account = Account::::try_from(token_account_ai)?; bank.flash_loan_approved_amount = *amount; - bank.flash_loan_vault_initial = token_account.amount; + bank.flash_loan_token_account_initial = token_account.amount; // Transfer the loaned funds if *amount > 0 { // Provide a readable error message in case the vault doesn't have enough tokens - if token_account.amount < *amount { + if vault.amount < *amount { return err!(MangoError::InsufficentBankVaultFunds).with_context(|| { format!( "bank vault {} does not have enough tokens, need {} but have {}", - vault_ai.key, amount, token_account.amount + vault_ai.key, amount, vault.amount ) }); } @@ -235,7 +236,7 @@ pub fn flash_loan_end<'key, 'accounts, 'remaining, 'info>( // The Begin instruction only checks that End ends with the same vault accounts - // but there could be an extra vault account in End, or a different bank could be // used for the same vault. - require_neq!(bank.flash_loan_vault_initial, u64::MAX); + require_neq!(bank.flash_loan_token_account_initial, u64::MAX); // Create the token position now, so we can compute the pre-health with fixed order health accounts let (_, raw_token_index, _) = account.token_get_mut_or_create(bank.token_index)?; @@ -243,7 +244,7 @@ pub fn flash_loan_end<'key, 'accounts, 'remaining, 'info>( // Transfer any excess over the inital balance of the token account back // into the vault. Compute the total change in the vault balance. let mut change = -I80F48::from(bank.flash_loan_approved_amount); - if token_account.amount > bank.flash_loan_vault_initial { + if token_account.amount > bank.flash_loan_token_account_initial { let transfer_ctx = CpiContext::new( ctx.accounts.token_program.to_account_info(), token::Transfer { @@ -252,7 +253,7 @@ pub fn flash_loan_end<'key, 'accounts, 'remaining, 'info>( authority: ctx.accounts.owner.to_account_info(), }, ); - let repay = token_account.amount - bank.flash_loan_vault_initial; + let repay = token_account.amount - bank.flash_loan_token_account_initial; token::transfer(transfer_ctx, repay)?; let repay = I80F48::from(repay); @@ -324,7 +325,7 @@ pub fn flash_loan_end<'key, 'accounts, 'remaining, 'info>( } bank.flash_loan_approved_amount = 0; - bank.flash_loan_vault_initial = u64::MAX; + bank.flash_loan_token_account_initial = u64::MAX; token_loan_details.push(FlashLoanTokenDetail { token_index: position.token_index, diff --git a/programs/mango-v4/src/instructions/token_edit.rs b/programs/mango-v4/src/instructions/token_edit.rs index 183c54121..008a8c1c1 100644 --- a/programs/mango-v4/src/instructions/token_edit.rs +++ b/programs/mango-v4/src/instructions/token_edit.rs @@ -109,7 +109,7 @@ pub fn token_edit( // unchanged - // dust - // flash_loan_vault_initial + // flash_loan_token_account_initial // flash_loan_approved_amount // token_index // bump diff --git a/programs/mango-v4/src/instructions/token_register.rs b/programs/mango-v4/src/instructions/token_register.rs index 26d6931fb..5d5cca728 100644 --- a/programs/mango-v4/src/instructions/token_register.rs +++ b/programs/mango-v4/src/instructions/token_register.rs @@ -131,7 +131,7 @@ pub fn token_register( init_liab_weight: I80F48::from_num(init_liab_weight), liquidation_fee: I80F48::from_num(liquidation_fee), dust: I80F48::ZERO, - flash_loan_vault_initial: u64::MAX, + flash_loan_token_account_initial: u64::MAX, flash_loan_approved_amount: 0, token_index, bump: *ctx.bumps.get("bank").ok_or(MangoError::SomeError)?, diff --git a/programs/mango-v4/src/instructions/token_register_trustless.rs b/programs/mango-v4/src/instructions/token_register_trustless.rs index c5538c1e4..109ff28f4 100644 --- a/programs/mango-v4/src/instructions/token_register_trustless.rs +++ b/programs/mango-v4/src/instructions/token_register_trustless.rs @@ -103,7 +103,7 @@ pub fn token_register_trustless( init_liab_weight: I80F48::from_num(1.5), liquidation_fee: I80F48::from_num(0.125), dust: I80F48::ZERO, - flash_loan_vault_initial: u64::MAX, + flash_loan_token_account_initial: u64::MAX, flash_loan_approved_amount: 0, token_index, bump: *ctx.bumps.get("bank").ok_or(MangoError::SomeError)?, diff --git a/programs/mango-v4/src/state/bank.rs b/programs/mango-v4/src/state/bank.rs index 6277cd9b2..e72f32676 100644 --- a/programs/mango-v4/src/state/bank.rs +++ b/programs/mango-v4/src/state/bank.rs @@ -82,7 +82,7 @@ pub struct Bank { // Collection of all fractions-of-native-tokens that got rounded away pub dust: I80F48, - pub flash_loan_vault_initial: u64, + pub flash_loan_token_account_initial: u64, pub flash_loan_approved_amount: u64, // Index into TokenInfo on the group @@ -145,7 +145,10 @@ impl std::fmt::Debug for Bank { "flash_loan_approved_amount", &self.flash_loan_approved_amount, ) - .field("flash_loan_vault_initial", &self.flash_loan_vault_initial) + .field( + "flash_loan_token_account_initial", + &self.flash_loan_token_account_initial, + ) .field("reserved", &self.reserved) .finish() } @@ -185,7 +188,7 @@ impl Bank { liquidation_fee: existing_bank.liquidation_fee, dust: I80F48::ZERO, flash_loan_approved_amount: 0, - flash_loan_vault_initial: u64::MAX, + flash_loan_token_account_initial: u64::MAX, token_index: existing_bank.token_index, bump: existing_bank.bump, mint_decimals: existing_bank.mint_decimals, diff --git a/ts/client/src/accounts/bank.ts b/ts/client/src/accounts/bank.ts index 5bf22cfcf..b343f5275 100644 --- a/ts/client/src/accounts/bank.ts +++ b/ts/client/src/accounts/bank.ts @@ -63,7 +63,7 @@ export class Bank { initLiabWeight: I80F48Dto; liquidationFee: I80F48Dto; dust: I80F48Dto; - flashLoanVaultInitial: BN; + flashLoanTokenAccountInitial: BN; flashLoanApprovedAmount: BN; tokenIndex: number; mintDecimals: number; @@ -102,7 +102,7 @@ export class Bank { obj.initLiabWeight, obj.liquidationFee, obj.dust, - obj.flashLoanVaultInitial, + obj.flashLoanTokenAccountInitial, obj.flashLoanApprovedAmount, obj.tokenIndex, obj.mintDecimals, @@ -142,7 +142,7 @@ export class Bank { initLiabWeight: I80F48Dto, liquidationFee: I80F48Dto, dust: I80F48Dto, - flashLoanVaultInitial: BN, + flashLoanTokenAccountInitial: BN, flashLoanApprovedAmount: BN, public tokenIndex: number, public mintDecimals: number, diff --git a/ts/client/src/mango_v4.ts b/ts/client/src/mango_v4.ts index cd00c780e..4ac969640 100644 --- a/ts/client/src/mango_v4.ts +++ b/ts/client/src/mango_v4.ts @@ -2830,7 +2830,7 @@ export type MangoV4 = { } }, { - "name": "flashLoanVaultInitial", + "name": "flashLoanTokenAccountInitial", "type": "u64" }, { @@ -7843,7 +7843,7 @@ export const IDL: MangoV4 = { } }, { - "name": "flashLoanVaultInitial", + "name": "flashLoanTokenAccountInitial", "type": "u64" }, {