Skip to content

Commit dca7093

Browse files
committed
refactor last settle ts to last settle slot
1 parent 6b5142a commit dca7093

File tree

7 files changed

+31
-29
lines changed

7 files changed

+31
-29
lines changed

programs/drift/src/instructions/admin.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1182,7 +1182,7 @@ pub fn handle_update_init_amm_cache_info<'c: 'info, 'info>(
11821182
#[derive(Debug, Clone, Copy, AnchorSerialize, AnchorDeserialize, PartialEq, Eq)]
11831183
pub struct OverrideAmmCacheParams {
11841184
pub quote_owed_from_lp_pool: Option<i64>,
1185-
pub last_settle_ts: Option<i64>,
1185+
pub last_settle_slot: Option<u64>,
11861186
pub last_fee_pool_token_amount: Option<u128>,
11871187
pub last_net_pnl_pool_token_amount: Option<i128>,
11881188
}
@@ -1204,8 +1204,8 @@ pub fn handle_override_amm_cache_info<'c: 'info, 'info>(
12041204
if let Some(quote_owed_from_lp_pool) = override_params.quote_owed_from_lp_pool {
12051205
cache_entry.quote_owed_from_lp_pool = quote_owed_from_lp_pool;
12061206
}
1207-
if let Some(last_settle_ts) = override_params.last_settle_ts {
1208-
cache_entry.last_settle_ts = last_settle_ts;
1207+
if let Some(last_settle_slot) = override_params.last_settle_slot {
1208+
cache_entry.last_settle_slot = last_settle_slot;
12091209
}
12101210
if let Some(last_fee_pool_token_amount) = override_params.last_fee_pool_token_amount {
12111211
cache_entry.last_fee_pool_token_amount = last_fee_pool_token_amount;

programs/drift/src/instructions/keeper.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3136,7 +3136,6 @@ pub fn handle_settle_perp_to_lp_pool<'c: 'info, 'info>(
31363136
use perp_lp_pool_settlement::*;
31373137

31383138
let slot = Clock::get()?.slot;
3139-
let timestamp = Clock::get()?.unix_timestamp;
31403139
let state = &ctx.accounts.state;
31413140

31423141
if !state.allow_settle_lp_pool() {
@@ -3292,7 +3291,7 @@ pub fn handle_settle_perp_to_lp_pool<'c: 'info, 'info>(
32923291
};
32933292

32943293
// Update cache info
3295-
update_cache_info(cached_info, &settlement_result, new_quote_owed, timestamp)?;
3294+
update_cache_info(cached_info, &settlement_result, new_quote_owed, slot)?;
32963295

32973296
// Update LP pool stats
32983297
match settlement_result.direction {

programs/drift/src/math/lp_pool.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,11 +157,11 @@ pub mod perp_lp_pool_settlement {
157157
cache_info: &mut CacheInfo,
158158
result: &SettlementResult,
159159
new_quote_owed: i64,
160-
timestamp: i64,
160+
slot: u64,
161161
) -> Result<()> {
162162
cache_info.quote_owed_from_lp_pool = new_quote_owed;
163163
cache_info.last_settle_amount = result.amount_transferred;
164-
cache_info.last_settle_ts = timestamp;
164+
cache_info.last_settle_slot = slot;
165165

166166
match result.direction {
167167
SettlementDirection::FromLpPool => {

programs/drift/src/state/lp_pool/tests.rs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1887,7 +1887,7 @@ mod settle_tests {
18871887
last_fee_pool_token_amount: 2_000,
18881888
last_net_pnl_pool_token_amount: 500,
18891889
last_settle_amount: 0,
1890-
last_settle_ts: 0,
1890+
last_settle_slot: 0,
18911891
..Default::default()
18921892
};
18931893

@@ -1906,7 +1906,7 @@ mod settle_tests {
19061906
assert_eq!(cache.quote_owed_from_lp_pool, new_quote_owed);
19071907
// settle fields updated
19081908
assert_eq!(cache.last_settle_amount, 200);
1909-
assert_eq!(cache.last_settle_ts, ts);
1909+
assert_eq!(cache.last_settle_slot, ts);
19101910
// fee pool decreases by fee_pool_used
19111911
assert_eq!(cache.last_fee_pool_token_amount, 2_000 - 120);
19121912
// pnl pool decreases by pnl_pool_used
@@ -1920,7 +1920,7 @@ mod settle_tests {
19201920
last_fee_pool_token_amount: 1_000,
19211921
last_net_pnl_pool_token_amount: 200,
19221922
last_settle_amount: 0,
1923-
last_settle_ts: 0,
1923+
last_settle_slot: 0,
19241924
..Default::default()
19251925
};
19261926

@@ -1939,7 +1939,7 @@ mod settle_tests {
19391939
assert_eq!(cache.quote_owed_from_lp_pool, new_quote_owed);
19401940
// settle fields updated
19411941
assert_eq!(cache.last_settle_amount, 150);
1942-
assert_eq!(cache.last_settle_ts, ts);
1942+
assert_eq!(cache.last_settle_slot, ts);
19431943
// fee pool increases by amount_transferred
19441944
assert_eq!(cache.last_fee_pool_token_amount, 1_000 + 150);
19451945
// pnl pool untouched
@@ -2063,7 +2063,7 @@ mod settle_tests {
20632063
last_fee_pool_token_amount: 1000,
20642064
last_net_pnl_pool_token_amount: 500,
20652065
last_settle_amount: 50,
2066-
last_settle_ts: 12345,
2066+
last_settle_slot: 12345,
20672067
..Default::default()
20682068
};
20692069

@@ -2082,7 +2082,7 @@ mod settle_tests {
20822082
assert_eq!(cache.quote_owed_from_lp_pool, 100);
20832083
// settle fields updated with new timestamp but zero amount
20842084
assert_eq!(cache.last_settle_amount, 0);
2085-
assert_eq!(cache.last_settle_ts, ts);
2085+
assert_eq!(cache.last_settle_slot, ts);
20862086
// pool amounts unchanged
20872087
assert_eq!(cache.last_fee_pool_token_amount, 1000);
20882088
assert_eq!(cache.last_net_pnl_pool_token_amount, 500);
@@ -2095,7 +2095,7 @@ mod settle_tests {
20952095
last_fee_pool_token_amount: u128::MAX / 2,
20962096
last_net_pnl_pool_token_amount: i128::MAX / 2,
20972097
last_settle_amount: 0,
2098-
last_settle_ts: 0,
2098+
last_settle_slot: 0,
20992099
..Default::default()
21002100
};
21012101

@@ -2106,9 +2106,9 @@ mod settle_tests {
21062106
pnl_pool_used: 0,
21072107
};
21082108
let new_quote_owed = cache.quote_owed_from_lp_pool - (result.amount_transferred as i64);
2109-
let ts = i64::MAX / 2;
2109+
let slot = u64::MAX / 2;
21102110

2111-
let update_result = update_cache_info(&mut cache, &result, new_quote_owed, ts);
2111+
let update_result = update_cache_info(&mut cache, &result, new_quote_owed, slot);
21122112
assert!(update_result.is_ok());
21132113
}
21142114

@@ -2119,7 +2119,7 @@ mod settle_tests {
21192119
last_fee_pool_token_amount: 1000,
21202120
last_net_pnl_pool_token_amount: i128::MIN / 2,
21212121
last_settle_amount: 0,
2122-
last_settle_ts: 0,
2122+
last_settle_slot: 0,
21232123
..Default::default()
21242124
};
21252125

@@ -2143,7 +2143,7 @@ mod settle_tests {
21432143
last_fee_pool_token_amount: 5000,
21442144
last_net_pnl_pool_token_amount: 3000,
21452145
last_settle_amount: 0,
2146-
last_settle_ts: 0,
2146+
last_settle_slot: 0,
21472147
..Default::default()
21482148
};
21492149

@@ -2174,7 +2174,7 @@ mod settle_tests {
21742174
assert_eq!(cache.quote_owed_from_lp_pool, 1100);
21752175
assert_eq!(cache.last_fee_pool_token_amount, 5050);
21762176
assert_eq!(cache.last_net_pnl_pool_token_amount, 2850);
2177-
assert_eq!(cache.last_settle_ts, 200);
2177+
assert_eq!(cache.last_settle_slot, 200);
21782178
}
21792179

21802180
#[test]
@@ -2281,7 +2281,7 @@ mod settle_tests {
22812281
};
22822282

22832283
update_cache_info(&mut cache, &result, 0, ts).unwrap();
2284-
assert_eq!(cache.last_settle_ts, ts);
2284+
assert_eq!(cache.last_settle_slot, ts);
22852285
assert_eq!(cache.last_settle_amount, 100);
22862286
}
22872287
}

programs/drift/src/state/perp_market.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1890,7 +1890,7 @@ pub struct CacheInfo {
18901890
pub max_confidence_interval_multiplier: u64,
18911891
pub last_oracle_price_twap: i64,
18921892
pub last_settle_amount: u64,
1893-
pub last_settle_ts: i64,
1893+
pub last_settle_slot: u64,
18941894
pub quote_owed_from_lp_pool: i64,
18951895
pub oracle_price: i64,
18961896
pub oracle_confidence: u64,
@@ -1921,7 +1921,7 @@ impl Default for CacheInfo {
19211921
last_fee_pool_token_amount: 0u128,
19221922
last_net_pnl_pool_token_amount: 0i128,
19231923
last_settle_amount: 0u64,
1924-
last_settle_ts: 0i64,
1924+
last_settle_slot: 0u64,
19251925
oracle_source: 0u8,
19261926
quote_owed_from_lp_pool: 0i64,
19271927
}
@@ -1980,12 +1980,12 @@ impl AmmCache {
19801980
impl_zero_copy_loader!(AmmCache, crate::id, AmmCacheFixed, CacheInfo);
19811981

19821982
impl<'a> AccountZeroCopy<'a, CacheInfo, AmmCacheFixed> {
1983-
pub fn check_settle_staleness(&self, now: i64, threshold_ms: i64) -> DriftResult<()> {
1983+
pub fn check_settle_staleness(&self, slot: u64, threshold_slot_diff: u64) -> DriftResult<()> {
19841984
for (i, cache_info) in self.iter().enumerate() {
19851985
if cache_info.slot == 0 {
19861986
continue;
19871987
}
1988-
if cache_info.last_settle_ts < now.saturating_sub(threshold_ms) {
1988+
if cache_info.last_settle_slot < slot.saturating_sub(threshold_slot_diff) {
19891989
msg!("AMM settle data is stale for perp market {}", i);
19901990
return Err(ErrorCode::AMMCacheStale.into());
19911991
}

sdk/src/idl/drift.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11711,9 +11711,9 @@
1171111711
}
1171211712
},
1171311713
{
11714-
"name": "lastSettleTs",
11714+
"name": "lastSettleSlot",
1171511715
"type": {
11716-
"option": "i64"
11716+
"option": "u64"
1171711717
}
1171811718
},
1171911719
{
@@ -13578,8 +13578,8 @@
1357813578
"type": "u64"
1357913579
},
1358013580
{
13581-
"name": "lastSettleTs",
13582-
"type": "i64"
13581+
"name": "lastSettleSlot",
13582+
"type": "u64"
1358313583
},
1358413584
{
1358513585
"name": "quoteOwedFromLpPool",

sdk/src/types.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1664,6 +1664,9 @@ export type LPPoolAccount = {
16641664
lastRevenueRebalanceTs: BN;
16651665
totalFeesReceived: BN;
16661666
totalFeesPaid: BN;
1667+
totalMintRedeemFeesPaid: BN;
1668+
cumulativeUsdcSentToPerpMarkets: BN;
1669+
cumulativeUsdcReceivedFromPerpMarkets: BN;
16671670
constituents: number;
16681671
};
16691672

@@ -1730,7 +1733,7 @@ export type CacheInfo = {
17301733
lastFeePoolTokenAmount: BN;
17311734
lastNetPnlPoolTokenAmount: BN;
17321735
lastSettleAmount: BN;
1733-
lastSettleTs: BN;
1736+
lastSettleSlot: BN;
17341737
quoteOwedFromLpPool: BN;
17351738
};
17361739

0 commit comments

Comments
 (0)