From 32a40433b2b861e5346babdeb5ffa68d794f36b8f7b2843b061c2b43deed0081 Mon Sep 17 00:00:00 2001 From: Minimons Date: Thu, 25 Jun 2026 15:16:00 +0200 Subject: [PATCH] 13: Add check for correct Perps program --- ...AnchorIdlJupiterPerpsPositionServiceImpl.tjava | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/tjava/com/r35157/libs/jupiter/perps/impl/anchoridl/AnchorIdlJupiterPerpsPositionServiceImpl.tjava b/src/main/tjava/com/r35157/libs/jupiter/perps/impl/anchoridl/AnchorIdlJupiterPerpsPositionServiceImpl.tjava index f01b8e5..79d4cbf 100644 --- a/src/main/tjava/com/r35157/libs/jupiter/perps/impl/anchoridl/AnchorIdlJupiterPerpsPositionServiceImpl.tjava +++ b/src/main/tjava/com/r35157/libs/jupiter/perps/impl/anchoridl/AnchorIdlJupiterPerpsPositionServiceImpl.tjava @@ -9,9 +9,6 @@ import java.io.IOException; public class AnchorIdlJupiterPerpsPositionServiceImpl implements JupiterPerpsPositionService { - private final SolanaBlockChain solanaBlockChain; - private final AnchorIdlJupiterPerpsPositionDecoder positionDecoder; - public AnchorIdlJupiterPerpsPositionServiceImpl( SolanaBlockChain solanaBlockChain ) { @@ -28,7 +25,19 @@ public class AnchorIdlJupiterPerpsPositionServiceImpl implements JupiterPerpsPos throw new IllegalArgumentException("Jupiter Perps position account does not exist: " + positionAccount); } + if (!JUPITER_PERPS_PROGRAM_ID.equals(accountInfo.owner())) { + throw new IllegalArgumentException( + "Account is not owned by Jupiter Perps program: " + positionAccount + ); + } + JupiterPerpsPosition pos = positionDecoder.decode(positionAccount, accountInfo); return pos; } + + private static final ΩJupiterPerpsProgramIdΩ JUPITER_PERPS_PROGRAM_ID = + "PERPHjGBqRHArX4DySjwM6UJHiR3sWAatqfdBS2qQJu"; + + private final SolanaBlockChain solanaBlockChain; + private final AnchorIdlJupiterPerpsPositionDecoder positionDecoder; } \ No newline at end of file