From 0ad89d17be02f0b586df4f1532c9901377dc059d Mon Sep 17 00:00:00 2001 From: MicaiahReid Date: Thu, 25 Sep 2025 14:36:44 -0400 Subject: [PATCH] fix(core): default to token_program_id from token account type if not found --- crates/core/src/surfnet/locker.rs | 6 +++--- crates/core/src/types.rs | 7 +++++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/crates/core/src/surfnet/locker.rs b/crates/core/src/surfnet/locker.rs index 9f79df5a..564c7c79 100644 --- a/crates/core/src/surfnet/locker.rs +++ b/crates/core/src/surfnet/locker.rs @@ -954,11 +954,11 @@ impl SurfnetSvmLocker { let token_programs = token_accounts_before .iter() - .map(|(i, _)| { + .map(|(i, ta)| { svm_reader .get_account(&transaction_accounts[*i]) - .unwrap() - .owner + .map(|a| a.owner) + .unwrap_or(ta.token_program_id()) }) .collect::>() .clone(); diff --git a/crates/core/src/types.rs b/crates/core/src/types.rs index fe9fc550..6c5cf02c 100644 --- a/crates/core/src/types.rs +++ b/crates/core/src/types.rs @@ -564,6 +564,13 @@ pub enum TokenAccount { } impl TokenAccount { + pub fn token_program_id(&self) -> Pubkey { + match self { + Self::SplToken2022(_) => spl_token_2022::id(), + Self::SplToken(_) => spl_token::id(), + } + } + pub fn unpack(bytes: &[u8]) -> SurfpoolResult { if let Ok(account) = spl_token_2022::state::Account::unpack(bytes) { Ok(Self::SplToken2022(account))