From 1c5d8169208be9e8b709cf18a455062a3befb373 Mon Sep 17 00:00:00 2001 From: Philip Zudemberg Date: Fri, 9 Jan 2026 14:22:26 +0100 Subject: [PATCH 1/3] feat: support versioned solana txs --- .../src/providers/misc/solana-connector.ts | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/packages/widget/src/providers/misc/solana-connector.ts b/packages/widget/src/providers/misc/solana-connector.ts index 7b0fb31a..ddfe1596 100644 --- a/packages/widget/src/providers/misc/solana-connector.ts +++ b/packages/widget/src/providers/misc/solana-connector.ts @@ -1,6 +1,10 @@ import type { Wallet } from "@solana/wallet-adapter-react"; import { WalletConnectWalletAdapter } from "@solana/wallet-adapter-wallets"; -import { type Connection, Transaction } from "@solana/web3.js"; +import { + type Connection, + Transaction, + VersionedTransaction, +} from "@solana/web3.js"; import { MiscNetworks } from "@stakekit/common"; import type { Chain, @@ -38,7 +42,20 @@ const createSolanaConnector = ({ type: solanaWallet.adapter.name, showQrModal: false, sendTransaction: async (tx) => { - const solanaTx = Transaction.from(Buffer.from(tx, "hex")); + const base64Decoded = Buffer.from(tx, "base64"); + const isBase64 = base64Decoded.toString("base64") === tx; + + const buffer = isBase64 + ? base64Decoded + : Buffer.from(tx, "hex"); + + let solanaTx: Transaction | VersionedTransaction; + try { + solanaTx = VersionedTransaction.deserialize(buffer); + } catch { + solanaTx = Transaction.from(buffer); + } + const signed = await solanaWallet.adapter.sendTransaction( solanaTx, connection From e72ab23728d0452663e649b82f92613fac4f896f Mon Sep 17 00:00:00 2001 From: Philip Zudemberg Date: Fri, 9 Jan 2026 15:46:39 +0100 Subject: [PATCH 2/3] fix: comment --- .../widget/src/providers/misc/solana-connector.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/widget/src/providers/misc/solana-connector.ts b/packages/widget/src/providers/misc/solana-connector.ts index ddfe1596..c7c5da6c 100644 --- a/packages/widget/src/providers/misc/solana-connector.ts +++ b/packages/widget/src/providers/misc/solana-connector.ts @@ -50,10 +50,18 @@ const createSolanaConnector = ({ : Buffer.from(tx, "hex"); let solanaTx: Transaction | VersionedTransaction; + let versionedError: unknown; try { solanaTx = VersionedTransaction.deserialize(buffer); - } catch { - solanaTx = Transaction.from(buffer); + } catch (err) { + versionedError = err; + try { + solanaTx = Transaction.from(buffer); + } catch (legacyErr) { + throw new Error( + `Failed to deserialize Solana transaction. VersionedTransaction error: ${versionedError instanceof Error ? versionedError.message : String(versionedError)}. Legacy Transaction error: ${legacyErr instanceof Error ? legacyErr.message : String(legacyErr)}` + ); + } } const signed = await solanaWallet.adapter.sendTransaction( From 7bbd18c87059b54da38706d71975d70036793592 Mon Sep 17 00:00:00 2001 From: Philip Zudemberg Date: Fri, 9 Jan 2026 15:49:10 +0100 Subject: [PATCH 3/3] fix: format --- packages/widget/src/providers/misc/solana-connector.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/widget/src/providers/misc/solana-connector.ts b/packages/widget/src/providers/misc/solana-connector.ts index c7c5da6c..4a9982ec 100644 --- a/packages/widget/src/providers/misc/solana-connector.ts +++ b/packages/widget/src/providers/misc/solana-connector.ts @@ -45,9 +45,7 @@ const createSolanaConnector = ({ const base64Decoded = Buffer.from(tx, "base64"); const isBase64 = base64Decoded.toString("base64") === tx; - const buffer = isBase64 - ? base64Decoded - : Buffer.from(tx, "hex"); + const buffer = isBase64 ? base64Decoded : Buffer.from(tx, "hex"); let solanaTx: Transaction | VersionedTransaction; let versionedError: unknown;