Skip to content

Commit 1b19a32

Browse files
committed
merge in dlp
2 parents 39c4d65 + 70c4a4d commit 1b19a32

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+225
-275
lines changed

programs/drift/src/controller/insurance.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ use crate::error::ErrorCode;
1414
use crate::math::amm::calculate_net_user_pnl;
1515
use crate::math::casting::Cast;
1616
use crate::math::constants::{
17-
MAX_APR_PER_REVENUE_SETTLE_TO_INSURANCE_FUND_VAULT,
17+
FUEL_START_TS, GOV_SPOT_MARKET_INDEX, MAX_APR_PER_REVENUE_SETTLE_TO_INSURANCE_FUND_VAULT,
1818
MAX_APR_PER_REVENUE_SETTLE_TO_INSURANCE_FUND_VAULT_GOV, ONE_YEAR, PERCENTAGE_PRECISION,
19-
SHARE_OF_REVENUE_ALLOCATED_TO_INSURANCE_FUND_VAULT_DENOMINATOR,
19+
QUOTE_SPOT_MARKET_INDEX, SHARE_OF_REVENUE_ALLOCATED_TO_INSURANCE_FUND_VAULT_DENOMINATOR,
2020
SHARE_OF_REVENUE_ALLOCATED_TO_INSURANCE_FUND_VAULT_NUMERATOR,
2121
};
2222
use crate::math::fuel::calculate_insurance_fuel_bonus;
@@ -40,7 +40,7 @@ use crate::state::perp_market::PerpMarket;
4040
use crate::state::spot_market::{SpotBalanceType, SpotMarket};
4141
use crate::state::state::State;
4242
use crate::state::user::UserStats;
43-
use crate::{emit, validate, FUEL_START_TS, GOV_SPOT_MARKET_INDEX, QUOTE_SPOT_MARKET_INDEX};
43+
use crate::{emit, validate};
4444

4545
#[cfg(test)]
4646
mod tests;

programs/drift/src/controller/liquidation.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,9 @@ use crate::error::{DriftResult, ErrorCode};
2424
use crate::math::bankruptcy::is_cross_margin_bankrupt;
2525
use crate::math::casting::Cast;
2626
use crate::math::constants::{
27-
LIQUIDATION_FEE_PRECISION_U128, LIQUIDATION_PCT_PRECISION, QUOTE_PRECISION,
28-
QUOTE_PRECISION_I128, QUOTE_PRECISION_U64, QUOTE_SPOT_MARKET_INDEX, SPOT_WEIGHT_PRECISION,
27+
LIQUIDATION_FEE_PRECISION, LIQUIDATION_FEE_PRECISION_U128, LIQUIDATION_PCT_PRECISION,
28+
QUOTE_PRECISION, QUOTE_PRECISION_I128, QUOTE_PRECISION_U64, QUOTE_SPOT_MARKET_INDEX,
29+
SPOT_WEIGHT_PRECISION,
2930
};
3031
use crate::math::liquidation::{
3132
calculate_asset_transfer_for_liability_transfer,
@@ -51,6 +52,7 @@ use crate::math::orders::{
5152
use crate::math::position::calculate_base_asset_value_with_oracle_price;
5253
use crate::math::safe_math::SafeMath;
5354

55+
use crate::math::constants::LST_POOL_ID;
5456
use crate::math::spot_balance::get_token_value;
5557
use crate::state::events::{
5658
LiquidateBorrowForPerpPnlRecord, LiquidatePerpPnlForDepositRecord, LiquidatePerpRecord,
@@ -69,8 +71,8 @@ use crate::state::spot_market_map::SpotMarketMap;
6971
use crate::state::state::State;
7072
use crate::state::user::{MarketType, Order, OrderStatus, OrderType, User, UserStats};
7173
use crate::state::user_map::{UserMap, UserStatsMap};
72-
use crate::{get_then_update_id, load_mut, LST_POOL_ID};
73-
use crate::{validate, LIQUIDATION_FEE_PRECISION};
74+
use crate::validate;
75+
use crate::{get_then_update_id, load_mut};
7476

7577
#[cfg(test)]
7678
mod tests;

programs/drift/src/controller/orders.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ use crate::state::revenue_share::{
1010
};
1111
use anchor_lang::prelude::*;
1212

13+
use crate::controller;
1314
use crate::controller::funding::settle_funding_payment;
1415
use crate::controller::position;
1516
use crate::controller::position::{
@@ -32,7 +33,9 @@ use crate::math::amm::calculate_amm_available_liquidity;
3233
use crate::math::amm_jit::calculate_amm_jit_liquidity;
3334
use crate::math::auction::{calculate_auction_params_for_trigger_order, calculate_auction_prices};
3435
use crate::math::casting::Cast;
35-
use crate::math::constants::{BASE_PRECISION_U64, PERP_DECIMALS, QUOTE_SPOT_MARKET_INDEX};
36+
use crate::math::constants::{
37+
BASE_PRECISION_U64, MARGIN_PRECISION, PERP_DECIMALS, QUOTE_SPOT_MARKET_INDEX,
38+
};
3639
use crate::math::fees::{determine_user_fee_tier, ExternalFillFees, FillFees};
3740
use crate::math::fulfillment::{
3841
determine_perp_fulfillment_methods, determine_spot_fulfillment_methods,
@@ -81,7 +84,6 @@ use crate::validation;
8184
use crate::validation::order::{
8285
validate_order, validate_order_for_force_reduce_only, validate_spot_order,
8386
};
84-
use crate::{controller, MARGIN_PRECISION};
8587

8688
#[cfg(test)]
8789
mod tests;

programs/drift/src/controller/position/tests.rs

Lines changed: 16 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -53,17 +53,7 @@ fn amm_pool_balance_liq_fees_example() {
5353
let perp_market_loader: AccountLoader<PerpMarket> =
5454
AccountLoader::try_from(&perp_market_account_info).unwrap();
5555

56-
let perp_market_map = PerpMarketMap::load_one(&perp_market_account_info, true).unwrap();
57-
5856
let now = 1725948560;
59-
let clock_slot = 326319440;
60-
let clock = Clock {
61-
unix_timestamp: now,
62-
slot: clock_slot,
63-
..Clock::default()
64-
};
65-
66-
let mut state = State::default();
6757

6858
let mut prelaunch_oracle_price = PrelaunchOracle {
6959
price: PRICE_PRECISION_I64,
@@ -77,9 +67,8 @@ fn amm_pool_balance_liq_fees_example() {
7767
prelaunch_oracle_price,
7868
&prelaunch_oracle_price_key,
7969
PrelaunchOracle,
80-
oracle_account_info
70+
_oracle_account_info
8171
);
82-
let mut oracle_map = OracleMap::load_one(&oracle_account_info, clock_slot, None).unwrap();
8372

8473
let mut spot_market = SpotMarket {
8574
cumulative_deposit_interest: 11425141382,
@@ -610,11 +599,11 @@ fn amm_ref_price_decay_tail_test() {
610599

611600
let signed_liquidity_ratio = liquidity_ratio
612601
.checked_mul(
613-
(perp_market
602+
perp_market
614603
.amm
615604
.get_protocol_owned_position()
616605
.unwrap()
617-
.signum() as i128),
606+
.signum() as i128,
618607
)
619608
.unwrap();
620609

@@ -655,7 +644,7 @@ fn amm_ref_price_decay_tail_test() {
655644
&state.oracle_guard_rails.validity,
656645
)
657646
.unwrap();
658-
let cost = _update_amm(
647+
_update_amm(
659648
&mut perp_market,
660649
&mm_oracle_price_data,
661650
&state,
@@ -688,7 +677,7 @@ fn amm_ref_price_decay_tail_test() {
688677
)
689678
.unwrap();
690679

691-
let cost = _update_amm(
680+
_update_amm(
692681
&mut perp_market,
693682
&mm_oracle_price_data,
694683
&state,
@@ -787,11 +776,11 @@ fn amm_ref_price_offset_decay_logic() {
787776

788777
let signed_liquidity_ratio = liquidity_ratio
789778
.checked_mul(
790-
(perp_market
779+
perp_market
791780
.amm
792781
.get_protocol_owned_position()
793782
.unwrap()
794-
.signum() as i128),
783+
.signum() as i128,
795784
)
796785
.unwrap();
797786

@@ -832,7 +821,7 @@ fn amm_ref_price_offset_decay_logic() {
832821
&state.oracle_guard_rails.validity,
833822
)
834823
.unwrap();
835-
let cost = _update_amm(
824+
_update_amm(
836825
&mut perp_market,
837826
&mm_oracle_price_data,
838827
&state,
@@ -872,7 +861,7 @@ fn amm_ref_price_offset_decay_logic() {
872861
)
873862
.unwrap();
874863

875-
let cost = _update_amm(
864+
_update_amm(
876865
&mut perp_market,
877866
&mm_oracle_price_data,
878867
&state,
@@ -962,11 +951,11 @@ fn amm_negative_ref_price_offset_decay_logic() {
962951

963952
let signed_liquidity_ratio = liquidity_ratio
964953
.checked_mul(
965-
(perp_market
954+
perp_market
966955
.amm
967956
.get_protocol_owned_position()
968957
.unwrap()
969-
.signum() as i128),
958+
.signum() as i128,
970959
)
971960
.unwrap();
972961

@@ -1007,7 +996,7 @@ fn amm_negative_ref_price_offset_decay_logic() {
1007996
&state.oracle_guard_rails.validity,
1008997
)
1009998
.unwrap();
1010-
let cost = _update_amm(
999+
_update_amm(
10111000
&mut perp_market,
10121001
&mm_oracle_price_data,
10131002
&state,
@@ -1048,7 +1037,7 @@ fn amm_negative_ref_price_offset_decay_logic() {
10481037
)
10491038
.unwrap();
10501039

1051-
let cost = _update_amm(
1040+
_update_amm(
10521041
&mut perp_market,
10531042
&mm_oracle_price_data,
10541043
&state,
@@ -1148,11 +1137,11 @@ fn amm_perp_ref_offset() {
11481137

11491138
let signed_liquidity_ratio = liquidity_ratio
11501139
.checked_mul(
1151-
(perp_market
1140+
perp_market
11521141
.amm
11531142
.get_protocol_owned_position()
11541143
.unwrap()
1155-
.signum() as i128),
1144+
.signum() as i128,
11561145
)
11571146
.unwrap();
11581147

@@ -1194,7 +1183,7 @@ fn amm_perp_ref_offset() {
11941183
&state.oracle_guard_rails.validity,
11951184
)
11961185
.unwrap();
1197-
let cost = _update_amm(
1186+
_update_amm(
11981187
&mut perp_market,
11991188
&mm_oracle_price_data,
12001189
&state,

programs/drift/src/controller/repeg/tests.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ pub fn update_amm_test_bad_oracle() {
260260
#[test]
261261
pub fn update_amm_larg_conf_test() {
262262
let now = 1662800000 + 60;
263-
let mut slot = 81680085;
263+
let slot = 81680085;
264264

265265
let mut market = PerpMarket::default_btc_test();
266266
assert_eq!(market.amm.base_asset_amount_with_amm, -1000000000);
@@ -409,7 +409,7 @@ pub fn update_amm_larg_conf_test() {
409409
#[test]
410410
pub fn update_amm_larg_conf_w_neg_tfmd_test() {
411411
let now = 1662800000 + 60;
412-
let mut slot = 81680085;
412+
let slot = 81680085;
413413

414414
let mut market = PerpMarket::default_btc_test();
415415
market.amm.concentration_coef = 1414213;

programs/drift/src/controller/spot_balance/tests.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1387,7 +1387,7 @@ fn check_fee_collection_larger_nums() {
13871387

13881388
#[test]
13891389
fn test_multi_stage_borrow_rate_curve() {
1390-
let mut spot_market = SpotMarket {
1390+
let spot_market = SpotMarket {
13911391
market_index: 0,
13921392
oracle_source: OracleSource::QuoteAsset,
13931393
cumulative_deposit_interest: SPOT_CUMULATIVE_INTEREST_PRECISION,
@@ -1457,7 +1457,7 @@ fn test_multi_stage_borrow_rate_curve_sol() {
14571457

14581458
let spot_market_loader: AccountLoader<SpotMarket> =
14591459
AccountLoader::try_from(&sol_market_account_info).unwrap();
1460-
let mut spot_market = spot_market_loader.load_mut().unwrap();
1460+
let spot_market = spot_market_loader.load_mut().unwrap();
14611461

14621462
// Store all rates to verify monotonicity and smoothness later
14631463
let mut last_rate = 0_u128;

programs/drift/src/error.rs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -658,8 +658,6 @@ pub enum ErrorCode {
658658
InvalidConstituent,
659659
#[msg("Invalid Amm Constituent Mapping argument")]
660660
InvalidAmmConstituentMappingArgument,
661-
#[msg("Invalid update constituent update target weights argument")]
662-
InvalidUpdateConstituentTargetBaseArgument,
663661
#[msg("Constituent not found")]
664662
ConstituentNotFound,
665663
#[msg("Constituent could not load")]
@@ -668,8 +666,6 @@ pub enum ErrorCode {
668666
ConstituentWrongMutability,
669667
#[msg("Wrong number of constituents passed to instruction")]
670668
WrongNumberOfConstituents,
671-
#[msg("Oracle too stale for LP AUM update")]
672-
OracleTooStaleForLPAUMUpdate,
673669
#[msg("Insufficient constituent token balance")]
674670
InsufficientConstituentTokenBalance,
675671
#[msg("Amm Cache data too stale")]
@@ -682,8 +678,6 @@ pub enum ErrorCode {
682678
LpInvariantFailed,
683679
#[msg("Invalid constituent derivative weights")]
684680
InvalidConstituentDerivativeWeights,
685-
#[msg("Unauthorized dlp authority")]
686-
UnauthorizedDlpAuthority,
687681
#[msg("Max DLP AUM Breached")]
688682
MaxDlpAumBreached,
689683
#[msg("Settle Lp Pool Disabled")]

programs/drift/src/ids.rs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
use anchor_lang::prelude::Pubkey;
2-
use solana_program::pubkey;
3-
41
pub mod pyth_program {
52
use solana_program::declare_id;
63
#[cfg(feature = "mainnet-beta")]

programs/drift/src/instructions/admin.rs

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,24 @@ use serum_dex::state::ToAlignedBytes;
99
use std::convert::{identity, TryInto};
1010
use std::mem::size_of;
1111

12+
use crate::controller;
1213
use crate::controller::token::{close_vault, initialize_immutable_owner, initialize_token_account};
1314
use crate::error::ErrorCode;
15+
use crate::get_then_update_id;
1416
use crate::ids::{admin_hot_wallet, amm_spread_adjust_wallet, mm_oracle_crank_wallet};
1517
use crate::instructions::constraints::*;
1618
use crate::instructions::optional_accounts::{load_maps, AccountMaps};
19+
use crate::load;
1720
use crate::math::casting::Cast;
1821
use crate::math::constants::{
1922
AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO, DEFAULT_LIQUIDATION_MARGIN_BUFFER_RATIO,
20-
FEE_POOL_TO_REVENUE_POOL_THRESHOLD, GOV_SPOT_MARKET_INDEX, IF_FACTOR_PRECISION,
21-
INSURANCE_A_MAX, INSURANCE_B_MAX, INSURANCE_C_MAX, INSURANCE_SPECULATIVE_MAX,
22-
LIQUIDATION_FEE_PRECISION, MAX_CONCENTRATION_COEFFICIENT, MAX_SQRT_K,
23-
MAX_UPDATE_K_PRICE_CHANGE, PERCENTAGE_PRECISION, PERCENTAGE_PRECISION_I64,
24-
QUOTE_SPOT_MARKET_INDEX, SPOT_CUMULATIVE_INTEREST_PRECISION, SPOT_IMF_PRECISION,
25-
SPOT_WEIGHT_PRECISION, THIRTEEN_DAY, TWENTY_FOUR_HOUR,
23+
EPOCH_DURATION, FEE_ADJUSTMENT_MAX, FEE_POOL_TO_REVENUE_POOL_THRESHOLD, GOV_SPOT_MARKET_INDEX,
24+
IF_FACTOR_PRECISION, INSURANCE_A_MAX, INSURANCE_B_MAX, INSURANCE_C_MAX,
25+
INSURANCE_SPECULATIVE_MAX, LIQUIDATION_FEE_PRECISION, MAX_CONCENTRATION_COEFFICIENT,
26+
MAX_SQRT_K, MAX_UPDATE_K_PRICE_CHANGE, PERCENTAGE_PRECISION, PERCENTAGE_PRECISION_I64,
27+
QUOTE_PRECISION_I64, QUOTE_SPOT_MARKET_INDEX, SPOT_BALANCE_PRECISION,
28+
SPOT_CUMULATIVE_INTEREST_PRECISION, SPOT_IMF_PRECISION, SPOT_WEIGHT_PRECISION, THIRTEEN_DAY,
29+
TWENTY_FOUR_HOUR,
2630
};
2731
use crate::math::cp_curve::get_update_k_result;
2832
use crate::math::helpers::get_proportion_u128;
@@ -32,6 +36,7 @@ use crate::math::safe_math::SafeMath;
3236
use crate::math::spot_balance::get_token_amount;
3337
use crate::math::spot_withdraw::validate_spot_market_vault_amount;
3438
use crate::math::{amm, bn};
39+
use crate::math_error;
3540
use crate::optional_accounts::get_token_mint;
3641
use crate::state::amm_cache::{AmmCache, CacheInfo, AMM_POSITIONS_CACHE};
3742
use crate::state::events::{
@@ -77,12 +82,8 @@ use crate::validation::fee_structure::validate_fee_structure;
7782
use crate::validation::margin::{validate_margin, validate_margin_weights};
7883
use crate::validation::perp_market::validate_perp_market;
7984
use crate::validation::spot_market::validate_borrow_rate;
80-
use crate::{controller, QUOTE_PRECISION_I64};
81-
use crate::{get_then_update_id, EPOCH_DURATION};
82-
use crate::{load, FEE_ADJUSTMENT_MAX};
8385
use crate::{load_mut, PTYH_PRICE_FEED_SEED_PREFIX};
8486
use crate::{math, safe_decrement, safe_increment};
85-
use crate::{math_error, SPOT_BALANCE_PRECISION};
8687

8788
use anchor_spl::token_2022::spl_token_2022::extension::transfer_hook::TransferHook;
8889
use anchor_spl::token_2022::spl_token_2022::extension::{

programs/drift/src/instructions/if_staker.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ use crate::error::ErrorCode;
66
use crate::ids::{admin_hot_wallet, if_rebalance_wallet};
77
use crate::instructions::constraints::*;
88
use crate::instructions::optional_accounts::{load_maps, AccountMaps};
9+
use crate::load_mut;
10+
use crate::math::constants::QUOTE_SPOT_MARKET_INDEX;
911
use crate::optional_accounts::get_token_mint;
1012
use crate::state::insurance_fund_stake::{InsuranceFundStake, ProtocolIfSharesTransferConfig};
1113
use crate::state::paused_operations::InsuranceFundOperation;
@@ -23,7 +25,6 @@ use crate::{
2325
spot_market_map::get_writable_spot_market_set_from_many,
2426
},
2527
};
26-
use crate::{load_mut, QUOTE_SPOT_MARKET_INDEX};
2728
use anchor_lang::solana_program::sysvar::instructions;
2829

2930
use super::optional_accounts::get_token_interface;

0 commit comments

Comments
 (0)