Skip to main content
There are four functions to sign and send transactions with Solana:
  • signAndSendTransaction: Sign and send a single transaction
  • signAndSendSponsoredTransaction: Sign and send a sponsored (gasless) transaction
  • signTransaction: Sign a transaction
  • signAllTransactions: Sign multiple transactions

Usage

import {
  signAndSendTransaction,
  signAndSendSponsoredTransaction,
  signTransaction,
  signAllTransactions,
} from '@dynamic-labs-sdk/solana';

const sendTransaction = async (walletAccount, transaction) => {
  const { signature } = await signAndSendTransaction({ transaction, walletAccount });
  console.log('Transaction sent successfully.', signature);
};

const sendSponsoredTransaction = async (walletAccount, transaction) => {
  const { signature } = await signAndSendSponsoredTransaction({ transaction, walletAccount });
  console.log('Sponsored transaction sent successfully.', signature);
};

const signTx = async (walletAccount, transaction) => {
  const { signedTransaction } = await signTransaction({ transaction, walletAccount });
  console.log('Transaction signed successfully.', signedTransaction);
};

const signTransactions = async (walletAccount, transactions) => {
  const { signedTransactions } = await signAllTransactions({ transactions, walletAccount });
  console.log('Transactions signed successfully.', signedTransactions);
};
signAndSendSponsoredTransaction sponsors the transaction via Dynamic’s gas sponsorship API before signing and sending. This is only available for embedded (WaaS) wallets and requires SVM Gas Sponsorship to be enabled in the dashboard. See SVM Gas Sponsorship for details.

Error Handling

  • If the specified wallet account is not a SolanaWalletAccount, it will throw a NotSolanaProviderError error.
  • If the specified wallet account is not available for signing (e.g. wallet is an external wallet and the specific account is not the active one in the wallet app, or not connected to your app), it will throw a WalletAccountNotSelectedError error, stating what is the expected account address to be used, and the active account address in the wallet app (if available).
  • If signAndSendSponsoredTransaction is called on a wallet that does not support sponsorship (e.g. an external wallet), it will throw a SponsorTransactionError.