From e59bef5d5dbd477ad4230d34c9bbe8766b246ed8 Mon Sep 17 00:00:00 2001 From: Chris Heaney Date: Wed, 5 Nov 2025 17:24:30 -0500 Subject: [PATCH] program: ix to reset old lp fields --- programs/drift/src/instructions/keeper.rs | 25 +++++----------- programs/drift/src/lib.rs | 6 ++-- sdk/src/idl/drift.json | 36 +++++++++++++++++++++-- 3 files changed, 44 insertions(+), 23 deletions(-) diff --git a/programs/drift/src/instructions/keeper.rs b/programs/drift/src/instructions/keeper.rs index d4308a531..51060f39e 100644 --- a/programs/drift/src/instructions/keeper.rs +++ b/programs/drift/src/instructions/keeper.rs @@ -84,7 +84,7 @@ use crate::state::spot_market_map::{ }; use crate::state::state::State; use crate::state::user::{ - MarginMode, MarketType, OrderStatus, OrderTriggerCondition, OrderType, User, UserStats, + MarginMode, MarketType, OrderTriggerCondition, OrderType, User, UserStats, }; use crate::state::user_map::{load_user_map, load_user_maps, UserMap, UserStatsMap}; use crate::state::zero_copy::AccountZeroCopyMut; @@ -616,27 +616,16 @@ pub fn handle_update_user_stats_referrer_info<'c: 'info, 'info>( #[access_control( exchange_not_paused(&ctx.accounts.state) )] -pub fn handle_update_user_open_orders_count<'info>(ctx: Context) -> Result<()> { +pub fn handle_update_user_lp_fields<'info>(ctx: Context) -> Result<()> { let mut user = load_mut!(ctx.accounts.user)?; - let mut open_orders = 0_u8; - let mut open_auctions = 0_u8; - - for order in user.orders.iter() { - if order.status == OrderStatus::Open { - open_orders += 1; - } - - if order.has_auction() { - open_auctions += 1; - } + for perp_position in user.perp_positions.iter_mut() { + perp_position.lp_shares = 0; + perp_position.last_base_asset_amount_per_lp = 0; + perp_position.last_quote_asset_amount_per_lp = 0; + perp_position.per_lp_base = 0; } - user.open_orders = open_orders; - user.has_open_order = open_orders > 0; - user.open_auctions = open_auctions; - user.has_open_auction = open_auctions > 0; - Ok(()) } diff --git a/programs/drift/src/lib.rs b/programs/drift/src/lib.rs index 2dfdf04f7..2d5c66992 100644 --- a/programs/drift/src/lib.rs +++ b/programs/drift/src/lib.rs @@ -524,9 +524,9 @@ pub mod drift { handle_update_user_stats_referrer_info(ctx) } - // pub fn update_user_open_orders_count(ctx: Context) -> Result<()> { - // handle_update_user_open_orders_count(ctx) - // } + pub fn update_update_user_lp_fields(ctx: Context) -> Result<()> { + handle_update_user_lp_fields(ctx) + } pub fn admin_disable_update_perp_bid_ask_twap( ctx: Context, diff --git a/sdk/src/idl/drift.json b/sdk/src/idl/drift.json index 0dc503f33..bacc9df02 100644 --- a/sdk/src/idl/drift.json +++ b/sdk/src/idl/drift.json @@ -2041,6 +2041,32 @@ ], "args": [] }, + { + "name": "updateUpdateUserLpFields", + "accounts": [ + { + "name": "state", + "isMut": false, + "isSigner": false + }, + { + "name": "authority", + "isMut": false, + "isSigner": true + }, + { + "name": "filler", + "isMut": true, + "isSigner": false + }, + { + "name": "user", + "isMut": true, + "isSigner": false + } + ], + "args": [] + }, { "name": "adminDisableUpdatePerpBidAskTwap", "accounts": [ @@ -15434,6 +15460,9 @@ }, { "name": "AmmImmediateFill" + }, + { + "name": "SettleRevPool" } ] } @@ -19565,5 +19594,8 @@ "name": "MarketIndexNotFoundAmmCache", "msg": "MarketIndexNotFoundAmmCache" } - ] -} + ], + "metadata": { + "address": "dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH" + } +} \ No newline at end of file