@solana/transaction-messages 4.0.0-canary-20251008101046 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -628,7 +628,10 @@ function findAddressInLookupTables(address, role, addressesByLookupTableAddress)
628
628
  }
629
629
  }
630
630
  function compressTransactionMessageUsingAddressLookupTables(transactionMessage, addressesByLookupTableAddress) {
631
- const lookupTableAddresses = new Set(Object.values(addressesByLookupTableAddress).flatMap((a) => a));
631
+ const programAddresses = new Set(transactionMessage.instructions.map((ix) => ix.programAddress));
632
+ const eligibleLookupAddresses = new Set(
633
+ Object.values(addressesByLookupTableAddress).flatMap((a) => a).filter((address) => !programAddresses.has(address))
634
+ );
632
635
  const newInstructions = [];
633
636
  let updatedAnyInstructions = false;
634
637
  for (const instruction of transactionMessage.instructions) {
@@ -639,7 +642,7 @@ function compressTransactionMessageUsingAddressLookupTables(transactionMessage,
639
642
  const newAccounts = [];
640
643
  let updatedAnyAccounts = false;
641
644
  for (const account of instruction.accounts) {
642
- if ("lookupTableAddress" in account || !lookupTableAddresses.has(account.address) || instructions.isSignerRole(account.role)) {
645
+ if ("lookupTableAddress" in account || !eligibleLookupAddresses.has(account.address) || instructions.isSignerRole(account.role)) {
643
646
  newAccounts.push(account);
644
647
  continue;
645
648
  }