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