From 1177054802798afa5ca837c07206f71d5a6a76dd Mon Sep 17 00:00:00 2001 From: Chris Heaney Date: Wed, 2 Apr 2025 14:24:51 -0400 Subject: [PATCH] program: blocks for update_pool_id --- programs/drift/src/instructions/user.rs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/programs/drift/src/instructions/user.rs b/programs/drift/src/instructions/user.rs index 9ae0b462b..05dc77f6f 100644 --- a/programs/drift/src/instructions/user.rs +++ b/programs/drift/src/instructions/user.rs @@ -3128,6 +3128,31 @@ pub fn handle_update_user_pool_id<'c: 'info, 'info>( )?; let mut user = load_mut!(ctx.accounts.user)?; + + validate!( + user.pool_id == 0, + ErrorCode::DefaultError, + "user must be pool_id 0" + )?; + + validate!( + user.total_deposits == 0, + ErrorCode::DefaultError, + "user must be total_deposits 0" + )?; + + validate!( + user.total_withdraws == 0, + ErrorCode::DefaultError, + "user must be total_withdraws 0" + )?; + + validate!( + user.settled_perp_pnl == 0, + ErrorCode::DefaultError, + "user must be settled_perp_pnl 0" + )?; + user.pool_id = pool_id; // will throw if user has deposits/positions in other pools