From b4ac52b69b8e7d62b493677b36786a5b90411060 Mon Sep 17 00:00:00 2001 From: Harit Kapadia Date: Fri, 15 Aug 2025 10:51:15 -0400 Subject: [PATCH 1/2] fix(sdk-coin-sol): set correct jito activate instruction indexes Ticket: SC-2760 --- modules/sdk-coin-sol/src/lib/constants.ts | 2 +- .../test/unit/transactionBuilder/stakingActivateBuilder.ts | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/modules/sdk-coin-sol/src/lib/constants.ts b/modules/sdk-coin-sol/src/lib/constants.ts index d13b8ab955..8e2d15675e 100644 --- a/modules/sdk-coin-sol/src/lib/constants.ts +++ b/modules/sdk-coin-sol/src/lib/constants.ts @@ -115,7 +115,7 @@ export const marinadeStakingActivateInstructionsIndexes = { /** Const to check the order of the Jito Staking Activate instructions when decode */ export const jitoStakingActivateInstructionsIndexes = { - AtaInit: 0, + InitializeAssociatedTokenAccount: 0, DepositSol: 1, } as const; diff --git a/modules/sdk-coin-sol/test/unit/transactionBuilder/stakingActivateBuilder.ts b/modules/sdk-coin-sol/test/unit/transactionBuilder/stakingActivateBuilder.ts index acdd3ca03e..9fad81d207 100644 --- a/modules/sdk-coin-sol/test/unit/transactionBuilder/stakingActivateBuilder.ts +++ b/modules/sdk-coin-sol/test/unit/transactionBuilder/stakingActivateBuilder.ts @@ -156,10 +156,9 @@ describe('Sol Staking Activate Builder', () => { const rawTx = tx.toBroadcastFormat(); should.equal(Utils.isValidRawTransaction(rawTx), true); should.equal(rawTx, testData.JITO_STAKING_ACTIVATE_SIGNED_TX); - factory.from(testData.JITO_STAKING_ACTIVATE_SIGNED_TX); - const coin = coins.get('tsol'); - const tx2 = new Transaction(coin); - tx2.fromRawTransaction(rawTx); + const builderFromRawTx = factory.from(rawTx); + const rebuiltTx = await builderFromRawTx.build(); + rebuiltTx.toJson().instructionsData.should.deepEqual(txJson.instructionsData); }); it('build a create and delegate staking signed tx with memo', async () => { From 3e113c00cb5bbe2d99d30c113871bd752f0ae749 Mon Sep 17 00:00:00 2001 From: Harit Kapadia Date: Fri, 15 Aug 2025 11:05:30 -0400 Subject: [PATCH 2/2] fix(sdk-coin-sol): check array bounds for transaction type matching Ticket: SC-2760 --- modules/sdk-coin-sol/src/lib/utils.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/modules/sdk-coin-sol/src/lib/utils.ts b/modules/sdk-coin-sol/src/lib/utils.ts index 644607bb98..cace39b475 100644 --- a/modules/sdk-coin-sol/src/lib/utils.ts +++ b/modules/sdk-coin-sol/src/lib/utils.ts @@ -282,7 +282,11 @@ export function matchTransactionTypeByInstructionsOrder( // Check instructions by order using the index. for (const keyName of instructionsKeys) { - const result = getInstructionType(instructionsCopy[instructionIndexes[keyName]]); + const index = instructionIndexes[keyName]; + if (index >= instructionsCopy.length) { + return false; + } + const result = getInstructionType(instructionsCopy[index]); if (result !== keyName) { return false; }