Skip to content

Commit 8fe594a

Browse files
crispheaneyharsh4786
authored andcommitted
Revert "program: new amm oracle (drift-labs#1738)"
This reverts commit 52876e5.
1 parent c7e7bec commit 8fe594a

Some content is hidden

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

44 files changed

+329
-1390
lines changed

CHANGELOG.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1010
### Features
1111

1212
- program: lp reduce only ([#1749](https://github.com/drift-labs/protocol-v2/pull/1749))
13-
- program/sdk: introduce separate oracle for vamm ([#1738](https://github.com/drift-labs/protocol-v2/pull/1738))
1413
- program: new margin mode enum ([#1765](https://github.com/drift-labs/protocol-v2/pull/1765))
1514

1615
### Fixes

programs/drift/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ no-entrypoint = []
1414
cpi = ["no-entrypoint"]
1515
mainnet-beta=[]
1616
anchor-test= []
17-
default=["mainnet-beta", "no-entrypoint"]
17+
default=["mainnet-beta"]
1818
drift-rs=[]
1919

2020
[dependencies]

programs/drift/src/controller/funding.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -188,12 +188,11 @@ pub fn update_funding_rate(
188188
if valid_funding_update {
189189
let oracle_price_data = oracle_map.get_price_data(&market.oracle_id())?;
190190
let sanitize_clamp_denominator = market.get_sanitize_clamp_denominator()?;
191-
let mut mm_oracle_price_data = market.get_mm_oracle_price_data(*oracle_price_data, slot)?;
192191

193192
let oracle_price_twap = amm::update_oracle_price_twap(
194193
&mut market.amm,
195194
now,
196-
&mut mm_oracle_price_data,
195+
oracle_price_data,
197196
Some(reserve_price),
198197
sanitize_clamp_denominator,
199198
)?;

programs/drift/src/controller/liquidation.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -203,11 +203,10 @@ pub fn liquidate_perp(
203203

204204
let mut market = perp_market_map.get_ref_mut(&market_index)?;
205205
let oracle_price_data = oracle_map.get_price_data(&market.oracle_id())?;
206-
let mut mm_oracle_price_data = market.get_mm_oracle_price_data(*oracle_price_data, slot)?;
207206

208207
update_amm_and_check_validity(
209208
&mut market,
210-
&mut mm_oracle_price_data,
209+
oracle_price_data,
211210
state,
212211
now,
213212
slot,
@@ -847,11 +846,10 @@ pub fn liquidate_perp_with_fill(
847846

848847
let mut market = perp_market_map.get_ref_mut(&market_index)?;
849848
let oracle_price_data = oracle_map.get_price_data(&market.oracle_id())?;
850-
let mut mm_oracle_price_data = market.get_mm_oracle_price_data(*oracle_price_data, slot)?;
851849

852850
update_amm_and_check_validity(
853851
&mut market,
854-
&mut mm_oracle_price_data,
852+
oracle_price_data,
855853
state,
856854
now,
857855
slot,

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

Lines changed: 11 additions & 123 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ use crate::math::constants::{
1616
use crate::math::lp::calculate_settle_lp_metrics;
1717
use crate::math::position::swap_direction_to_close_position;
1818
use crate::math::repeg;
19-
use crate::state::oracle::{MMOraclePriceData, OraclePriceData, PrelaunchOracle};
19+
use crate::state::oracle::{OraclePriceData, PrelaunchOracle};
2020
use crate::state::oracle_map::OracleMap;
2121
use crate::state::perp_market::{AMMLiquiditySplit, PerpMarket, AMM};
2222
use crate::state::perp_market_map::PerpMarketMap;
@@ -40,7 +40,6 @@ use crate::test_utils::get_hardcoded_pyth_price;
4040
use crate::QUOTE_PRECISION_I64;
4141
use anchor_lang::prelude::{AccountLoader, Clock};
4242
use anchor_lang::Owner;
43-
use solana_program::clock;
4443
use solana_program::pubkey::Pubkey;
4544
use std::str::FromStr;
4645

@@ -541,9 +540,6 @@ fn amm_pred_market_example() {
541540
delay: 1,
542541
has_sufficient_number_of_data_points: true,
543542
};
544-
let mut mm_oracle_price_data = perp_market
545-
.get_mm_oracle_price_data(oracle_price_data, clock_slot)
546-
.unwrap();
547543

548544
let (max_bids, max_asks) = calculate_market_open_bids_asks(&perp_market.amm).unwrap();
549545
perp_market.amm.curve_update_intensity = 99;
@@ -554,7 +550,7 @@ fn amm_pred_market_example() {
554550
assert_eq!(perp_market.amm.sqrt_k, 56_649_660_613_272);
555551

556552
let (optimal_peg, fee_budget, _check_lower_bound) =
557-
repeg::calculate_optimal_peg_and_budget(&perp_market, &mut mm_oracle_price_data).unwrap();
553+
repeg::calculate_optimal_peg_and_budget(&perp_market, &oracle_price_data).unwrap();
558554

559555
assert_eq!(perp_market.amm.terminal_quote_asset_reserve, 56405211622548);
560556
assert_eq!(perp_market.amm.quote_asset_reserve, 56933567973708);
@@ -585,7 +581,7 @@ fn amm_pred_market_example() {
585581

586582
let cost = _update_amm(
587583
&mut perp_market,
588-
&mut mm_oracle_price_data,
584+
&oracle_price_data,
589585
&state,
590586
now,
591587
clock_slot,
@@ -1168,12 +1164,9 @@ fn amm_perp_ref_offset() {
11681164
delay: 1,
11691165
has_sufficient_number_of_data_points: true,
11701166
};
1171-
let mut mm_oracle_price_data = perp_market
1172-
.get_mm_oracle_price_data(oracle_price_data, clock_slot)
1173-
.unwrap();
11741167
let cost = _update_amm(
11751168
&mut perp_market,
1176-
&mut mm_oracle_price_data,
1169+
&oracle_price_data,
11771170
&state,
11781171
now,
11791172
clock_slot,
@@ -1198,53 +1191,6 @@ fn amm_perp_ref_offset() {
11981191
assert_eq!(perp_market.amm.ask_base_asset_reserve, 4672813088646692);
11991192

12001193
crate::validation::perp_market::validate_perp_market(&perp_market).unwrap();
1201-
1202-
// Update MM oracle and reference price offset stays the same and is applied to the MM oracle
1203-
perp_market.amm.mm_oracle_price = 7200000;
1204-
perp_market.amm.mm_oracle_slot = clock_slot;
1205-
let mut mm_oracle_price_data = perp_market
1206-
.get_mm_oracle_price_data(oracle_price_data, clock_slot)
1207-
.unwrap();
1208-
1209-
let _ = _update_amm(
1210-
&mut perp_market,
1211-
&mut mm_oracle_price_data,
1212-
&state,
1213-
now,
1214-
clock_slot,
1215-
);
1216-
let reserve_price_mm_offset = perp_market.amm.reserve_price().unwrap();
1217-
let (b2, a2) = perp_market
1218-
.amm
1219-
.bid_ask_price(reserve_price_mm_offset)
1220-
.unwrap();
1221-
assert_eq!(perp_market.amm.reference_price_offset, 132);
1222-
assert_eq!(reserve_price_mm_offset, 7199999);
1223-
assert_eq!(b2, 7180271);
1224-
assert_eq!(a2, 7221656);
1225-
1226-
// Uses the original oracle if the slot is old, ignoring MM oracle
1227-
perp_market.amm.mm_oracle_price = 7200000;
1228-
perp_market.amm.mm_oracle_slot = clock_slot - 100;
1229-
let mut mm_oracle_price = perp_market
1230-
.get_mm_oracle_price_data(oracle_price_data, clock_slot)
1231-
.unwrap();
1232-
1233-
let _ = _update_amm(
1234-
&mut perp_market,
1235-
&mut mm_oracle_price,
1236-
&state,
1237-
now,
1238-
clock_slot,
1239-
);
1240-
let reserve_price_mm_offset_3 = perp_market.amm.reserve_price().unwrap();
1241-
let (b3, a3) = perp_market
1242-
.amm
1243-
.bid_ask_price(reserve_price_mm_offset_3)
1244-
.unwrap();
1245-
assert_eq!(reserve_price_mm_offset_3, r);
1246-
assert_eq!(b3, 7082154);
1247-
assert_eq!(a3, 7122974);
12481194
}
12491195

12501196
#[test]
@@ -1671,13 +1617,10 @@ fn amm_split_large_k_with_rebase() {
16711617
delay: 14,
16721618
has_sufficient_number_of_data_points: true,
16731619
};
1674-
let mut mm_oracle_price = perp_market
1675-
.get_mm_oracle_price_data(oracle_price_data, clock_slot)
1676-
.unwrap();
16771620

16781621
let cost = _update_amm(
16791622
&mut perp_market,
1680-
&mut mm_oracle_price,
1623+
&oracle_price_data,
16811624
&state,
16821625
now,
16831626
clock_slot,
@@ -2781,20 +2724,10 @@ fn update_amm_near_boundary() {
27812724
println!("perp_market: {:?}", perp_market.amm.last_update_slot);
27822725

27832726
let oracle_price_data = oracle_map.get_price_data(&perp_market.oracle_id()).unwrap();
2784-
let mut mm_oracle_price_data = perp_market
2785-
.get_mm_oracle_price_data(*oracle_price_data, slot)
2786-
.unwrap();
27872727

27882728
let state = State::default();
27892729

2790-
let cost = _update_amm(
2791-
&mut perp_market,
2792-
&mut mm_oracle_price_data,
2793-
&state,
2794-
now,
2795-
slot,
2796-
)
2797-
.unwrap();
2730+
let cost = _update_amm(&mut perp_market, oracle_price_data, &state, now, slot).unwrap();
27982731

27992732
assert_eq!(cost, 18803837952);
28002733
}
@@ -2833,19 +2766,10 @@ fn update_amm_near_boundary2() {
28332766
println!("perp_market: {:?}", perp_market.amm.last_update_slot);
28342767

28352768
let oracle_price_data = oracle_map.get_price_data(&perp_market.oracle_id()).unwrap();
2836-
let mut mm_oracle_price_data = perp_market
2837-
.get_mm_oracle_price_data(*oracle_price_data, slot)
2838-
.unwrap();
2769+
28392770
let state = State::default();
28402771

2841-
let cost: i128 = _update_amm(
2842-
&mut perp_market,
2843-
&mut mm_oracle_price_data,
2844-
&state,
2845-
now,
2846-
slot,
2847-
)
2848-
.unwrap();
2772+
let cost: i128 = _update_amm(&mut perp_market, oracle_price_data, &state, now, slot).unwrap();
28492773
assert!(perp_market.amm.last_oracle_valid);
28502774
assert_eq!(cost, 2987010);
28512775
}
@@ -2884,20 +2808,10 @@ fn recenter_amm_1() {
28842808
println!("perp_market: {:?}", perp_market.amm.last_update_slot);
28852809

28862810
let oracle_price_data = oracle_map.get_price_data(&perp_market.oracle_id()).unwrap();
2887-
let mut mm_oracle_price_data = perp_market
2888-
.get_mm_oracle_price_data(*oracle_price_data, slot)
2889-
.unwrap();
28902811

28912812
let state = State::default();
28922813

2893-
let cost = _update_amm(
2894-
&mut perp_market,
2895-
&mut mm_oracle_price_data,
2896-
&state,
2897-
now,
2898-
slot,
2899-
)
2900-
.unwrap();
2814+
let cost = _update_amm(&mut perp_market, oracle_price_data, &state, now, slot).unwrap();
29012815

29022816
assert_eq!(cost, 2987010);
29032817

@@ -2994,23 +2908,10 @@ fn recenter_amm_2() {
29942908
let oracle_price_data = oracle_map
29952909
.get_price_data(&(oracle_price_key, OracleSource::Pyth))
29962910
.unwrap();
2997-
let mut mm_oracle_price_data = MMOraclePriceData {
2998-
mm_oracle_price: oracle_price_data.price,
2999-
mm_oracle_delay: oracle_price_data.delay + 1,
3000-
oracle_confidence: None,
3001-
oracle_price_data: *oracle_price_data,
3002-
};
30032911

30042912
let state = State::default();
30052913

3006-
let cost = _update_amm(
3007-
&mut perp_market,
3008-
&mut mm_oracle_price_data,
3009-
&state,
3010-
now,
3011-
slot,
3012-
)
3013-
.unwrap();
2914+
let cost = _update_amm(&mut perp_market, oracle_price_data, &state, now, slot).unwrap();
30142915

30152916
assert_eq!(cost, 0);
30162917

@@ -3136,23 +3037,10 @@ fn test_move_amm() {
31363037
let oracle_price_data = oracle_map
31373038
.get_price_data(&(oracle_price_key, OracleSource::Pyth))
31383039
.unwrap();
3139-
let mut mm_oracle_price_data = MMOraclePriceData {
3140-
mm_oracle_price: oracle_price_data.price,
3141-
mm_oracle_delay: oracle_price_data.delay + 1,
3142-
oracle_confidence: None,
3143-
oracle_price_data: *oracle_price_data,
3144-
};
31453040

31463041
let state = State::default();
31473042

3148-
let cost = _update_amm(
3149-
&mut perp_market,
3150-
&mut mm_oracle_price_data,
3151-
&state,
3152-
now,
3153-
slot,
3154-
)
3155-
.unwrap();
3043+
let cost = _update_amm(&mut perp_market, oracle_price_data, &state, now, slot).unwrap();
31563044

31573045
assert_eq!(cost, 0);
31583046

0 commit comments

Comments
 (0)