Squads Docs
Development
Development
  • Introduction
    • What is Squads Protocol
    • Use Cases
    • Quickstart
  • Typescript
    • Overview
    • Instructions
      • Create Multisig
      • Create Config Transaction
      • Create Vault Transaction
      • Create Proposal
      • Approve Proposal
      • Reject Proposal
      • Cancel Proposal
      • Execute Config Transaction
      • Execute Vault Transaction
      • Create Batch
      • Add To Batch
      • Close Vault Transaction Account
      • Controlled Multisig Instructions
        • Add Member
        • Remove Member
        • Set Rent Collector
        • Add spending limit
        • Remove Spending Limit
    • Accounts
      • Multisig
      • Vault
      • Transactions
      • Proposal
      • Batch
  • Reference
    • Accounts
    • Permissions
    • Spending Limits
    • Time-locks
    • SDKs
    • Controlled Multisigs
  • API
    • Vault Check
  • CLI
    • Installation
    • Commands
  • Get Support
    • We're here to help
  • Other
    • Migrating from MultisigCreate v1 to v2
    • Squads Actions and Blinks
Powered by GitBook
On this page
  • 1. Supported wallets
  • 2. Commands
  • Config Transaction Create
  • Config Transaction Execute
  • Multisig Create
  • Proposal Vote
  • Vault Transaction Accounts Close
  • Vault Transaction Create
  • Vault Transaction Execute
  1. CLI

Commands

The following is an overview of commands available to interact with the Squads V4 program via CLI.

Overview

  1. Supported wallets

  2. Commands

    • Create config transaction

    • Execute config transaction

    • Create multisig

    • Vote on proposals

    • Reclaim Vault Transaction rent

    • Create new Vault Transaction

    • Execute Vault Transaction

1. Supported wallets

The Squads CLI has exactly the same wallet support as the Solana CLI, meaning it supports file system wallets as well as Ledger hardware wallets.

File system wallets

You can easily use your local filesystem wallet by using it as the "keypair" argument in commands.

squads-multisig-cli example-command --keypair /path/to/keypair.json

This specifies the path of the Keypair that you want to use to sign a CLI transaction.

Ledger support

To use a Ledger with the Squads CLI, just specify the Ledger device URL in the "keypair" argument.

squads-multisig-cli example-command --keypair usb://ledger

This will use the default derivation path of your Ledger.

squads-multisig-cli example-command --keypair usb://ledger/BsNsvfXqQTtJnagwFWdBS7FBXgnsK8VZ5CmuznN85swK?key=0/0

2. Commands

Config Transaction Create

Description

Creates a new configuration proposal transaction for a specific action.

Syntax

config-transaction-create --rpc-url <RPC_URL> --program-id <PROGRAM_ID> --keypair <KEYPAIR_PATH> --multisig-pubkey <MULTISIG_PUBLIC_KEY> --action <ACTION> [--memo <MEMO>]

Parameters

  • --rpc-url <RPC_URL>: (Optional) The URL of the Solana RPC endpoint. Defaults to mainnet if not specified.

  • --program-id <PROGRAM_ID>: (Optional) The ID of the multisig program. Defaults to a standard ID if not specified.

  • --keypair <KEYPAIR_PATH>: Path to your keypair file.

  • --multisig-pubkey <MULTISIG_PUBLIC_KEY>: The public key of the multisig account.

  • --action <ACTION>: The action to execute. Format depends on the action type.

  • --memo <MEMO>: (Optional) A memo for the transaction.

Examples

  1. Add a New Member:

    config-transaction-create --keypair /path/to/keypair.json --multisig-pubkey <MULTISIG_PUBLIC_KEY> --action "AddMember <NEW_MEMBER_PUBLIC_KEY> <PERMISSIONS>"

    Adds a new member to the multisig configuration with specified permissions. Permissions: 1: Initiate only 7: All permissions (Initiate, Approve, Execute)

  2. Remove a Member:

    config-transaction-create --keypair /path/to/keypair.json --multisig-pubkey <MULTISIG_PUBLIC_KEY> --action "RemoveMember <MEMBER_PUBLIC_KEY>"

    Removes an existing member from the multisig configuration.

  3. Change Threshold:

    config-transaction-create --keypair /path/to/keypair.json --multisig-pubkey <MULTISIG_PUBLIC_KEY> --action "ChangeThreshold <NEW_THRESHOLD>"

    Changes the threshold number of signatures required for executing multisig transactions.

  4. Set Time Lock:

    config-transaction-create --keypair /path/to/keypair.json --multisig-pubkey <MULTISIG_PUBLIC_KEY> --action "SetTimeLock <TIME_LOCK_VALUE>"

    Sets a time lock for the multisig account.

  5. Add Spending Limit:

    config-transaction-create --keypair /path/to/keypair.json --multisig-pubkey <MULTISIG_PUBLIC_KEY> --action "AddSpendingLimit <CREATE_KEY> <VAULT_INDEX> <MINT> <AMOUNT> <PERIOD> <MEMBERS> <DESTINATIONS>"

    Adds a spending limit to the multisig account.

  6. Remove Spending Limit:

    config-transaction-create --keypair /path/to/keypair.json --multisig-pubkey <MULTISIG_PUBLIC_KEY> --action "RemoveSpendingLimit <SPENDING_LIMIT_PUBKEY>"

    Removes an existing spending limit from the multisig account.

  7. Set Rent Collector:

    config-transaction-create --keypair /path/to/keypair.json --multisig-pubkey <MULTISIG_PUBLIC_KEY> --action "SetRentCollector <NEW_RENT_COLLECTOR_PUBKEY>"

    Sets a new rent collector for the multisig account.

Config Transaction Execute

Description

Executes a proposed transaction for a multisig configuration change. This command is used to execute configuration transactions once they have reached threshold.

Syntax

config-transaction-execute --rpc-url <RPC_URL> --program-id <PROGRAM_ID> --keypair <KEYPAIR_PATH> --multisig-pubkey <MULTISIG_PUBLIC_KEY> --transaction-index <TRANSACTION_INDEX>

Parameters

  • --rpc-url <RPC_URL>: (Optional) The URL of the Solana RPC endpoint. Defaults to mainnet if not specified.

  • --program-id <PROGRAM_ID>: (Optional) The ID of the multisig program. Defaults to a standard ID if not specified.

  • --keypair <KEYPAIR_PATH>: Path to your keypair file.

  • --multisig-pubkey <MULTISIG_PUBLIC_KEY>: The public key of the multisig account.

  • --transaction-index <TRANSACTION_INDEX>: The index of the transaction to be executed.

Example Usage

config-transaction-execute --keypair /path/to/keypair.json --multisig-pubkey <MULTISIG_PUBLIC_KEY> --transaction-index 1

Multisig Create

Description

Creates a new multisig with initial members and threshold configuration.

Syntax

multisig-create --rpc-url <RPC_URL> --program-id <PROGRAM_ID> --keypair <KEYPAIR_PATH> --config-authority <CONFIG_AUTHORITY> --members <MEMBER_1> <MEMBER_2> ... --threshold <THRESHOLD>

Parameters

  • --rpc-url <RPC_URL>: (Optional) The URL of the Solana RPC endpoint. Defaults to mainnet if not specified.

  • --program-id <PROGRAM_ID>: (Optional) The ID of the multisig program. Defaults to a standard ID if not specified.

  • --keypair <KEYPAIR_PATH>: Path to your keypair file.

  • --config-authority <CONFIG_AUTHORITY>: (Optional) Address of the Program Config Authority.

  • --members <MEMBER_...>: List of members' public keys, separated by spaces.

  • --threshold <THRESHOLD>: The threshold number of signatures required for executing multisig transactions.

Notes

  • Stacking permissions for a single member requires adding up the permission mappings. For example, a member with full permissions (Proposer, Voter, Executor) would use a value of 7.

  • The permission types map to the following:

    • Proposer - 1

    • Voter - 2

    • Executor - 4

    • All of the above - 7

Example Usage

  1. Creating a Multisig with Two Members:

    multisig-create --keypair /path/to/keypair.json --members "Member1PubKey,Permission1" "Member2PubKey,Permission2" --threshold 2

    Creates a new multisig account with two members and a threshold of 2.

  2. Creating a Multisig with Config Authority:

    multisig-create --keypair /path/to/keypair.json --config-authority <CONFIG_AUTHORITY_PUBKEY> --members "Member1PubKey,Permission1" "Member2PubKey,Permission2" --threshold 1

    Initializes a multisig account with a specified config authority and a threshold of 1.

Proposal Vote

Description

Casts a vote on a proposed transaction proposal. This command allows a member of a multisig to approve, reject, or cancel a transaction proposal.

Syntax

proposal-vote --rpc-url <RPC_URL> --program-id <PROGRAM_ID> --keypair <KEYPAIR_PATH> --multisig-pubkey <MULTISIG_PUBLIC_KEY> --transaction-index <TRANSACTION_INDEX> --action <ACTION> [--memo <MEMO>]

Parameters

  • --rpc-url <RPC_URL>: (Optional) The URL of the Solana RPC endpoint. Defaults to mainnet if not specified.

  • --program-id <PROGRAM_ID>: (Optional) The ID of the multisig program. Defaults to a standard ID if not specified.

  • --keypair <KEYPAIR_PATH>: Path to your keypair file.

  • --multisig-pubkey <MULTISIG_PUBLIC_KEY>: The public key of the multisig account.

  • --transaction-index <TRANSACTION_INDEX>: The index of the transaction to vote on.

  • --action <ACTION>: The vote action to cast (Approve, Reject, Cancel).

  • --memo <MEMO>: (Optional) A memo for the vote.

Example Usage

  1. Approving a Transaction:

    proposal-vote --keypair /path/to/keypair.json --multisig-pubkey <MULTISIG_PUBLIC_KEY> --transaction-index 1 --action Approve

    Casts an approval vote for the transaction at index 1 in the specified multisig account.

  2. Rejecting a Transaction:

    proposal-vote --keypair /path/to/keypair.json --multisig-pubkey <MULTISIG_PUBLIC_KEY> --transaction-index 1 --action Reject

    Casts a rejection vote for the transaction at index 1.

  3. Cancelling a Transaction:

    proposal-vote --keypair /path/to/keypair.json --multisig-pubkey <MULTISIG_PUBLIC_KEY> --transaction-index 1 --action Cancel

    Cancels the transaction at index 1 in the multisig account.

Vault Transaction Accounts Close

Description

Closes the proposal and transaction accounts associated with a specific Vault Transaction. The rent will be returned to the multisigs "rent_collector".

Syntax

vault-transaction-accounts-close --rpc-url <RPC_URL> --program-id <PROGRAM_ID> --keypair <KEYPAIR_PATH> --multisig-pubkey <MULTISIG_PUBLIC_KEY> --transaction-index <TRANSACTION_INDEX> --rent-collector <RENT_COLLECTOR_PUBKEY>

Parameters

  • --rpc-url <RPC_URL>: (Optional) The URL of the Solana RPC endpoint. Defaults to mainnet if not specified.

  • --program-id <PROGRAM_ID>: (Optional) The ID of the multisig program. Defaults to a standard ID if not specified.

  • --keypair <KEYPAIR_PATH>: Path to your keypair file.

  • --multisig-pubkey <MULTISIG_PUBLIC_KEY>: The public key of the multisig account.

  • --transaction-index <TRANSACTION_INDEX>: The index of the transaction whose accounts are to be closed.

  • --rent-collector <RENT_COLLECTOR_PUBKEY>: The public key of the account responsible for collecting rent.

Example Usage

vault-transaction-accounts-close --keypair /path/to/keypair.json --multisig-pubkey <MULTISIG_PUBLIC_KEY> --transaction-index 1 --rent-collector <RENT_COLLECTOR_PUBKEY>

In this example, the command closes the transaction accounts for the transaction at index 1 in the specified multisig account and collects rent using the provided rent collector public key.

Vault Transaction Create

Description

Creates a new vault transaction with a custom transaction message.

Syntax

vault-transaction-create --rpc-url <RPC_URL> --program-id <PROGRAM_ID> --keypair <KEYPAIR_PATH> --multisig-pubkey <MULTISIG_PUBLIC_KEY> --vault-index <VAULT_INDEX> --transaction-message <TRANSACTION_MESSAGE> [--memo <MEMO>]

Parameters

  • --rpc-url <RPC_URL>: (Optional) The URL of the Solana RPC endpoint. Defaults to mainnet if not specified.

  • --program-id <PROGRAM_ID>: (Optional) The ID of the multisig program. Defaults to a standard ID if not specified.

  • --keypair <KEYPAIR_PATH>: Path to your keypair file.

  • --multisig-pubkey <MULTISIG_PUBLIC_KEY>: The public key of the multisig account.

  • --vault-index <VAULT_INDEX>: The index of the vault where the transaction is being created.

  • --transaction-message <TRANSACTION_MESSAGE>: The message or payload of the transaction.

  • --memo <MEMO>: (Optional) A memo for the transaction.

Example Usage

vault-transaction-create --keypair /path/to/keypair.json --multisig-pubkey <MULTISIG_PUBLIC_KEY> --vault-index 1 --transaction-message [1, 2, 3, 5, 5, 6, 7, 8]

In this example, a new transaction with the specified message is proposed in the multisig vault at vault index 1.

Vault Transaction Execute

Description

Executes a transaction once the proposal has reached threshold.

Syntax

vault-transaction-execute --rpc-url <RPC_URL> --program-id <PROGRAM_ID> --keypair <KEYPAIR_PATH> --multisig-pubkey <MULTISIG_PUBLIC_KEY> --transaction-index <TRANSACTION_INDEX>

Parameters

  • --rpc-url <RPC_URL>: (Optional) The URL of the Solana RPC endpoint. Defaults to mainnet if not specified.

  • --program-id <PROGRAM_ID>: (Optional) The ID of the multisig program. Defaults to a standard ID if not specified.

  • --keypair <KEYPAIR_PATH>: Path to your keypair file.

  • --multisig-pubkey <MULTISIG_PUBLIC_KEY>: The public key of the multisig account.

  • --transaction-index <TRANSACTION_INDEX>: The index of the transaction to be executed.

Example Usage

vault-transaction-execute --keypair /path/to/keypair.json --multisig-pubkey <MULTISIG_PUBLIC_KEY> --transaction-index 1

This example executes the transaction at index 1 in the specified multisig.

PreviousInstallationNextWe're here to help

Last updated 2 months ago

This specifies a custom derivation path. You can read more about it .

here