Multisig wallets with Squads
Create and operate Solana multisig vaults with member permissions, proposal approvals and on-chain execution.
Use @tetherto/wdk-wallet-multisig-squads to create a Squads multisig, propose vault payments, collect member votes and execute approved proposals on Solana. This documentation covers 1.0.0-beta.2.
A multisig has three distinct addresses: its configuration account, the vault that holds assets, and each member's signer account. Fund the intended vault for payments and the member for transaction fees and rent.
| Task | Start here |
|---|---|
| Connect a member to an existing multisig | Get started |
| Create a multisig and locate its vault | Deploy a multisig |
| Propose, approve and execute a payment | Manage proposals |
| Change members, permissions and threshold | Manage owners |
| Collect approvals into one transaction | Coordinate approvals |
Integration Requirements
- A Solana RPC endpoint for the intended cluster, with the configured Squads program deployed. URL lists support failover.
- An existing multisig address or its create key. Deploying a new multisig additionally requires the create key's secret.
- A seed-derived member with the permissions needed for the operation: initiate, vote or execute.
- Native funds for member-paid fees and account rent, plus vault funds for the payment payload. Classic SPL token transfers are supported; Token-2022 transfers and balances are not supported by beta.2.
A provider can be omitted for address derivation, but operations that read or write the cluster require one. The module does not bundle an RPC service or an approval-coordination backend.
Proposal and Transaction Status
Creating or approving a proposal can submit an on-chain transaction while the proposal stays pending. A transaction.hash therefore does not mean the vault payment executed. Inspect proposal state, then check the submitted transaction's receipt and success. A coordinator can collect a partial approval without submitting anything; that result has transaction: undefined. No on-chain transaction has been broadcast for that partial approval.
Use proposal APIs for payments. Direct sendTransaction(), signTransaction(), quoteSendTransaction() and multisig verify() are unsupported. Member sign() signs as an individual member, not as the multisig.