# Table of Contents - [What is Squads Protocol | Development | Squads Docs](#what-is-squads-protocol-development-squads-docs) - [What is SquadsX | SquadsX Beta (Development) | Squads Docs](#what-is-squadsx-squadsx-beta-development-squads-docs) - [Understanding the SquadsX Extension Wallet | SquadsX Beta (Development) | Squads Docs](#understanding-the-squadsx-extension-wallet-squadsx-beta-development-squads-docs) - [Overcoming Integration Obstacles | SquadsX Beta (Development) | Squads Docs](#overcoming-integration-obstacles-squadsx-beta-development-squads-docs) - [Not Using Wallet Standard Adapter | SquadsX Beta (Development) | Squads Docs](#not-using-wallet-standard-adapter-squadsx-beta-development-squads-docs) - [Ephemeral Signers | SquadsX Beta (Development) | Squads Docs](#ephemeral-signers-squadsx-beta-development-squads-docs) - [UI Feedback and Delayed Execution | SquadsX Beta (Development) | Squads Docs](#ui-feedback-and-delayed-execution-squadsx-beta-development-squads-docs) - [Large Transaction Problem | SquadsX Beta (Development) | Squads Docs](#large-transaction-problem-squadsx-beta-development-squads-docs) - [Mandatory Sign-In with Off-chain Message Signing | SquadsX Beta (Development) | Squads Docs](#mandatory-sign-in-with-off-chain-message-signing-squadsx-beta-development-squads-docs) - [Security Audits | Security | Squads Docs](#security-audits-security-squads-docs) - [How secure is Squads | Security | Squads Docs](#how-secure-is-squads-security-squads-docs) - [Squads Protocol v3 | Security | Squads Docs](#squads-protocol-v3-security-squads-docs) - [Formal Verifications | Security | Squads Docs](#formal-verifications-security-squads-docs) - [Squads Protocol v4 | Security | Squads Docs](#squads-protocol-v4-security-squads-docs) - [Squads Protocol v3 | Security | Squads Docs](#squads-protocol-v3-security-squads-docs) - [Squads Protocol v4 | Security | Squads Docs](#squads-protocol-v4-security-squads-docs) - [Bug bounty | Security | Squads Docs](#bug-bounty-security-squads-docs) - [Instructions | Development | Squads Docs](#instructions-development-squads-docs) - [Use Cases | Development | Squads Docs](#use-cases-development-squads-docs) - [Quickstart | Development | Squads Docs](#quickstart-development-squads-docs) - [Multisig | Development | Squads Docs](#multisig-development-squads-docs) - [Accounts | Development | Squads Docs](#accounts-development-squads-docs) - [Vault | Development | Squads Docs](#vault-development-squads-docs) - [Create Multisig | Development | Squads Docs](#create-multisig-development-squads-docs) - [Overview | Development | Squads Docs](#overview-development-squads-docs) - [Reject Proposal | Development | Squads Docs](#reject-proposal-development-squads-docs) - [Controlled Multisig Instructions | Development | Squads Docs](#controlled-multisig-instructions-development-squads-docs) - [Controlled Multisigs | Development | Squads Docs](#controlled-multisigs-development-squads-docs) - [Batch | Development | Squads Docs](#batch-development-squads-docs) - [Transactions | Development | Squads Docs](#transactions-development-squads-docs) - [Close Vault Transaction Account | Development | Squads Docs](#close-vault-transaction-account-development-squads-docs) - [SDKs | Development | Squads Docs](#sdks-development-squads-docs) - [Create Config Transaction | Development | Squads Docs](#create-config-transaction-development-squads-docs) - [Approve Proposal | Development | Squads Docs](#approve-proposal-development-squads-docs) - [Time-locks | Development | Squads Docs](#time-locks-development-squads-docs) - [Permissions | Development | Squads Docs](#permissions-development-squads-docs) - [Add To Batch | Development | Squads Docs](#add-to-batch-development-squads-docs) - [Remove Spending Limit | Development | Squads Docs](#remove-spending-limit-development-squads-docs) - [Spending Limits | Development | Squads Docs](#spending-limits-development-squads-docs) - [Create Proposal | Development | Squads Docs](#create-proposal-development-squads-docs) - [We're here to help | Development | Squads Docs](#we-re-here-to-help-development-squads-docs) - [Installation | Development | Squads Docs](#installation-development-squads-docs) - [Cancel Proposal | Development | Squads Docs](#cancel-proposal-development-squads-docs) - [Vault Check | Development | Squads Docs](#vault-check-development-squads-docs) - [Execute Config Transaction | Development | Squads Docs](#execute-config-transaction-development-squads-docs) - [Add spending limit | Development | Squads Docs](#add-spending-limit-development-squads-docs) - [Execute Vault Transaction | Development | Squads Docs](#execute-vault-transaction-development-squads-docs) - [Create Batch | Development | Squads Docs](#create-batch-development-squads-docs) - [Proposal | Development | Squads Docs](#proposal-development-squads-docs) - [Accounts | Development | Squads Docs](#accounts-development-squads-docs) - [Create Vault Transaction | Development | Squads Docs](#create-vault-transaction-development-squads-docs) - [Add Member | Development | Squads Docs](#add-member-development-squads-docs) - [Remove Member | Development | Squads Docs](#remove-member-development-squads-docs) - [Squads Actions and Blinks | Development | Squads Docs](#squads-actions-and-blinks-development-squads-docs) - [Migrating from MultisigCreate v1 to v2 | Development | Squads Docs](#migrating-from-multisigcreate-v1-to-v2-development-squads-docs) - [Set Rent Collector | Development | Squads Docs](#set-rent-collector-development-squads-docs) - [Developers | Squads Legacy (v3) | Squads Docs](#developers-squads-legacy-v3-squads-docs) - [Activating a Transaction | Squads Legacy (v3) | Squads Docs](#activating-a-transaction-squads-legacy-v3-squads-docs) - [Swap | Squads Legacy (v3) | Squads Docs](#swap-squads-legacy-v3-squads-docs) - [Owners and Settings | Squads Legacy (v3) | Squads Docs](#owners-and-settings-squads-legacy-v3-squads-docs) - [Staking | Squads Legacy (v3) | Squads Docs](#staking-squads-legacy-v3-squads-docs) - [Tensor | Squads Legacy (v3) | Squads Docs](#tensor-squads-legacy-v3-squads-docs) - [Bonfida | Squads Legacy (v3) | Squads Docs](#bonfida-squads-legacy-v3-squads-docs) - [Transactions | Squads Legacy (v3) | Squads Docs](#transactions-squads-legacy-v3-squads-docs) - [Create a Squad | Squads Legacy (v3) | Squads Docs](#create-a-squad-squads-legacy-v3-squads-docs) - [What's a Squad? | Squads Legacy (v3) | Squads Docs](#what-s-a-squad-squads-legacy-v3-squads-docs) - [General | Squads Legacy (v3) | Squads Docs](#general-squads-legacy-v3-squads-docs) - [Creators | Squads Legacy (v3) | Squads Docs](#creators-squads-legacy-v3-squads-docs) - [Apps | Squads Legacy (v3) | Squads Docs](#apps-squads-legacy-v3-squads-docs) - [Dialect | Squads Legacy (v3) | Squads Docs](#dialect-squads-legacy-v3-squads-docs) - [Costs of using Squads | Squads Legacy (v3) | Squads Docs](#costs-of-using-squads-squads-legacy-v3-squads-docs) - [Dashboard | Squads Legacy (v3) | Squads Docs](#dashboard-squads-legacy-v3-squads-docs) - [Authorities | Squads Legacy (v3) | Squads Docs](#authorities-squads-legacy-v3-squads-docs) - [PDAs | Squads Legacy (v3) | Squads Docs](#pdas-squads-legacy-v3-squads-docs) - [Transactions | Squads Legacy (v3) | Squads Docs](#transactions-squads-legacy-v3-squads-docs) - [Coinflow | Squads Legacy (v3) | Squads Docs](#coinflow-squads-legacy-v3-squads-docs) - [Token Manager | Squads Legacy (v3) | Squads Docs](#token-manager-squads-legacy-v3-squads-docs) - [Loading the Program | Squads Legacy (v3) | Squads Docs](#loading-the-program-squads-legacy-v3-squads-docs) - [Stakewiz | Squads Legacy (v3) | Squads Docs](#stakewiz-squads-legacy-v3-squads-docs) - [Derivation | Squads Legacy (v3) | Squads Docs](#derivation-squads-legacy-v3-squads-docs) - [Executing | Squads Legacy (v3) | Squads Docs](#executing-squads-legacy-v3-squads-docs) - [Create a Multisig | Squads Legacy (v3) | Squads Docs](#create-a-multisig-squads-legacy-v3-squads-docs) - [Anchor IDL | Squads Legacy (v3) | Squads Docs](#anchor-idl-squads-legacy-v3-squads-docs) - [Vault | Squads Legacy (v3) | Squads Docs](#vault-squads-legacy-v3-squads-docs) - [Multisig | Squads Legacy (v3) | Squads Docs](#multisig-squads-legacy-v3-squads-docs) - [Instruction | Squads Legacy (v3) | Squads Docs](#instruction-squads-legacy-v3-squads-docs) - [Validators | Squads Legacy (v3) | Squads Docs](#validators-squads-legacy-v3-squads-docs) - [Transaction | Squads Legacy (v3) | Squads Docs](#transaction-squads-legacy-v3-squads-docs) - [SDK | Squads Legacy (v3) | Squads Docs](#sdk-squads-legacy-v3-squads-docs) - [SolBlaze | Squads Legacy (v3) | Squads Docs](#solblaze-squads-legacy-v3-squads-docs) - [Approve / Reject a Transaction | Squads Legacy (v3) | Squads Docs](#approve-reject-a-transaction-squads-legacy-v3-squads-docs) - [Create a Transaction | Squads Legacy (v3) | Squads Docs](#create-a-transaction-squads-legacy-v3-squads-docs) - [What is a multisig | Squads Docs](#what-is-a-multisig-squads-docs) - [Adding Instructions | Squads Legacy (v3) | Squads Docs](#adding-instructions-squads-legacy-v3-squads-docs) - [JitoSOL | Squads Legacy (v3) | Squads Docs](#jitosol-squads-legacy-v3-squads-docs) - [Marinade | Squads Legacy (v3) | Squads Docs](#marinade-squads-legacy-v3-squads-docs) - [Welcome to Squads Multisig | Squads Docs](#welcome-to-squads-multisig-squads-docs) - [Rent Reclaim | Squads Docs](#rent-reclaim-squads-docs) - [Who we are - Squads Labs | Squads Docs](#who-we-are-squads-labs-squads-docs) - [Fee Relayer | Squads Docs](#fee-relayer-squads-docs) - [TX Builder | Squads Legacy (v3) | Squads Docs](#tx-builder-squads-legacy-v3-squads-docs) - [Priority fees | Squads Docs](#priority-fees-squads-docs) - [Manage Members | Squads Docs](#manage-members-squads-docs) - [Lido | Squads Legacy (v3) | Squads Docs](#lido-squads-legacy-v3-squads-docs) - [Contacts | Squads Docs](#contacts-squads-docs) - [Programs | Squads Legacy (v3) | Squads Docs](#programs-squads-legacy-v3-squads-docs) - [Batch actions | Squads Docs](#batch-actions-squads-docs) - [Limit Orders | Squads Docs](#limit-orders-squads-docs) - [On and Off-Ramp | Squads Docs](#on-and-off-ramp-squads-docs) - [Swaps | Squads Docs](#swaps-squads-docs) - [Trade | Squads Docs](#trade-squads-docs) - [Coin List Filter | Squads Docs](#coin-list-filter-squads-docs) - [Privacy | Squads Docs](#privacy-squads-docs) - [Security | Squads Docs](#security-squads-docs) - [Sub-accounts | Squads Docs](#sub-accounts-squads-docs) - [Permissions | Squads Docs](#permissions-squads-docs) - [Treasury | Squads Docs](#treasury-squads-docs) - [Airdrop Checker | Squads Docs](#airdrop-checker-squads-docs) - [Create a Squad | Squads Docs](#create-a-squad-squads-docs) - [Payments | Squads Docs](#payments-squads-docs) - [Sphere | Squads Docs](#sphere-squads-docs) - [Direct Staking | Squads Docs](#direct-staking-squads-docs) - [Reporting and Accounting | Squads Docs](#reporting-and-accounting-squads-docs) - [Stake | Squads Docs](#stake-squads-docs) - [Commands | Development | Squads Docs](#commands-development-squads-docs) - [Key aspects of using a multisig | Squads Docs](#key-aspects-of-using-a-multisig-squads-docs) - [Sending assets to/from centralized exchange (CEXs) | Squads Docs](#sending-assets-to-from-centralized-exchange-cexs-squads-docs) - [Developers assets | Squads Docs](#developers-assets-squads-docs) - [Staking with Squads | Squads Docs](#staking-with-squads-squads-docs) - [Members | Squads Docs](#members-squads-docs) - [Marinade Native | Squads Docs](#marinade-native-squads-docs) - [Virtual US Bank Account | Squads Docs](#virtual-us-bank-account-squads-docs) - [Spending Limits | Squads Docs](#spending-limits-squads-docs) - [Integral | Squads Docs](#integral-squads-docs) - [Costs of using Squads | Squads Docs](#costs-of-using-squads-squads-docs) - [Request Finance | Squads Docs](#request-finance-squads-docs) - [Time Locks | Squads Docs](#time-locks-squads-docs) - [SquadsX | Squads Docs](#squadsx-squads-docs) - [What if the Squads app goes down | Squads Docs](#what-if-the-squads-app-goes-down-squads-docs) - [SNS | Squads Docs](#sns-squads-docs) - [Range | Squads Docs](#range-squads-docs) - [Squads on Mobile | Squads Docs](#squads-on-mobile-squads-docs) - [Dashboard | Squads Docs](#dashboard-squads-docs) - [Pricing | Squads Docs](#pricing-squads-docs) - [Integrated apps | Squads Docs](#integrated-apps-squads-docs) - [Transactions | Squads Docs](#transactions-squads-docs) - [Bridge Off-Ramp | Squads Docs](#bridge-off-ramp-squads-docs) - [Transaction Builder | Squads Docs](#transaction-builder-squads-docs) - [Coinflow Off-ramp | Squads Docs](#coinflow-off-ramp-squads-docs) - [TipLink | Squads Docs](#tiplink-squads-docs) - [Third-Party Payouts | Squads Docs](#third-party-payouts-squads-docs) - [FAQs | Squads Docs](#faqs-squads-docs) - [Manage assets | Squads Docs](#manage-assets-squads-docs) - [Safe | Squads Docs](#safe-squads-docs) - [Settings | Squads Docs](#settings-squads-docs) - [Validators | Squads Docs](#validators-squads-docs) - [Advanced Security Best Practices | Squads Docs](#advanced-security-best-practices-squads-docs) - [Start using SquadsX | Squads Docs](#start-using-squadsx-squads-docs) - [Compatible Apps | Squads Docs](#compatible-apps-squads-docs) - [Quickstart Guide | Squads Docs](#quickstart-guide-squads-docs) - [Liquid Staking | Squads Docs](#liquid-staking-squads-docs) - [Token Manager | Squads Docs](#token-manager-squads-docs) - [Programs | Squads Docs](#programs-squads-docs) - [Treasury Management Overview | Squads Docs](#treasury-management-overview-squads-docs) - [Email Protection | Cloudflare](#email-protection-cloudflare) --- # What is Squads Protocol | Development | Squads Docs ![Page cover](https://docs.squads.so/main/~gitbook/image?url=https%3A%2F%2F2000527778-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FN3uSSG0wf4ItEAVWx2hY%252Fuploads%252FZLmIMLB5MuaJDHQmgWER%252Fsquads-protocol-solana-account-abstraction-smart-contract-wallet-infrastructure-multisig-solana-svm-multi-signature-tokenized-assets-squads-solana.png%3Falt%3Dmedia%26token%3D19994c12-eafe-42f5-8665-0cc4bd60b9b0&width=1248&dpr=4&quality=100&sign=3dbdb386&sv=2) Squads Protocol is a collection of programs on the Solana blockchain that implements smart contract-level account abstraction and acts as the perfect foundation for building products that will help onboard the next billion users into crypto. It secures $10+ billion in value and the leading product built on top of it, the Squads platform, is trusted and used by over 250 teams in the ecosystem, such as Jupiter, Pyth, Raydium, Marginfi, Backpack, Drift, Helius, Kamino, Jito, Tensor, Helium and many others. Squads Protocol is a collection of programs (smart contracts) that enables developers to use smart account technology to build novel asset management and self-custody solutions. Since its launch in 2021, Squads Protocol has become Solana's smart account standard - securing $10+ billion in value for leading teams, applications, and institutions. We are trusted and used by over 250 teams in the ecosystem, such as Jupiter, Pyth, Raydium, Marginfi, Backpack, Drift, Helius, Kamino, Jito, Tensor, Helium, and many others. Due to its permissionless nature, developers can seamlessly integrate Squads Protocol's programs into their own applications, enabling enhanced features that leverage multi-signature functionality and Solana's account abstraction capabilities. These features include spending limits, sub-accounts, time locks, and more. To start your journey into interacting with Squads Protocol and the v4 program, you can read our [Quickstart](https://docs.squads.so/main/development/introduction/quickstart) guide. It will walk you through creating a complete workflow using the Squads Typescript SDK in just 10 minutes. For more specific instructions, head to the [Overview](https://docs.squads.so/main/development/typescript/overview) page. [NextUse Cases](https://docs.squads.so/main/development/introduction/use-cases) Last updated 1 year ago --- # What is SquadsX | SquadsX Beta (Development) | Squads Docs SquadsX is a web-extension wallet powered by Squads Protocol and its v4 program. It enables users to safely engage with Solana applications through their Squad. This simplifies the creation of multisig transactions, allowing users to interact with applications as they would with conventional wallets. This documentation provides a developer reference for using and integrating with SquadsX. ### [](https://docs.squads.so/main/squadsx-beta-development#why-squadsx-matters) Why SquadsX Matters Think of SquadsX as the next big step in the evolution of self-custody - it's convenient, secure, and forgiving. It's a significant addition to the primary Squads product. This web-extension wallet can potentially unlock access to the value managed by numerous active Squads for many existing Solana products. We believe that improvements in the wallet-app compatibility could scale up opportunities for the entire ecosystem. [NextUnderstanding the SquadsX Extension Wallet](https://docs.squads.so/main/squadsx-beta-development/understanding-the-squadsx-extension-wallet) Last updated 2 years ago --- # Understanding the SquadsX Extension Wallet | SquadsX Beta (Development) | Squads Docs Technically, SquadsX is a Wallet Standard-compliant browser extension wallet. It holds the private key of a Squad member, which it uses for signing transactions. While linked to applications, SquadsX communicates the Squads Multisig Vault PDA as the active address. The transaction signing process occurs behind the scenes as follows: 1. The application creates an original transaction (OT) that uses the Vault as the "signer" address. 2. SquadsX disassembles the OT, crafting a new Multisig Transaction (MT) from the OT's instructions. Essentially, the MT is a transaction that saves the instructions on-chain, allowing for later execution upon multisig member approval. 3. SquadsX uses the member's private key to sign the MT, returning a signed MT that "wraps" the OT back to the application. 4. The application submits the signed MT to an RPC node, creating a new Squads Multisig Transaction account on-chain. 5. With the completion of the app-side process, an asynchronous voting procedure starts, usually conducted in the Squads app or an alternative user interface. 6. Once the Squads Multisig Transaction receives approval, the transaction execution commences within the Squads app, implementing the instructions contained within the OT via one or more CPI calls "signed" by the Vault PDA. [PreviousWhat is SquadsX](https://docs.squads.so/main/squadsx-beta-development) [NextOvercoming Integration Obstacles](https://docs.squads.so/main/squadsx-beta-development/guides/overcoming-integration-obstacles) Last updated 2 years ago --- # Overcoming Integration Obstacles | SquadsX Beta (Development) | Squads Docs Off the bat, SquadsX might already be perfectly integrated with your app, assuming it supports the Wallet Standard and embodies certain characteristics, which we will discuss in detail later. Nevertheless, Smart Wallets are relatively new players in the Solana space. Multisig Transactions deviate from standard transactions, demanding multiple green lights before execution. Thus, the creation and execution of a transaction becomes an asynchronous multi-step process. To ensure full compatibility with SquadsX and similar Smart Wallets that utilize the "delayed transaction execution" strategy, app developers might need to occasionally contemplate specific measures. With this in mind, we're joining forces with leading Solana products to smooth out any existing rough edges. Here are the common issues we've stumbled upon during SquadsX's testing phase, and the recommended solutions for each: 1. [Not using the Wallet Standard adapter](https://docs.squads.so/main/squadsx-beta-development/guides/overcoming-integration-obstacles/not-using-wallet-standard-adapter) 2. [Ephemeral Signers](https://docs.squads.so/main/squadsx-beta-development/guides/overcoming-integration-obstacles/ephemeral-signers) 3. [Large transaction problem](https://docs.squads.so/main/squadsx-beta-development/guides/overcoming-integration-obstacles/large-transaction-problem) 4. [UI feedback and delayed execution](https://docs.squads.so/main/squadsx-beta-development/guides/overcoming-integration-obstacles/ui-feedback-and-delayed-execution) 5. [Mandatory Sign-In with off-chain message signing](https://docs.squads.so/main/squadsx-beta-development/guides/overcoming-integration-obstacles/mandatory-sign-in-with-off-chain-message-signing) [PreviousUnderstanding the SquadsX Extension Wallet](https://docs.squads.so/main/squadsx-beta-development/understanding-the-squadsx-extension-wallet) [NextNot Using Wallet Standard Adapter](https://docs.squads.so/main/squadsx-beta-development/guides/overcoming-integration-obstacles/not-using-wallet-standard-adapter) Last updated 2 years ago --- # Not Using Wallet Standard Adapter | SquadsX Beta (Development) | Squads Docs **TLDR:** Update your Wallet Adapter package to the latest version that supports the Wallet Standard. **Problem** The Wallet Standard is a protocol and a collection of interfaces that allows apps to automatically detect the wallets installed by the user. SquadsX implements Wallet Standard and should be recognized by most of the apps already. That said, not every app uses the latest Wallet Adapter version that supports Wallet Standard. **Solution** If your app doesn't detect an installed SquadsX extension, make sure to update the [Wallet Adapter](https://github.com/solana-labs/wallet-adapter) package to the latest version. [PreviousOvercoming Integration Obstacles](https://docs.squads.so/main/squadsx-beta-development/guides/overcoming-integration-obstacles) [NextEphemeral Signers](https://docs.squads.so/main/squadsx-beta-development/guides/overcoming-integration-obstacles/ephemeral-signers) Last updated 2 years ago --- # Ephemeral Signers | SquadsX Beta (Development) | Squads Docs **TLDR:** Avoid Ephemeral Signers in your transactions if possible. If not, prefer `SystemProgram.createAccountWithSeed` to `SystemProgram.createAccount`. If that doesn't work either use the `getEphemeralSigners` API exposed by SquadsX via the Wallet Standard interface. **Problem** Ephemeral Signer (ES) is a key that is expected to sign the transaction and be discarded right after. An example of when such ephemeral signers are needed is the `SystemProgram.createAccount` instruction. This instruction requires the new account to be a signer to verify that whoever calls this instruction actually holds authority over this account. The `Keypair.generate()` method is typically used by app developers to create ephemeral signers, but this mechanism doesn't work with Smart Wallets that don't execute the transaction immediately. In these cases, the ephemeral keypair will not be available to sign the "execute" transaction because it has already been lost and forgotten. **Solution 1** Quite often you can avoid Ephemeral Signers completely by using `SystemProgram.createAccountWithSeed` instead of `SystemProgram.createAccount`. The difference between the two is that the latter requires the new account's signature, whereas the former doesn't because the new account is "controlled" by the `basePubkey` which most likely is your primary singer anyway. For example, here's how you can do this in a transaction that typically requires an Ephemeral Signer: wrapping SOL via an auxiliary token account. Copy // Generate a random seed. const seed = Keypair.generate().publicKey.toBase58().slice(0, 32); // Calculate a publicKey that will be controlled by the walletPubkey. const auxAccountPubkey = await PublicKey.createWithSeed( walletPubkey, seed, TOKEN_PROGRAM_ID ); // Create token account. // Using `createAccountWithSeed` allows us to avoid the second signer, // because this instruction requires signing only from `basePubkey`. const createAccountIx = SystemProgram.createAccountWithSeed({ fromPubkey: walletPubkey, basePubkey: walletPubkey, seed, newAccountPubkey: auxAccountPubkey, lamports: (await getMinimumBalanceForRentExemptAccount(connection)) + amount, space: ACCOUNT_SIZE, programId: TOKEN_PROGRAM_ID, });// Some code **Solution 2** If the Solution 1 doesn't fit your needs, and you absolutely need a second signer in your transaction, we got you covered too. SquadsX exposes the `getEphemeralSigners` API that allows apps to request any number of ephemeral signers from the wallet. The wallet returns an array of account addresses that the app developer can use in their transactions. The API is exposed via the Wallet Standard feature detection mechanism and can be used as follows. Copy import { useWallet } from "@solana/wallet-adapter-react"; const { wallet } = useWallet() // ...