Skip to content

Commit 27600a1

Browse files
committed
respond to more comments
1 parent ffe43ff commit 27600a1

File tree

15 files changed

+321
-380
lines changed

15 files changed

+321
-380
lines changed

programs/drift/src/controller/amm.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ use crate::math::amm::calculate_quote_asset_amount_swapped;
1515
use crate::math::amm_spread::{calculate_spread_reserves, get_spread_reserves};
1616
use crate::math::casting::Cast;
1717
use crate::math::constants::{
18-
CONCENTRATION_PRECISION, FEE_ADJUSTMENT_MAX, FEE_POOL_TO_REVENUE_POOL_THRESHOLD,
19-
K_BPS_UPDATE_SCALE, MAX_CONCENTRATION_COEFFICIENT, MAX_K_BPS_INCREASE, MAX_SQRT_K,
18+
CONCENTRATION_PRECISION, FEE_POOL_TO_REVENUE_POOL_THRESHOLD, K_BPS_UPDATE_SCALE,
19+
MAX_CONCENTRATION_COEFFICIENT, MAX_K_BPS_INCREASE, MAX_SQRT_K,
2020
};
2121
use crate::math::cp_curve::get_update_k_result;
2222
use crate::math::repeg::get_total_fee_lower_bound;

programs/drift/src/instructions/admin.rs

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1135,8 +1135,8 @@ pub fn handle_initialize_amm_cache(ctx: Context<InitializeAmmCache>) -> Result<(
11351135
Ok(())
11361136
}
11371137

1138-
pub fn handle_update_init_amm_cache_info<'c: 'info, 'info>(
1139-
ctx: Context<'_, '_, 'c, 'info, UpdateInitAmmCacheInfo<'info>>,
1138+
pub fn handle_update_initial_amm_cache_info<'c: 'info, 'info>(
1139+
ctx: Context<'_, '_, 'c, 'info, UpdateInitialAmmCacheInfo<'info>>,
11401140
) -> Result<()> {
11411141
let amm_cache = &mut ctx.accounts.amm_cache;
11421142

@@ -1191,7 +1191,7 @@ pub struct OverrideAmmCacheParams {
11911191
}
11921192

11931193
pub fn handle_override_amm_cache_info<'c: 'info, 'info>(
1194-
ctx: Context<'_, '_, 'c, 'info, UpdateInitAmmCacheInfo<'info>>,
1194+
ctx: Context<'_, '_, 'c, 'info, UpdateInitialAmmCacheInfo<'info>>,
11951195
market_index: u16,
11961196
override_params: OverrideAmmCacheParams,
11971197
) -> Result<()> {
@@ -4786,23 +4786,21 @@ pub fn handle_initialize_lp_pool(
47864786
max_aum,
47874787
last_aum: 0,
47884788
last_aum_slot: 0,
4789-
last_aum_ts: 0,
47904789
max_settle_quote_amount: max_settle_quote_amount_per_market,
47914790
last_hedge_ts: 0,
4792-
total_fees_received: 0,
4793-
total_fees_paid: 0,
47944791
total_mint_redeem_fees_paid: 0,
47954792
bump: ctx.bumps.lp_pool,
47964793
min_mint_fee,
47974794
max_mint_fee_premium: max_mint_fee,
47984795
revenue_rebalance_period,
47994796
next_mint_redeem_id: 1,
4800-
usdc_consituent_index: 0,
4801-
cumulative_usdc_sent_to_perp_markets: 0,
4802-
cumulative_usdc_received_from_perp_markets: 0,
4797+
quote_consituent_index: 0,
4798+
cumulative_quote_sent_to_perp_markets: 0,
4799+
cumulative_quote_received_from_perp_markets: 0,
48034800
gamma_execution: 2,
48044801
volatility: 4,
48054802
xi: 2,
4803+
padding: 0,
48064804
};
48074805

48084806
let amm_constituent_mapping = &mut ctx.accounts.amm_constituent_mapping;
@@ -5319,7 +5317,7 @@ pub fn handle_initialize_constituent<'info>(
53195317
constituent.oracle_staleness_threshold = oracle_staleness_threshold;
53205318
constituent.pubkey = ctx.accounts.constituent.key();
53215319
constituent.mint = ctx.accounts.spot_market_mint.key();
5322-
constituent.token_vault = ctx.accounts.constituent_vault.key();
5320+
constituent.vault = ctx.accounts.constituent_vault.key();
53235321
constituent.bump = ctx.bumps.constituent;
53245322
constituent.max_borrow_token_amount = max_borrow_token_amount;
53255323
constituent.lp_pool = lp_pool.pubkey;
@@ -5336,7 +5334,7 @@ pub fn handle_initialize_constituent<'info>(
53365334
lp_pool.constituents += 1;
53375335

53385336
if constituent.mint.eq(&usdc_mint::ID) {
5339-
lp_pool.usdc_consituent_index = constituent.constituent_index;
5337+
lp_pool.quote_consituent_index = constituent.constituent_index;
53405338
}
53415339

53425340
let constituent_correlations = &mut ctx.accounts.constituent_correlations;
@@ -6260,7 +6258,7 @@ pub struct InitializeAmmCache<'info> {
62606258
}
62616259

62626260
#[derive(Accounts)]
6263-
pub struct UpdateInitAmmCacheInfo<'info> {
6261+
pub struct UpdateInitialAmmCacheInfo<'info> {
62646262
#[account(
62656263
mut,
62666264
constraint = admin.key() == admin_hot_wallet::id() || admin.key() == state.admin
@@ -7189,12 +7187,12 @@ pub struct LPTakerSwap<'info> {
71897187
/// Constituent token accounts
71907188
#[account(
71917189
mut,
7192-
address = out_constituent.load()?.token_vault,
7190+
address = out_constituent.load()?.vault,
71937191
)]
71947192
pub constituent_out_token_account: Box<InterfaceAccount<'info, TokenAccount>>,
71957193
#[account(
71967194
mut,
7197-
address = in_constituent.load()?.token_vault,
7195+
address = in_constituent.load()?.vault,
71987196
)]
71997197
pub constituent_in_token_account: Box<InterfaceAccount<'info, TokenAccount>>,
72007198

programs/drift/src/instructions/keeper.rs

Lines changed: 6 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -3130,30 +3130,13 @@ pub fn handle_settle_perp_to_lp_pool<'c: 'info, 'info>(
31303130
return Err(ErrorCode::SettleLpPoolDisabled.into());
31313131
}
31323132

3133-
// Validation and setup code (unchanged)
3134-
let amm_cache_key = &ctx.accounts.amm_cache.key();
31353133
let mut amm_cache: AccountZeroCopyMut<'_, CacheInfo, _> =
31363134
ctx.accounts.amm_cache.load_zc_mut()?;
31373135
let quote_market = &mut ctx.accounts.quote_market.load_mut()?;
31383136
let mut quote_constituent = ctx.accounts.constituent.load_mut()?;
31393137
let constituent_token_account = &mut ctx.accounts.constituent_quote_token_account;
31403138
let mut lp_pool = ctx.accounts.lp_pool.load_mut()?;
31413139

3142-
// PDA validation (unchanged)
3143-
let expected_pda = &Pubkey::create_program_address(
3144-
&[
3145-
AMM_POSITIONS_CACHE.as_ref(),
3146-
amm_cache.fixed.bump.to_le_bytes().as_ref(),
3147-
],
3148-
&crate::ID,
3149-
)
3150-
.map_err(|_| ErrorCode::InvalidPDA)?;
3151-
validate!(
3152-
expected_pda.eq(amm_cache_key),
3153-
ErrorCode::InvalidPDA,
3154-
"Amm cache PDA does not match expected PDA"
3155-
)?;
3156-
31573140
let remaining_accounts_iter = &mut ctx.remaining_accounts.iter().peekable();
31583141
let AccountMaps {
31593142
perp_market_map,
@@ -3211,7 +3194,7 @@ pub fn handle_settle_perp_to_lp_pool<'c: 'info, 'info>(
32113194
// Create settlement context
32123195
let settlement_ctx = SettlementContext {
32133196
quote_owed_from_lp: cached_info.quote_owed_from_lp_pool,
3214-
quote_constituent_token_balance: quote_constituent.token_balance,
3197+
quote_constituent_token_balance: quote_constituent.vault_token_balance,
32153198
fee_pool_balance: get_token_amount(
32163199
perp_market.amm.fee_pool.scaled_balance,
32173200
quote_market,
@@ -3287,13 +3270,13 @@ pub fn handle_settle_perp_to_lp_pool<'c: 'info, 'info>(
32873270
// Update LP pool stats
32883271
match settlement_result.direction {
32893272
SettlementDirection::FromLpPool => {
3290-
lp_pool.cumulative_usdc_sent_to_perp_markets = lp_pool
3291-
.cumulative_usdc_sent_to_perp_markets
3273+
lp_pool.cumulative_quote_sent_to_perp_markets = lp_pool
3274+
.cumulative_quote_sent_to_perp_markets
32923275
.saturating_add(settlement_result.amount_transferred as u128);
32933276
}
32943277
SettlementDirection::ToLpPool => {
3295-
lp_pool.cumulative_usdc_received_from_perp_markets = lp_pool
3296-
.cumulative_usdc_received_from_perp_markets
3278+
lp_pool.cumulative_quote_received_from_perp_markets = lp_pool
3279+
.cumulative_quote_received_from_perp_markets
32973280
.saturating_add(settlement_result.amount_transferred as u128);
32983281
}
32993282
SettlementDirection::None => {}
@@ -3318,26 +3301,11 @@ pub fn handle_update_amm_cache<'c: 'info, 'info>(
33183301
ctx: Context<'_, '_, 'c, 'info, UpdateAmmCache<'info>>,
33193302
) -> Result<()> {
33203303
let remaining_accounts_iter = &mut ctx.remaining_accounts.iter().peekable();
3321-
let amm_cache_key = &ctx.accounts.amm_cache.key();
33223304
let mut amm_cache: AccountZeroCopyMut<'_, CacheInfo, _> =
33233305
ctx.accounts.amm_cache.load_zc_mut()?;
33243306

33253307
let quote_market = ctx.accounts.quote_market.load()?;
33263308

3327-
let expected_pda = &Pubkey::create_program_address(
3328-
&[
3329-
AMM_POSITIONS_CACHE.as_ref(),
3330-
amm_cache.fixed.bump.to_le_bytes().as_ref(),
3331-
],
3332-
&crate::ID,
3333-
)
3334-
.map_err(|_| ErrorCode::InvalidPDA)?;
3335-
validate!(
3336-
expected_pda.eq(amm_cache_key),
3337-
ErrorCode::InvalidPDA,
3338-
"Amm cache PDA does not match expected PDA"
3339-
)?;
3340-
33413309
let AccountMaps {
33423310
perp_market_map,
33433311
spot_market_map: _,
@@ -3414,7 +3382,7 @@ pub struct SettleAmmPnlToLp<'info> {
34143382
pub constituent: AccountLoader<'info, Constituent>,
34153383
#[account(
34163384
mut,
3417-
address = constituent.load()?.token_vault,
3385+
address = constituent.load()?.vault,
34183386
)]
34193387
pub constituent_quote_token_account: Box<InterfaceAccount<'info, TokenAccount>>,
34203388
#[account(

programs/drift/src/instructions/lp_pool.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -265,13 +265,13 @@ pub fn handle_update_lp_pool_aum<'c: 'info, 'info>(
265265
.safe_sub(crypto_delta.abs())?
266266
.max(0_i128);
267267
constituent_target_base
268-
.get_mut(lp_pool.usdc_consituent_index as u32)
268+
.get_mut(lp_pool.quote_consituent_index as u32)
269269
.target_base = total_stable_target_base.cast::<i64>()?;
270270

271271
msg!(
272272
"stable target base: {}",
273273
constituent_target_base
274-
.get(lp_pool.usdc_consituent_index as u32)
274+
.get(lp_pool.quote_consituent_index as u32)
275275
.target_base
276276
);
277277
msg!("aum: {}, crypto_delta: {}", aum, crypto_delta);
@@ -451,11 +451,11 @@ pub fn handle_lp_pool_swap<'c: 'info, 'info>(
451451
)?;
452452

453453
validate!(
454-
out_amount_net_fees.cast::<u64>()? <= out_constituent.token_balance,
454+
out_amount_net_fees.cast::<u64>()? <= out_constituent.vault_token_balance,
455455
ErrorCode::InsufficientConstituentTokenBalance,
456456
format!(
457457
"Insufficient out constituent balance: out_amount_net_fees({}) > out_constituent.token_balance({})",
458-
out_amount_net_fees, out_constituent.token_balance
458+
out_amount_net_fees, out_constituent.vault_token_balance
459459
)
460460
.as_str()
461461
)?;
@@ -1516,7 +1516,7 @@ pub struct DepositWithdrawProgramVault<'info> {
15161516
pub constituent: AccountLoader<'info, Constituent>,
15171517
#[account(
15181518
mut,
1519-
address = constituent.load()?.token_vault,
1519+
address = constituent.load()?.vault,
15201520
constraint = &constituent.load()?.mint.eq(&constituent_token_account.mint),
15211521
token::authority = drift_signer
15221522
)]
@@ -1609,12 +1609,12 @@ pub struct LPPoolSwap<'info> {
16091609

16101610
#[account(
16111611
mut,
1612-
address = in_constituent.load()?.token_vault,
1612+
address = in_constituent.load()?.vault,
16131613
)]
16141614
pub constituent_in_token_account: Box<InterfaceAccount<'info, TokenAccount>>,
16151615
#[account(
16161616
mut,
1617-
address = out_constituent.load()?.token_vault,
1617+
address = out_constituent.load()?.vault,
16181618
)]
16191619
pub constituent_out_token_account: Box<InterfaceAccount<'info, TokenAccount>>,
16201620

@@ -1678,12 +1678,12 @@ pub struct ViewLPPoolSwapFees<'info> {
16781678

16791679
#[account(
16801680
mut,
1681-
address = in_constituent.load()?.token_vault,
1681+
address = in_constituent.load()?.vault,
16821682
)]
16831683
pub constituent_in_token_account: Box<InterfaceAccount<'info, TokenAccount>>,
16841684
#[account(
16851685
mut,
1686-
address = out_constituent.load()?.token_vault,
1686+
address = out_constituent.load()?.vault,
16871687
)]
16881688
pub constituent_out_token_account: Box<InterfaceAccount<'info, TokenAccount>>,
16891689

programs/drift/src/lib.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -998,10 +998,10 @@ pub mod drift {
998998
handle_initialize_amm_cache(ctx)
999999
}
10001000

1001-
pub fn update_init_amm_cache_info<'c: 'info, 'info>(
1002-
ctx: Context<'_, '_, 'c, 'info, UpdateInitAmmCacheInfo<'info>>,
1001+
pub fn update_initial_amm_cache_info<'c: 'info, 'info>(
1002+
ctx: Context<'_, '_, 'c, 'info, UpdateInitialAmmCacheInfo<'info>>,
10031003
) -> Result<()> {
1004-
handle_update_init_amm_cache_info(ctx)
1004+
handle_update_initial_amm_cache_info(ctx)
10051005
}
10061006

10071007
pub fn initialize_prediction_market<'c: 'info, 'info>(
@@ -1965,7 +1965,7 @@ pub mod drift {
19651965
}
19661966

19671967
pub fn override_amm_cache_info<'c: 'info, 'info>(
1968-
ctx: Context<'_, '_, 'c, 'info, UpdateInitAmmCacheInfo<'info>>,
1968+
ctx: Context<'_, '_, 'c, 'info, UpdateInitialAmmCacheInfo<'info>>,
19691969
market_index: u16,
19701970
override_params: OverrideAmmCacheParams,
19711971
) -> Result<()> {

programs/drift/src/math/oracle.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,9 @@ pub fn oracle_validity(
279279
oracle_delay.gt(&valid_oracle_guard_rails.slots_before_stale_for_margin)
280280
};
281281

282-
let oracle_validity = if is_oracle_price_too_volatile {
282+
let oracle_validity = if is_oracle_price_nonpositive {
283+
OracleValidity::NonPositive
284+
} else if is_oracle_price_too_volatile {
283285
OracleValidity::TooVolatile
284286
} else if is_conf_too_large {
285287
OracleValidity::TooUncertain

0 commit comments

Comments
 (0)