Skip to content

Squads Smart AccountsMulti-signer smart accounts on Solana, in Ruby

A Solace extension for the Squads Smart Account program — create smart accounts, run the full propose → vote → execute lifecycle, and manage settings and spending limits from idiomatic Ruby.

Relationship to Solace

This is an extension gem for solace, the Ruby toolkit for Solana. Solace provides four layered abstractions; this gem adds the Squads Smart Account program (SMRTzfY6DfH5ik3TKiyLFfXexV8uSG3d2UksSCYdunG) to the middle two and ships a high-level client on top:

LayerProvided byThis gem adds
Primitives — Transaction, Message, Instruction, AccountContext, CodecsSolace— (reused as-is)
Instruction builderspattern from SolaceOne builder per Squads instruction
ComposersSolace::Composers::BaseOne composer per instruction
Program clients — Solace::Programs::Basepattern from SolaceSolace::Programs::SquadsSmartAccount (PDA derivation + send-and-sign)

In short: you work in Ruby with Solace::Keypair, Solace::Connection, and the SquadsSmartAccount client; this gem handles the Squads-specific encoding, account derivation, and the smart-account governance lifecycle. See Conventions for how the three layers fit together.

What's implemented

Everything needed for normal smart-account usage — 22 of the program's 37 instructions. Each links to its operation page.

Account

Vault transaction lifecycle — move funds out of a vault through governance

Settings transactions — change the account's own configuration through governance

Authority actions — for controlled accounts (a single settings authority)

Spending limits — pre-authorized, capped spending (SOL, SPL Token, Token-2022)

Not yet implemented

AreaStatus
Address Lookup Tables (ALTs)Not supported — createTransaction / executeTransaction handle simple compiled messages only.
Ephemeral signersNot supported — ephemeral_signers is fixed at 0.
Transaction buffers (createTransactionBuffer and friends)Not implemented — large transactions can't be staged.
Batches (createBatch and friends)Not implemented.
setArchivalAuthorityAsAuthorityDeliberately skipped — the archival feature is inert in the deployed program.
Program-config admin (initializeProgramConfig, setProgramConfig*) and logEventOut of scope for normal usage.

The full instruction-by-instruction matrix lives in Reference › Instruction Coverage.

Built on Solace